Nathan Beyer wrote:
Excellent document!
This can probably be split up into a couple pieces; here are some of my
thoughts.
* JLS3 bytecode support - Can the current VM load JLS3 class files? If not,
what's missing (besides the major.minor version header)? Can some features
be enabled/uplifted to allow APIs to move forward? Since generics are a
compile-time feature, can code begin using generics by just allowing the
JLS3 major.minor version? In any case, this probably breaks down into a
couple topics: generics, annotations, enums, return-value-covariance and
others.
So far, I am using the VM provided by IBM developerworks as test
environment, which seems don't support classes produced by 5.0
compatible compiler, which will throw UnsupportedClassVersionError.
Personally I don't know how much part is missing.
* Java 5 APIs [NEW] - Most of the brand-new APIs have been identified
(java.lang.management, etc) and some are already being checked in. It seems
like there's already a undocumented process here, which is to uplift and
build any APIs to the Java 5 specification and leaving out any Java
5-specific language features, like generification, enums and annotations.
I think so, using of generics, enums, etc., can be avoid temporarily
before we get VM support, and very similar binaries can be produced.
* Java 5 APIs [Generfication] - Once we can allow code with generics to be
compiled and loaded, then we could begin a phase of uplifting all of the
newly generified APIs (Collections, etc).
Not sure if it is too risky just to mimic JLS3 class file support in VM
by loosening the version check, because it may encourage the JSE 5
feature overusing, and some of which(annotation, for example) will
produce different class binaries which may make the poor VM mad.
* Java 5 APIs [Annotations] - I suspect, but could be wrong, that
Annotations support will be more difficult to implement in the VM, as there
is some runtime support. When this is available, another phase can be
initiated to uplift all of the APIs with the appropriate Annotations
(@deprecated, @override, etc).
The class data structure has been modified to contain the annotation
information, so I agree with you, this is more a VM issue, another
significant part may be the tool(APT).
I'm not too familiar with the JAPI tool, but if Stuart can get the Harmony
reports to run against the Java 5 specifications, I this would provide an
enormous boost in the arena of new Java 5 APIs. Does JAPI support JLS3
features, like generics, annotations and enum checking?
From my experience by checking the JAPI result, at least the generics
is supported pretty well.
Those are some of my thoughts at least.
BTW: JLS3 == Java Language Specification, 3rd Edition
-Nathan
There are maybe some other class library new features which requiring VM
support, the one I can bring to mind immediately is Instrumentation,
which needs VM's support of JVMTI(another big new interface!)
-----Original Message-----
From: Geir Magnusson Jr [mailto:[EMAIL PROTECTED]
Sent: Friday, March 03, 2006 9:40 AM
To: [email protected]
Subject: J2SE 5 Plan / Roadmap
We should probably start thinking about how we'll move forward. There
have been a few casual conversations, but lets start getting some things
down here.
--
Paulex Yang
China Software Development Lab
IBM