Skip to content

Latest commit

 

History

History
200 lines (160 loc) · 19.6 KB

FEATURES.md

File metadata and controls

200 lines (160 loc) · 19.6 KB

Features

This page describes the changes introduced within each version.

Language-related changes should normally have a validator, used in conjunction with the grammar, as part of the parsing process.

Where a change is not a language-related change (e.g. JVM and garbage collection changes), this is marked as "Not Applicable (NA)".

JDK 1.0 - January 1996

Source: https://en.wikipedia.org/wiki/Java_version_history#JDK_1.0

JDK 1.1 - February 1997

Source: https://en.wikipedia.org/wiki/Java_version_history#JDK_1.1

JDK 1.2 - December 1998

Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_1.2

JDK 1.3 - May 2000

Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_1.3

JDK 1.4 - February 2002

Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_1.4

JDK 5 - September 2004

Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_5.0

JDK 6 - December 2006

Source: https://en.wikipedia.org/wiki/Java_version_history#Java_SE_6

JDK 7 - July 2011

Source: https://en.wikipedia.org/wiki/Java_version_history#Java_SE_7

JDK 8 - March 2014

Source: https://en.wikipedia.org/wiki/Java_version_history#Java_SE_8

  • JSR 335, JEP 126: Language-level support for lambda expressions (officially, lambda expressions; unofficially, closures) under Project Lambda and default methods (virtual extension methods) which allow the addition of methods to interfaces without breaking existing implementations. There was an ongoing debate in the Java community on whether to add support for lambda expressions. Sun later declared that lambda expressions would be included in Java and asked for community input to refine the feature. Supporting lambda expressions also enables functional-style operations on streams of elements, such as MapReduce-inspired transformations on collections. Default methods allow an author of an API to add new methods to an interface without breaking the old code using it. Although it was not their primary intent, default methods also allow multiple inheritance of behavior (but not state).
  • JSR 223, JEP 174: Project Nashorn, a JavaScript runtime which allows developers to embed JavaScript code within applications
  • JSR 308, JEP 104: Annotation on Java types, Unsigned integer arithmetic
  • JSR 337, JEP 120: Repeating annotations
  • JSR 310, JEP 150: Date and time API
  • JEP 178: Statically-linked JNI libraries
  • JEP 153: Launch JavaFX applications (direct launching of JavaFX application JARs)
  • JEP 122: Remove the permanent generation

JDK 9 - September 2017

Source: https://en.wikipedia.org/wiki/Java_version_history#Java_SE_9

  • JSR 376: Modularization of the JDK under Project Jigsaw (Java Platform Module System)
  • JEP 222: JShell: The Java Shell (a Java REPL)
  • JEP 295: Ahead-of-time compilation
  • JEP 268: XML catalogs
  • JEP 266: More concurrency updates. It includes a Java implementation of Reactive Streams, including a new Flow class that included the interfaces previously provided by Reactive Streams
  • JEP 193: Variable handles: define a standard means to invoke the equivalents of various java.util.concurrent.atomic and sun.misc.Unsafe operations
  • JEP 282: jlink: The Java Linker: create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image. It effectively allows to produce a fully usable executable including the JVM to run it. JavaDB was removed from JDK
  • JEP 263: HiDPI graphics: automatic scaling and sizing
  • JEP 254: Compact Strings
  • JEP 213: Milling Project Coin

JDK 10 - March 2018

Source: https://openjdk.java.net/projects/jdk/10/

Java 10 support complete on 25/Feb/2018

JEP Status JavaParser Since Description
JEP 286 Release Supported Since: v3.5.15
Released on: 25/Feb/2018
Local-Variable Type Inference
JEP 296 Release Not Applicable (NA) Consolidate the JDK Forest into a Single Repository
JEP 304 Release Not Applicable (NA) Garbage-Collector Interface
JEP 307 Release Not Applicable (NA) Parallel Full GC for G1
JEP 310 Release Not Applicable (NA) Application Class-Data Sharing
JEP 312 Release Not Applicable (NA) Thread-Local Handshakes
JEP 313 Release Not Applicable (NA) Remove the Native-Header Generation Tool (javah)
JEP 314 Release Not Applicable (NA) Additional Unicode Language-Tag Extensions
JEP 316 Release Not Applicable (NA) Heap Allocation on Alternative Memory Devices
JEP 317 Experimental Not Applicable (NA) Experimental Java-Based JIT Compiler
JEP 319 Release Not Applicable (NA) Root Certificates
JEP 322 Release Not Applicable (NA) Time-Based Release Versioning

JDK 11 - September 2018

Source: https://openjdk.java.net/projects/jdk/11/

Java 11 support complete on 19/Aug/2018

JEP Status JavaParser Since Description
JEP 323 Release Supported Since: v3.xx.yy
Released on: dd/mmm/yyyy
Local-Variable Syntax for Lambda Parameters
JEP 327 Release Discussion Needed JEP327 Unicode 10
JEP 181 Release Discussion Needed JEP181 Nest-Based Access Control
JEP 309 Release Not Applicable (NA) Dynamic Class-File Constants
JEP 315 Release Not Applicable (NA) Improve Aarch64 Intrinsics
JEP 318 Release Not Applicable (NA) Epsilon: A No-Op Garbage Collector
JEP 320 Release Not Applicable (NA) JEP320 Remove the Java EE and CORBA Modules
JEP 321 Release Not Applicable (NA) HTTP Client (Standard)
JEP 324 Release Not Applicable (NA) Key Agreement with Curve25519 and Curve448
JEP 328 Release Not Applicable (NA) Flight Recorder
JEP 329 Release Not Applicable (NA) ChaCha20 and Poly1305 Cryptographic Algorithms
JEP 330 Release Not Applicable (NA) Launch Single-File Source-Code Programs
JEP 331 Release Not Applicable (NA) Low-Overhead Heap Profiling
JEP 332 Release Not Applicable (NA) Transport Layer Security (TLS) 1.3
JEP 333 Experimental Not Applicable (NA) ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
JEP 335 Release Not Applicable (NA) Deprecate the Nashorn JavaScript Engine
JEP 336 Release Not Applicable (NA) Deprecate the Pack200 Tools and API
Footnotes:
  • JEP181 - Based on a cursory reading of this JEP, it is unclear if this is a change that affects JavaParser. Comments/discussion on this are welcomed.
  • JEP327 - Based on a cursory reading of this JEP, it is unclear if this is a change that affects JavaParser. Comments/discussion on this are welcomed.
  • JEP320 - JEP 320 is marked as NA. This is because JavaParser does not make use of classes within these packages, and any users of JavaParser will need to provide the relevant files in order to do parsing/solving (e.g. as source files, a jar, or via reflection).

JDK 12 - March 2019

Source: https://openjdk.java.net/projects/jdk/12/

Parsing support for Java 12 (including preview features) complete on 03/Feb/2019

Resolution support for Java 12 complete on ??/??/2019

JEP Status JavaParser Since Description
JEP 325 Preview Supported Since: v3.11.0
Released on: 03/Feb/2019
Switch Expressions (Preview)
JEP 189 Experimental Not Applicable (NA) Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
JEP 230 Release Not Applicable (NA) Microbenchmark Suite
JEP 334 Release Not Applicable (NA) JVM Constants API
JEP 340 Release Not Applicable (NA) One AArch64 Port, Not Two
JEP 341 Release Not Applicable (NA) Default CDS Archives
JEP 344 Release Not Applicable (NA) Abortable Mixed Collections for G1
JEP 346 Release Not Applicable (NA) Promptly Return Unused Committed Memory from G1

JDK 13 - September 2018

Source: https://openjdk.java.net/projects/jdk/13/

No language changes in JDK 13 -- thus no "complete" date. Details of preview support is below.

JEP Status JavaParser Since Description
JEP 354 Preview Supported Since: v3.11.0
Released on: 03/Feb/2019
Switch Expressions (Preview)
JEP 355 Preview Supported Since: v3.14.0
Released on: 05/May/2019
Text Blocks (Preview)
JEP 350 Release Not Applicable (NA) Dynamic CDS Archives
JEP 351 Release Not Applicable (NA) ZGC: Uncommit Unused Memory
JEP 353 Release Not Applicable (NA) Reimplement the Legacy Socket API

JDK 14 (current) - March 2020

Source: https://openjdk.java.net/projects/jdk/14/

Switch support was complete during preview status.

The preview features of instanceof pattern and records are work-in-progress.

JEP Status JavaParser Since Description
JEP 361 Release Supported Since: v3.xx.yy
Released on: dd/mmm/yyyy
Switch Expressions (Standard)
JEP 368 2nd Preview Supported Since: v3.14.0
Released on: 05/May/2019
Text Blocks (Second Preview)
JEP 305 Preview WIP - #2512 Pattern Matching for instanceof (Preview)
JEP 359 Preview WIP - #2654 Records (Preview)
JEP 343 Incubator Not Applicable (NA)JEP343 Packaging Tool (Incubator)
JEP 345 Release Not Applicable (NA) NUMA-Aware Memory Allocation for G1
JEP 349 Release Not Applicable (NA) JFR Event Streaming
JEP 352 Release Not Applicable (NA) Non-Volatile Mapped Byte Buffers
JEP 358 Release Not Applicable (NA) Helpful NullPointerExceptions
JEP 362 Release Not Applicable (NA) Deprecate the Solaris and SPARC Ports
JEP 363 Release Not Applicable (NA) Remove the Concurrent Mark Sweep (CMS) Garbage Collector
JEP 364 Release Not Applicable (NA) ZGC on macOS
JEP 365 Release Not Applicable (NA) ZGC on Windows
JEP 366 Release Not Applicable (NA) Deprecate the ParallelScavenge + SerialOld GC Combination
JEP 367 Release Not Applicable (NA) Remove the Pack200 Tools and API
JEP 370 Release Not Applicable (NA) Foreign-Memory Access API (Incubator)
Footnotes:
  • JEP343 - JEP 343 is marked as not applicable, as it relates to packaging of apps - e.g. as .exe/.msi/.deb/.rpm/.pkg/.dmg. The JEP describes the layout/structure of the output file, suggesting that maybe in the future the files may be examined, and potentially used similarly to a .jar or set of .class files. This is not going to be actively pursued (especially since this is still in the incubator stage), though tested PRs are always welcome.

JDK 15 - targeted for September 2020

Source: https://openjdk.java.net/projects/jdk/15/

JEPs proposed to target JDK 15 review ends

  • 383: Foreign-Memory Access API (Second Incubator) 2020/05/21

JEPs targeted to JDK 15, so far

  • JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
  • JEP 360: Sealed Classes (Preview)
  • JEP 371: Hidden Classes
  • JEP 372: Remove the Nashorn JavaScript Engine
  • JEP 373: Reimplement the Legacy DatagramSocket API
  • JEP 374: Disable and Deprecate Biased Locking
  • JEP 375: Pattern Matching for instanceof (Second Preview)
  • JEP 377: ZGC: A Scalable Low-Latency Garbage Collector
  • JEP 378: Text Blocks
  • JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector
  • JEP 381: Remove the Solaris and SPARC Ports
  • JEP 384: Records (Second Preview)

JDK 16 - targeted for March 2021

JDK 17 - targeted for September 2021