Proposal for reflect Package

(0) Rationale

The Java Reflection Framework provides an API for accessing and calling classes, methods and fields dynamically at runtime. It is widely used by Jakarta applications. Unfortunately it has various bugs, including operating differently on each JDK version.

There is a need for a consistent and accurate reflection implementation. Reflect will achieve this, following the Java specification properly. It will also include optional caching, which is essential on pre JDK1.4 JVMs. Some added-value functionality, like C# style delegates is also in-scope for discussion for inclusion in Reflect.

(1) Scope of the Package

The Reflect package shall create and maintain a package that provides an accurate and thorough reflection implementation for all JDK1.2+ versions. The package shall exclude bean-level reflection.

(1.5) Interaction With Other Packages

Reflect relies only on standard JDK 1.2 (or later) APIs for production deployment. It utilizes the JUnit unit testing framework for developing and executing unit tests, but this is of interest only to developers of the component.

No external configuration files are utilized.

(2) Initial Source of the Package

Coding was started in the Lang project, but is unsuited to remaining there. Code will be moved to Reflect.

The proposed package name for the new component is org.apache.commons.reflect.

(3) Required Jakarta-Commons Resources

(4) Initial Committers

The initial committers on the Reflect component shall be: