Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "JDT Core/Java8"
(→What to do to set up the IDE) |
|||
(19 intermediate revisions by 5 users not shown) | |||
Line 4: | Line 4: | ||
* JSR 335 [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380188 Lambda expressions]] + [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380501 Default Methods]] | * JSR 335 [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380188 Lambda expressions]] + [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380501 Default Methods]] | ||
* JSR 308 [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380501 Type annotations]] | * JSR 308 [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380501 Type annotations]] | ||
− | * | + | * Meta data enhancement specification [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=406966 JEP118: Runtime access to parameter names]] + [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=407864 JEP120: Repeating annotations]] |
<br> | <br> | ||
+ | |||
= What needs to be done = | = What needs to be done = | ||
* TO BE FILLED | * TO BE FILLED | ||
Line 13: | Line 14: | ||
= Current status<br> = | = Current status<br> = | ||
− | 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]] |
− | JDT UI changes are tracked in [[JDT UI/Java8]] | + | JDT UI changes are tracked in [[JDT UI/Java8]] |
− | <br> | + | <br> |
{| cellspacing="0" cellpadding="5" border="1" align="center" | {| cellspacing="0" cellpadding="5" border="1" align="center" | ||
|+ '''Java 8 features''' | |+ '''Java 8 features''' | ||
|- | |- | ||
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Lambda Expressions |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Method references |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Default Methods |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Type Annotations / Receiver parameter |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Grammar / Parser |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Compiler |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Reconciler |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1) |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Error recovery |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | |
− | ! width=" | + | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Java Model (Jay) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | under investigation |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | under investigation |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | under investigation |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | no changes needed atm |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | DOM / AST |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | AST Rewrite |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Class file generation |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | July-Aug (Srikanth) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | July-Aug (Srikanth) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | In progress (Andrew) |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Formatter |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | (1) |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Indexer (Manoj) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Search (manoj) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | July-Aug-Sep |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Code select (Anirban) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
+ | ! 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=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0%" | Code completion (Anirban) |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
− | ! width=" | + | ! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" | in progress |
+ | ! 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%" | APT (Jay) | ||
+ | ! 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% yellow;" | in progress | ||
+ | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
+ | ! width="180" align="center" style="background: none repeat scroll 0% 0% | NA | ||
|} | |} | ||
+ | |||
<br> | <br> | ||
{| cellspacing="0" cellpadding="5" border="1" style="width: 300px; height: 25px;" | {| cellspacing="0" cellpadding="5" border="1" style="width: 300px; height: 25px;" | ||
|- | |- | ||
− | ! style="background: none repeat scroll 0% 0% | + | ! style="background: none repeat scroll 0% 0% green;" | |
| Done | | Done | ||
+ | |- | ||
+ | ! style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | | ||
+ | | Substantially complete, with open items | ||
+ | |- | ||
+ | ! style="background: none repeat scroll 0% 0% yellow;" | | ||
+ | | In Progress | ||
|- | |- | ||
! style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | <br> | ! style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | <br> | ||
− | | Not | + | | Not Started yet |
+ | |- | ||
+ | ! style="background: none repeat scroll 0% 0% " | NA | ||
+ | | Not Applicable | ||
|} | |} | ||
+ | |||
(1) more work needed if spec changes | (1) more work needed if spec changes | ||
Line 132: | Line 180: | ||
*Checkout the BETA_JAVA8 branch of the following git repositories: | *Checkout the BETA_JAVA8 branch of the following git repositories: | ||
− | **JDT | + | **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 | + | *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 . | *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 [[Version_Numbering#API_Baseline_in_API_Tools|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/Java8 | Ant / Java 8]]. | ||
<br> | <br> | ||
= Configure a project to use Java 8 features = | = 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 <code><project>/.settings/org.eclipse.jdt.core.prefs</code>: | |
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 | ||
org.eclipse.jdt.core.compiler.compliance=1.8 | org.eclipse.jdt.core.compiler.compliance=1.8 |
Revision as of 02:44, 13 September 2013
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
Contents
Java 8 features that are being worked on
- JSR 335 [Lambda expressions] + [Default Methods]
- JSR 308 [Type annotations]
- Meta data enhancement specification [JEP118: Runtime access to parameter names] + [JEP120: Repeating annotations]
What needs to be done
- TO BE FILLED
Current status
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 |
Compiler | (1) | (1) | (1) | (1) | ||
Reconciler | (1) | (1) | (1) | (1) | NA | NA |
Error recovery | 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 |
AST Rewrite | (1) | (1) | (1) | (1) | NA | NA |
Class file generation | July-Aug (Srikanth) | July-Aug (Srikanth) | (1) | In progress (Andrew) | NA | NA |
Formatter | (1) | (1) | (1) | (1) | NA | NA |
Indexer (Manoj) | July-Aug-Sep | July-Aug-Sep | July-Aug-Sep | July-Aug-Sep | NA | NA |
Search (manoj) | July-Aug-Sep | July-Aug-Sep | July-Aug-Sep | July-Aug-Sep | 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 |
Done | |
Substantially complete, with open items | |
In Progress | |
|
Not Started yet |
NA | Not Applicable |
(1) more work needed if spec changes
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.