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)".
Source: https://en.wikipedia.org/wiki/Java_version_history#JDK_1.0
Source: https://en.wikipedia.org/wiki/Java_version_history#JDK_1.1
Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_1.2
Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_1.3
Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_1.4
Source: https://en.wikipedia.org/wiki/Java_version_history#J2SE_5.0
Source: https://en.wikipedia.org/wiki/Java_version_history#Java_SE_6
Source: https://en.wikipedia.org/wiki/Java_version_history#Java_SE_7
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
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
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 | |||
JEP 304 | |||
JEP 307 | |||
JEP 310 | |||
JEP 312 | |||
JEP 313 | |||
JEP 314 | |||
JEP 316 | |||
JEP 317 | |||
JEP 319 | |||
JEP 322 |
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 | |||
JEP 315 | |||
JEP 318 | |||
JEP 320 | |||
JEP 321 | |||
JEP 324 | |||
JEP 328 | |||
JEP 329 | |||
JEP 330 | |||
JEP 331 | |||
JEP 332 | |||
JEP 333 | |||
JEP 335 | |||
JEP 336 |
- 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). ↩
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 | |||
JEP 230 | |||
JEP 334 | |||
JEP 340 | |||
JEP 341 | |||
JEP 344 | |||
JEP 346 |
Source: https://openjdk.java.net/projects/jdk/13/
No language specification 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 | |||
JEP 351 | |||
JEP 353 |
Source: https://openjdk.java.net/projects/jdk/14/
Switch support was complete during preview status.
The preview features of 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 | Supported Since: v3.18.0 Released on: 01/Dec/2020 |
Pattern Matching for instanceof (Preview) |
JEP 359 | Preview | Partial Support Since: v3.22.0 Released on: 11/May/2021 JEP343 |
Records (Preview) |
JEP 343 | |||
JEP 345 | |||
JEP 349 | |||
JEP 352 | |||
JEP 358 | |||
JEP 362 | |||
JEP 363 | |||
JEP 364 | |||
JEP 365 | |||
JEP 366 | |||
JEP 367 | |||
JEP 370 |
-
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. ↩ -
JEP359 - The behaviour of records changed between preview/2nd preview/release. Unless otherwise stated, the JavaParser implementation follows the released behaviour. Additionally, note that "partial" support refers to javaparser-core being complete since 3.21.0, and javaparser-symbol-solver-core support is TBC. ↩
Source: https://openjdk.java.net/projects/jdk/15/
Note: Unless otherwise stated, the JavaParser implementations of features follows the released behaviour.
JEP | Status | JavaParser Since | Description |
---|---|---|---|
JEP 378 | Release | Supported Since: v3.14.0 Released on: 05/May/2019 |
Text Blocks |
JEP 384 | Release | Partial Support Since: v3.22.0 Released on: 11/May/2021 JEP384 |
Records (Second Preview) |
JEP 375 | Release | Supported Since: v3.18.0 Released on: 01/Dec/2020 |
Pattern Matching for instanceof (Second Preview) |
JEP 360 | Preview | Sealed Classes (Preview) | |
JEP 339 | Release | ||
JEP 371 | Release | ||
JEP 372 | Release | ||
JEP 373 | Release | ||
JEP 374 | Release | ||
JEP 377 | Release | ||
JEP 379 | Release | ||
JEP 381 | Release | ||
JEP 383 | Incubator | ||
JEP 385 | Release |
- JEP384 - The behaviour of records changed between preview/2nd preview/release. Unless otherwise stated, the JavaParser implementation follows the released behaviour. Additionally, note that "partial" support refers to javaparser-core being complete since 3.21.0, and javaparser-symbol-solver-core support is TBC. ↩
Source: https://openjdk.java.net/projects/jdk/16/
Note: Unless otherwise stated, the JavaParser implementations of features follows the released behaviour.
JEP | Status | JavaParser Since | Description |
---|---|---|---|
JEP 395 | Release | Parser Support Since: v3.22.0 Released on: 11/May/2021, Solving TBC JEP395 |
Records |
JEP 394 | Release | Supported Since: v3.18.0 Released on: 01/Dec/2020 |
Pattern Matching for instanceof |
JEP 397 | 2nd Preview | Sealed Classes (Second Preview) | |
JEP 338 | Release | ||
JEP 347 | Release | ||
JEP 357 | Release | ||
JEP 369 | Release | ||
JEP 376 | Release | ||
JEP 380 | Release | ||
JEP 386 | Release | ||
JEP 387 | Release | ||
JEP 388 | Release | ||
JEP 389 | Incubator | ||
JEP 390 | Release | ||
JEP 392 | Release | ||
JEP 393 | Release | ||
JEP 396 | Release |
- JEP395 - The behaviour of records changed between preview/2nd preview/release. Unless otherwise stated, the JavaParser implementation follows the released behaviour. Additionally, note that "partial" support refers to javaparser-core being complete since 3.21.0, and javaparser-symbol-solver-core support is TBC. ↩
Source: https://openjdk.java.net/projects/jdk/17/
2021/06/10 Rampdown Phase One (fork from main line)
2021/07/15 Rampdown Phase Two
2021/08/05 Initial Release Candidate
2021/08/19 Final Release Candidate
2021/09/14 General Availability
JEPs proposed to target JDK 17 review ends
412: Foreign Function & Memory API (Incubator) 2021/05/20
414: Vector API (Second Incubator) 2021/05/18
JEPs targeted to JDK 17, so far
356: Enhanced Pseudo-Random Number Generators
382: New macOS Rendering Pipeline
391: macOS/AArch64 Port
398: Deprecate the Applet API for Removal
409: Sealed Classes
410: Remove the Experimental AOT and JIT Compiler