This page summarizes the work that is being done to add Java™ 8 support into Eclipse. As of now JSR 335 (Lambda expressions) and JSR 308 (Type annotations) are being planned
Java 8 features that are complete and ready to be tested (save some very minor defects)
- JSR 308 - Type Annotations
- Meta data enhancement specification:
- JEP120: Repeating annotations]]
- JEP118: Runtime access to parameter names]]
- JSR269 Enhancements for Pluggable Annotation Processor API and javax.lang.model APIs
- Code completion, code navigation, search & indexing, Reconciler support for all the above
- Basic IDE enablement (AST APIs) for all of Java 8
- JSR308 type annotations based null analysis (substantially complete - some open issues exist)
- Default & static Methods in interfaces (part of JSR 335)
- JSR 335 features are substantially in place except in the areas of overload resolution and type inference.
Java 8 features that are being worked on
- JSR 335 [Lambda expressions]
What needs to be done
- TO BE FILLED
Updates are filed in the top level bug [380190 - Add support for Java SE 8]
JDT UI changes are tracked in JDT UI/Java8
|Lambda Expressions||Method references||Default Methods||Type Annotations / Receiver parameter||Overload resolution||Type Inference|
|Grammar / Parser||(1)||(1)||(1)||(1)||NA||NA|
|Java Model (Jay)||under investigation||under investigation||under investigation||no changes needed atm||NA||NA|
|DOM / AST||(1)||(1)||(1)||(1)||NA||NA|
|Class file generation||July-Aug (Srikanth)||July-Aug (Srikanth)||(1)||In progress (Andrew)||NA||NA|
|Code select (Anirban)||in progress||in progress||in progress||in progress||NA||NA|
|Code completion (Anirban)||in progress||in progress||in progress||in progress||NA||NA|
|APT (Jay)||NA||NA||NA||in progress||NA||NA|
|Substantially complete, with open items|
||Not Started yet|
(1) more work needed if spec changes
- The following lines must be added in all headers of modified files for Java™ 8 implementation:
* This is an implementation of an early-draft specification developed under the Java * Community Process (JCP) and is made available for testing and evaluation purposes * only. The code is not compatible with any specification of the JCP. *
- Use the following @since tag on all newly added members: "3.9 BETA_JAVA8"
What to do to set up the IDE
- Checkout the BETA_JAVA8 branch of the following git repositories:
- JDT Core repository - git://git.eclipse.org/gitroot/jdt/eclipse.jdt.core.git
- JDT UI repository - git://git.eclipse.org/gitroot/jdt/eclipse.jdt.ui.git
- You need to install a JDK 8 build as an installed JRE in order to run the tests using the JavaSE-1.8 Execution Environment.
- For more information on how to work with git repositories, look at http://wiki.eclipse.org/Platform-releng/Git_Workflows .
- Set R3.9 as Target Platform.
- Use R3.9 as API Baseline.
- If you are going to be running Ant builds (stand-alone or as project builders) using the 1.8 javac target, you should read the following wiki: Ant / Java 8.
Configure a project to use Java 8 features
If you have JDT UI from the BETA_JAVA8 branch, you can simply set the compliance to 1.8. Otherwise you have to manually set the following properties in
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.source=1.8
This is a work in progress. The contents of the BETA_JAVA8 branch will be updated as the changes are made to the JSR Specification.