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 2: Line 2:
  
 
= Eclipse Support for Java 8 - Release Schedule =
 
= Eclipse Support for Java 8 - Release Schedule =
* Dec 20th 2013: Early Access Release II
+
* Dec 20th 2013: Early Access Release II ('''Available''' - See below for install instructions)
** Expected features:
+
** What is new in this release ?
*** Phase I Type inference support (details of what is known NOT to work will be provided shortly)
+
*** Partial support for Java 8 type inference specification.
 
*** Overload resolution for invocations involving poly expression arguments.
 
*** Overload resolution for invocations involving poly expression arguments.
 
*** Code Completion support for all of Java 8.
 
*** Code Completion support for all of Java 8.
 
*** Code navigation/selection (F3, hover) support for all of Java 8.
 
*** Code navigation/selection (F3, hover) support for all of Java 8.
 
*** Quick assist for migrating anonymous classes to lambda expressions.
 
*** Quick assist for migrating anonymous classes to lambda expressions.
*** Syntactic error recovery for all Java 8 constructs.
+
*** Incremental build support for lambda expressions and method references.
*** Search engine support for all Java 8 constructs.
+
*** Partial support for debugging Java 8 code.
+
*** Partial support for lambda serialization.
+
 
*** Numerous bug fixes.
 
*** Numerous bug fixes.
  
* Jan 17th 2014: Early Access Release III - 60 day beta program starts.
+
* Jan 31st 2014: Early Access Release III - '''Feature completion - 45 day beta program starts'''.
 
** Targetted contents:
 
** Targetted contents:
 
*** JDT is feature complete with respect to Java 8.
 
*** JDT is feature complete with respect to Java 8.
*** Known gaps in type inference addressed.
+
*** Full support for the new type inference specification.
 
*** Java 8 Debugging support fully in place.
 
*** Java 8 Debugging support fully in place.
 
*** Lambda serialization support fully in place.
 
*** Lambda serialization support fully in place.
 +
*** Various loose ends addressed and gaps plugged in search engine, code assist, error recovery etc.
 
*** Bug fixes.
 
*** Bug fixes.
  
* Feb 17th 2014: Early Access Release IV: Project enters change control.
+
* Feb 17th 2014: Early Access Release IV: '''Release candidate 0'''
 
** Bug fixes
 
** Bug fixes
 
** Selected polish items
 
** Selected polish items
 
** Usability improvements
 
** Usability improvements
 
** Documentation updates.
 
** Documentation updates.
 +
** Project enters change control.
  
 
* Feb 24th onwards: Weekly release candidates to be posted.
 
* Feb 24th onwards: Weekly release candidates to be posted.
  
* March 18th: General availability release.
+
* March 18th: '''General availability release'''.
 
   
 
   
  
 
+
= Java 8 features ready to be tested (save for some very minor defects) =
 
+
= Java 8 features that are complete as of Early Access Release I and ready to be tested (save for some very minor defects) =
+
 
* JSR 308 - Type Annotations
 
* JSR 308 - Type Annotations
 +
* Default & static Methods in interfaces
 +
* Support for lambda expressions and method/constructor references is substantially in place except in the area of type inference, lambda serialization and varargs.
 +
* Quick assist support for migrating anonymous classes to lambda expressions.
 
* 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
* Formatter, Code completion, code navigation, search & indexing, Reconciler support for all the above
+
* Formatter, Code completion, code navigation, search & indexing, Reconciler, incremental builder support for all of Java 8
* Basic IDE enablement (AST APIs) for all of Java 8
+
* Basic IDE enablement 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)
 
* JSR 335 features are substantially in place except in the areas of overload resolution and type inference.
 
  
 
<br>
 
<br>
  
= What work is pending ? (out of date, will be updated Dec 20th 2013) =
+
= What work is pending ? =
 +
Note: 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]]
  
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]]
+
* Type Inference: Early Access Release II includes a brand new type inference engine. This is still evolving and only partially supports the new inference specification. Known gaps exist in supporting nested generic invocation contexts, certain forms of poly expressions and in particular the combination of overload resolution and type inference does not fully comply to the specification. This is actively worked on and we expect to be fully compliant by Jan 31st EAR III.
  
JDT UI changes are tracked in [[JDT UI/Java8]]
+
* Lambda Serialization support.
  
<br>
+
* Support for varargs in method references and overloaded invocations is not fully implemented.
  
{| cellspacing="0" cellpadding="5" border="1" align="center"
+
* Debugging support is still under works.
|+ '''JSR335 features'''
+
|-
+
! width="180" align="center" style="background: none repeat scroll 0% 0%" |
+
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Lambda Expressions
+
! 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%" | 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%" | 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% " | 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% 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%" | 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% | NA
+
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA
+
|-
+
! width="180" align="center" style="background: none repeat scroll 0% 0%" | Syntax 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% | 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% 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%" | 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% | 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% 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%" | 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% | NA
+
! width="180" align="center" style="background: none repeat scroll 0% 0% | NA
+
|}
+
  
<br>
+
* JSR199 maintanence work.
 +
* Various loose ends.
  
{| cellspacing="0" cellpadding="5" border="1" style="width: 300px; height: 25px;"
 
|-
 
! style="background: none repeat scroll 0% 0% green;" | &nbsp;&nbsp;
 
| Done
 
|-
 
! style="background: none repeat scroll 0% 0% rgb(206, 242, 206);" | &nbsp;&nbsp;
 
| Substantially complete, with open items
 
|-
 
! style="background: none repeat scroll 0% 0% yellow;" | &nbsp;&nbsp;
 
| In Progress
 
|-
 
! style="background: none repeat scroll 0% 0% rgb(242, 206, 206);" | <br>
 
| Not Started yet
 
|-
 
! style="background: none repeat scroll 0% 0% " | NA
 
| Not Applicable
 
|}
 
  
 
= IMPORTANT NOTE =
 
= IMPORTANT NOTE =

Revision as of 00:25, 20 December 2013

This page summarizes the work that is being done to add Java™ 8 support into Eclipse.

Eclipse Support for Java 8 - Release Schedule

  • Dec 20th 2013: Early Access Release II (Available - See below for install instructions)
    • What is new in this release ?
      • Partial support for Java 8 type inference specification.
      • Overload resolution for invocations involving poly expression arguments.
      • Code Completion support for all of Java 8.
      • Code navigation/selection (F3, hover) support for all of Java 8.
      • Quick assist for migrating anonymous classes to lambda expressions.
      • Incremental build support for lambda expressions and method references.
      • Numerous bug fixes.
  • Jan 31st 2014: Early Access Release III - Feature completion - 45 day beta program starts.
    • Targetted contents:
      • JDT is feature complete with respect to Java 8.
      • Full support for the new type inference specification.
      • Java 8 Debugging support fully in place.
      • Lambda serialization support fully in place.
      • Various loose ends addressed and gaps plugged in search engine, code assist, error recovery etc.
      • Bug fixes.
  • Feb 17th 2014: Early Access Release IV: Release candidate 0
    • Bug fixes
    • Selected polish items
    • Usability improvements
    • Documentation updates.
    • Project enters change control.
  • Feb 24th onwards: Weekly release candidates to be posted.
  • March 18th: General availability release.


Java 8 features ready to be tested (save for some very minor defects)

  • JSR 308 - Type Annotations
  • Default & static Methods in interfaces
  • Support for lambda expressions and method/constructor references is substantially in place except in the area of type inference, lambda serialization and varargs.
  • Quick assist support for migrating anonymous classes to lambda expressions.
  • 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, incremental builder support for all of Java 8
  • Basic IDE enablement for all of Java 8
  • JSR308 type annotations based null analysis (substantially complete - some open issues exist)


What work is pending ?

Note: Updates are filed in the top level bug [380190 - Add support for Java SE 8] JDT UI changes are tracked in JDT UI/Java8

  • Type Inference: Early Access Release II includes a brand new type inference engine. This is still evolving and only partially supports the new inference specification. Known gaps exist in supporting nested generic invocation contexts, certain forms of poly expressions and in particular the combination of overload resolution and type inference does not fully comply to the specification. This is actively worked on and we expect to be fully compliant by Jan 31st EAR III.
  • Lambda Serialization support.
  • Support for varargs in method references and overloaded invocations is not fully implemented.
  • Debugging support is still under works.
  • JSR199 maintanence work.
  • Various loose ends.


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 compile org.eclipse.jdt.annotation and run the tests using the JavaSE-1.8 Execution Environment.
    • Use the exact name "JavaSE-1.8" for the JRE
  • 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.


Early access binaries

Please see JDT/Eclipse Java 8 Support (BETA) for details.

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. Please use the early access builds only in a test/evaluation mode and not in the real development environment. If you need any help with this, please contact the JDT/Core team through either the forum or Bugzilla.

Back to the top