With the JDT/Core team back to being fully staffed
up and the "burden" of concurrent training/consulting/mentoring/patch
reviews for 5 engineers diminishing by the day as people are ramping up, the
JDT/Core team has made excellent progress on the two majors JSRs
for Java 8 -
In the last six weeks, we closed some sizeable
- Semantic analysis for lambda &
reference expressions - Control/Data flow analysis for lambda
& reference expressions - DOM/AST support for type annotations.
Various other projects are near completion stage and
under review and testing. There is a lot more intensely complex
& challenging work (overload resolution & type inference) that needs
to be scheduled and tackled head on - we are on it.
One major area of challenge is the *very* unfinished
state of *specification* concerning the incredibly complex part (we are almost
at a stage where only double PhDs in math & comp.sc can qualify for
Java compiler writers !) of JSR335 - Part G - Type inference. Some key sections
have only "To do" place holders in them at this point. We are in the
process of engaging with the expert group to address this particular concern.
Eclipse & git savvy eager-beaver users are welcome
to try out the branch. If you do a few points to bear in mind:
(1) Branch name is BETA_JAVA8: (2) You will have to manually configure the project
settings to be 1.8 as there is no UI support yet for configuring/setting
up a 1.8 project. (3) If you experiment with JSR335 constructs, you
will see a slew of errors from the DOM/AST converter - this converter
is not in place and can spew out class cast exceptions, NPEs etc - None
of these should matter for experimenting/playing with JSR335/JSR308 constructs. (4) No code generation support, overload resolution
support in the presence of lambdas, nested generic method calls etc - You
can't actually run any useful programs yet (5) There is no UI support - so don't expect refactorings,
quick fixes etc to work in the presence of Java 8 constructs. (6) Lastly and most importantly, this is in no shape
to be used for development (even on a Java 7 basis), only for experimental assessment
of the shape of things. As the modified source files call out - This
implementation made available for testing and evaluation purposes only.
The code is not compatible with any specification of the JCP. (7) Bug reports are welcome
I thank the entire JDT/Core for all the enthusiasm
and energy levels. I also want to call out the very active engagement from
two volunteers from the community - Stephan Herrmann who is well known to
the JDT/Core consumers for his sustained efforts on null analysis and Jesper
Moller, who has started contributing a stream of good quality patches for
various issues - some of them tricky.