This repository contains Java examples that are designed to track and document the progress of Java Enhancement Proposals (JEPs), Java Specification Requests (JSRs), and Java Language Revisions (JLRs). These examples provide a comprehensive overview of the various changes, updates, and improvements made to the Java language and platform over time.
Note: Continuous improvements and bug fixes are made within the repository to produce better solutions.
-
Java 23 (September, 2024)
-
Java 22 (March, 2024)
- JEP 458: Launch Multi-File Source-Code Programs
-
Java 21 (September, 2023)
- JEP 430: String Templates
- JEP 431: Sequenced Collections
- JEP 444: Virtual Threads
- API Improvements
- Unicode Emoji Methods
isEmoji(int codePoint)
isEmojiPresentation(int codePoint)
isEmojiModifier(int codePoint)
isEmojiModifierBase(int codePoint)
isEmojiComponent(int codePoint)
isExtendedPictographic(int codePoint)
- Unicode Emoji Methods
-
Java 17 (September, 2021)
- JEP 409: Sealed Classes
-
Java 16 (March, 2021)
- JEP 395: Records
-
Java 14 (March, 2020)
-
Java 12 (March, 2019)
- API Improvements
-
Java 11 (September, 2018)
- JEP 181: Nest-Based Access Control
- JEP 318: Epsilon: A No-Op Garbage Collector
- JEP 321: HTTP Client (Standard)
- JEP 323: Local-Variable Syntax for Lambda Parameters
- JEP 327: Unicode 10
- JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms
- JEP 332: Transport Layer Security (TLS) 1.3
- API Improvements
- New String Methods
isBlank()
lines()
repeat()
strip()
,stripLeading()
,stripTrailing()
- New File Methods
readString(Path)
writeString(Path, CharSequence, OpenOption...)
writeString(Path.of("message.txt"), updatedMessage)
- New Collection.toArray() Method
- New String Methods
-
Java 10 (March, 2018)
- JEP 286: Local-Variable Type Inference
- JEP 314: Additional Unicode Language-Tag Extensions
- JEP 322: Time-Based Release Versioning
- API Improvements
- Standard Class Libraries
java.lang.management.RuntimeMXBean.getPid()
: Returns the pid of the running JVM.
- New Collection Methods
List.copyOf()
Set.copyOf()
Map.copyOf()
- New Stream Methods
Collectors.toUnmodifiableList()
Collectors.toUnmodifiableSet()
Collectors.toUnmodifiableMap()
Optional.orElseThrow()
- Standard Class Libraries
-
Java 9 (September, 2017)
- JEP 110: HTTP/2 Client
- JEP 213: Milling Project Coin
-
Java 8 (March, 2014)
- JEP 135: Base64 Encoding & Decoding
- JEP 174: Nashorn JavaScript Engine
- JEP 150: Date & Time API
- JEP 107: Bulk Data Operations for Collections (
java.util.stream
) - JSR 335
- Lambda Expressions
- Default Methods in Interfaces
- Functional Interfaces
- Optional
- Method References
- API Improvements
java.util.IntSummaryStatistics
java.util.LongSummaryStatistics
java.util.DoubleSummaryStatistics
-
Java 7 (September, 2011)
-
Java 6 (December, 2006)
- JSR 160: Management Extensions (JMX) Remote API
-
Java 5 (September, 2004)
- The Java Version Almanac
- JDK Release Notes
- Place to get early releases from Oracle's JDK
- OpenJDK Projects
- List of all Java Specification Requests (JSRs)
- What is the difference (or relation) between JLS, JSR and JEP?
- Maven Plugins Compatibility Plan
- VM Options Explorer
- Java modules published at Maven Central
- Java upgrade example errors and solutions