Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "JDT Core/Java8"
< JDT Core
Line 1: | Line 1: | ||
− | This page summarizes the work that is being done to add Java™ 8 support into Eclipse. | + | This page summarizes the work that is being done to add Java™ 8 support into Eclipse. |
− | = Java 8 features that are complete and ready to be tested (save some very minor defects) = | + | = Java 8 features that are complete and ready to be tested (save for some very minor defects) = |
* JSR 308 - Type Annotations | * JSR 308 - Type Annotations | ||
* Meta data enhancement specification: | * Meta data enhancement specification: | ||
− | ** JEP120: Repeating annotations | + | ** JEP120: Repeating annotations |
− | ** JEP118: Runtime access to parameter names | + | ** JEP118: Runtime access to parameter names |
* JSR269 Enhancements for Pluggable Annotation Processor API and javax.lang.model APIs | * JSR269 Enhancements for Pluggable Annotation Processor API and javax.lang.model APIs | ||
− | * Code completion, code navigation, search & indexing, Reconciler support for all the above | + | * Formatter, Code completion, code navigation, search & indexing, Reconciler support for all the above |
* Basic IDE enablement (AST APIs) for all of Java 8 | * Basic IDE enablement (AST APIs) for all of Java 8 | ||
* JSR308 type annotations based null analysis (substantially complete - some open issues exist) | * JSR308 type annotations based null analysis (substantially complete - some open issues exist) | ||
* Default & static Methods in interfaces (part of JSR 335) | * 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. | * JSR 335 features are substantially in place except in the areas of overload resolution and type inference. | ||
− | |||
− | |||
<br> | <br> | ||
− | = What | + | = What work is pending ? = |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Updates are filed in the top level bug [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380190 380190 - Add support for Java SE 8]] | Updates are filed in the top level bug [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380190 380190 - Add support for Java SE 8]] | ||
Line 36: | Line 30: | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Method references | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Method references | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Default Methods | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Default Methods | ||
− | |||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Overload resolution | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Overload resolution | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Type Inference | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Type Inference | ||
|- | |- | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Grammar / Parser | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Grammar / Parser | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | |
− | + | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% " | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% " | NA | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% " | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% " | NA | ||
|- | |- | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Compiler | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Compiler | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | |
− | + | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | ||
|- | |- | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Reconciler | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Reconciler | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | |
− | + | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
|- | |- | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Error recovery | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Error recovery | ||
− | |||
! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
|- | |- | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Class file generation | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Class file generation | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | |
− | + | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
|- | |- | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Search Engine (Manoj) |
− | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | |
− | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | |
− | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | |
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
|- | |- | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Code select (Anirban) | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Code select (Anirban) | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | |
− | + | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
|- | |- | ||
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Code completion (Anirban) | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Code completion (Anirban) | ||
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | |
− | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
Line 172: | Line 109: | ||
| Not Applicable | | Not Applicable | ||
|} | |} | ||
− | |||
− | |||
= IMPORTANT NOTE = | = IMPORTANT NOTE = |
Revision as of 06:45, 21 October 2013
This page summarizes the work that is being done to add Java™ 8 support into Eclipse.
Contents
Java 8 features that are complete and ready to be tested (save for 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
- Formatter, 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.
What work is pending ?
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 | Overload resolution | Type Inference | |
---|---|---|---|---|---|
Grammar / Parser | NA | NA | |||
Compiler | |||||
Reconciler | NA | NA | |||
Error recovery | NA | NA | |||
Class file generation | NA | NA | |||
Search Engine (Manoj) | NA | NA | |||
Code select (Anirban) | NA | NA | |||
Code completion (Anirban) | NA | NA |
Done | |
Substantially complete, with open items | |
In Progress | |
|
Not Started yet |
NA | Not Applicable |
IMPORTANT NOTE
- 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 <project>/.settings/org.eclipse.jdt.core.prefs
:
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
Disclaimer
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.
If you need any help with this, please contact the JDT/Core team through either the forum or Bugzilla.