Skip to main content

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.

Jump to: navigation, search

Difference between revisions of "JDT Core/Java8"

Line 1: Line 1:
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
+
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.
= Java 8 features that are being worked on =
 
* JSR 335 [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=380188 Lambda expressions]]
 
  
 
<br>
 
<br>
  
= What needs to be done =
+
= What work is pending ? =
* TO BE FILLED
+
 
+
<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]]  
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%" | 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%" | 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;" | (1)
+
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" |
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1)
+
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" |
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1)
+
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" |
! 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="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);" | (1)
+
! 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);" | (1)
+
! 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);" | (1)
+
! 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);" | (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="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;" | (1)
+
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" |  
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1)
+
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" |
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" | (1)
+
! width="180" align="center" style="background: none repeat scroll 0% 0% green;" |  
! 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="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% 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%" | Java Model (Jay)
 
! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | under investigation
 
! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | under investigation
 
! width="180" align="center" style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | under investigation
 
! 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="180" align="center" style="background: none repeat scroll 0% 0%" | DOM / AST
 
! 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% rgb(206, 242, 206);" | (1)
 
! 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% 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="180" align="center" style="background: none repeat scroll 0% 0%" | AST Rewrite
 
! 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% rgb(206, 242, 206);" | (1)
 
! 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% 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="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);" | July-Aug (Srikanth)
+
! 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);" | July-Aug (Srikanth)
+
! 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);" | (1)
+
! 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);" | 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="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%" | Formatter
+
! 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% 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% 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% 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% 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="180" align="center" style="background: none repeat scroll 0% 0%" | Indexer (Manoj)  
+
! 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% yellow;" | July-Aug-Sep
+
! 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% 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="180" align="center" style="background: none repeat scroll 0% 0%" | Search (manoj)
+
! 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% yellow;" | July-Aug-Sep
+
! 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% 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="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;" | in progress
+
! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" |  
! 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% yellow;" |  
! 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% yellow;" |  
! 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% | 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;" | in progress
+
! width="180" align="center" style="background: none repeat scroll 0% 0% yellow;" |  
! 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% yellow;" |  
! 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% yellow;" |  
! 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
 
! 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
 
|}
 
|}
 
(1) more work needed if spec changes
 
  
 
= 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.

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


Java 8 features
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

  • 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.
  • 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.

Back to the top