A proposed enhancement to the JVM (and therefore JDK) to improve runtime performance. The most visible axes of this proposal are value types and generics specialization; in particular, the latter would allow to declare a List
The URL of the project is here.
This project is still a work in progress. Numerous resources on the Internet already exist to highlight the potential benefits this project would bring to the JVM.
Value types, in particular, would allow for "simple" object instances to do away with what is called their "object identity"; indeed, even a bare-bones Object
in Java brings along with it some metadata (its identity) which, in most case, will not be used (consider that each instance is usable as a monitor; see synchronized
); this project would allow to leave this identity behind where it is not needed. As of yet, it is unclear how this should be done technically, but candidate implementations already exist (see link above).
Generics specialization would mean that a List<int>
would be a possible type declaration in the future. Historically though, Java has had type erasure, but this feature means that the compiler, in the future, will not be able to content itself with only verifying bounds checking of generics: it will have to be able to correctly generate code for specialized versions of classes whose type arguments are primitives, if such versions exist at all -- all the while maintaining backwards compatibility.