Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 

Repository files navigation

Java History

image

Acronyms

JEP (Java Enhancement Proposal): JEPs are the primary process for proposing and standardizing changes to the Java platform

JSRs: Java Specification Requests

Reference sites

For more info please visit these web sites:

https://javaalmanac.io/

https://github.com/akullpp/awesome-java

1. Java 21 (LTS)

Java 21 language specification: https://docs.oracle.com/javase/specs/jls/se21/html/index.html

Java 21 packages index: https://docs.oracle.com/en/java/javase/21/docs/api/allpackages-index.html

1.1. JVM

Generational ZGC (JEP 439): https://openjdk.org/jeps/439

Deprecate the Windows 32-bit x86 Port for Removal (JEP 449): https://openjdk.org/jeps/449

Prepare to Disallow the Dynamic Loading of Agents (JEP 451): https://openjdk.org/jeps/451

1.2. Language

String Templates (JEP 430): https://openjdk.org/jeps/430

Record Patterns (JEP 440): https://openjdk.org/jeps/440

Pattern Matching for switch (JEP 441): https://openjdk.org/jeps/441

Unnamed Patterns and Variables (JEP 443): https://openjdk.org/jeps/443

Unnamed Classes and Instance Main Methods (JEP 445): https://openjdk.org/jeps/445

1.3. API

Sequenced Collections (JEP 431):https://openjdk.org/jeps/431

Foreign Function & Memory API 3 (JEP 442):https://openjdk.org/jeps/442

Virtual Threads (JEP 444): https://openjdk.org/jeps/444

Scoped Values 1 (JEP 446): https://openjdk.org/jeps/446

Vector API 6 (JEP 448): https://openjdk.org/jeps/448

Key Encapsulation Mechanism API (JEP 452): https://openjdk.org/jeps/452

Structured Concurrency 1 (JEP 453): https://openjdk.org/jeps/453

2. Java 20

Java 20 language specification: https://docs.oracle.com/javase/specs/jls/se20/html/index.html

2.1. Language

Record Patterns (JEP 432): https://openjdk.org/jeps/453

Pattern Matching for switch (JEP 433): https://openjdk.org/jeps/453

2.2. API

Scoped Values (JEP 429): https://openjdk.org/jeps/453

Foreign Function & Memory API (JEP 434): https://openjdk.org/jeps/453

Virtual Threads (JEP 436): https://openjdk.org/jeps/453

Structured Concurrency (JEP 437): https://openjdk.org/jeps/453

Vector API 5 (JEP 438): https://openjdk.org/jeps/453

3. Java 19

Java 19 language specification: https://docs.oracle.com/javase/specs/jls/se19/html/index.html

3.1. JVM

Linux/RISC-V Port (JEP 422): https://openjdk.org/jeps/422

3.2. Language

Record Patterns 1 (JEP 405): https://openjdk.org/jeps/405

Pattern Matching for switch 3 (JEP 427): https://openjdk.org/jeps/427

3.3. API

Foreign Function & Memory API 1 (JEP 424): https://openjdk.org/jeps/424

Virtual Threads 1 (JEP 425): https://openjdk.org/jeps/425

Vector API 4 (JEP 426): https://openjdk.org/jeps/426

Structured Concurrency 1 (JEP 428): https://openjdk.org/jeps/428

4. Java 18

Java 18 language specification: https://docs.oracle.com/javase/specs/jls/se18/html/index.html

4.1. JVM

UTF-8 by Default (JEP 400): https://openjdk.org/jeps/400

4.2. Language

Pattern Matching for switch 2 (JEP 420): https://openjdk.org/jeps/420

4.3. API

Reimplement Core Reflection with Method Handles (JEP 416): https://openjdk.org/jeps/416

Vector API 3 (JEP 417): https://openjdk.org/jeps/417

Internet-Address Resolution SPI (JEP 418): https://openjdk.org/jeps/418

Foreign Function & Memory API 2 (JEP 419): https://openjdk.org/jeps/419

Deprecate Finalization for Removal (JEP 421): https://openjdk.org/jeps/421

4.4. Tools

Simple Web Server (JEP 408): https://openjdk.org/jeps/408

Code Snippets in Java API Documentation (JEP 413): https://openjdk.org/jeps/413

5. Java 17 (LTS)

Java 17 language specification: https://docs.oracle.com/javase/specs/jls/se17/html/index.html

5.1. JVM

New macOS Rendering Pipeline (JEP 382): https://openjdk.org/jeps/382

macOS/AArch64 Port (JEP 391): https://openjdk.org/jeps/391

Strongly Encapsulate JDK Internals (JEP 403): https://openjdk.org/jeps/403

5.2. Language

Restore Always-Strict Floating-Point Semantics (JEP 306): https://openjdk.org/jeps/306

Pattern Matching for switch 1. Preview (JEP 406): https://openjdk.org/jeps/406

Sealed Classes (JEP 409): https://openjdk.org/jeps/409

5.3. API

Enhanced Pseudo-Random Number Generators (JEP 356): https://openjdk.org/jeps/356

Deprecate the Applet API for Removal (JEP 398): https://openjdk.org/jeps/398

Remove RMI Activation (JEP 407): https://openjdk.org/jeps/407

Deprecate the Security Manager for Removal (JEP 411): https://openjdk.org/jeps/411

Foreign Function & Memory API 1 (JEP 412): https://openjdk.org/jeps/412

Vector API 2 (JEP 414): https://openjdk.org/jeps/414

5.4. Tools

Remove the Experimental AOT and JIT Compiler (JEP 410): https://openjdk.org/jeps/410

6. Java 16

Java 16 language specification: https://docs.oracle.com/javase/specs/jls/se16/html/index.html

6.1. JVM

ZGC Concurrent Thread Processing (JEP 376): https://openjdk.org/jeps/376

Alpine Linux Port (JEP 386): https://openjdk.org/jeps/386

Windows/AArch64 Port (JEP 388):https://openjdk.org/jeps/388

Strongly Encapsulate JDK Internals by Default (JEP 396): https://openjdk.org/jeps/396

6.2.Language

Warnings for Value-Based Classes (JEP 390): https://openjdk.org/jeps/390

Pattern Matching for instanceof (JEP 394): https://openjdk.org/jeps/394

Records (JEP 395): https://openjdk.org/jeps/395

Static Members in Inner Classes

Sealed Classes 2. Preview (JEP 397): https://openjdk.org/jeps/397

6.3. API

Vector API 1 (JEP 338): https://openjdk.org/jeps/338

Unix-Domain Socket Channels (JEP 380): https://openjdk.org/jeps/380

Foreign Linker API 1 (JEP 389): https://openjdk.org/jeps/389

Foreign-Memory Access API 3 (JEP 393): https://openjdk.org/jeps/393

6.4. Tools

Packaging Tool (JEP 392): https://openjdk.org/jeps/392

7. Java 15

Java 15 language specification: https://docs.oracle.com/javase/specs/jls/se15/html/index.html

7.1. JVM

Disable and Deprecate Biased Locking (JEP 374): https://openjdk.org/jeps/374

ZGC (JEP 377): https://openjdk.org/jeps/377

Shenandoah GC (JEP 379): https://openjdk.org/jeps/379

Remove the Solaris and SPARC Ports (JEP 381): https://openjdk.org/jeps/381

7.2. Language

Sealed Classes 1 (JEP 360): https://openjdk.org/jeps/360

Pattern Matching for instanceof 2 (JEP 375): https://openjdk.org/jeps/375

Text Blocks (JEP 378): https://openjdk.org/jeps/378

Records 2 (JEP 384):

Local Interfaces and Enums 2 (JEP 384): https://openjdk.org/jeps/384

7.3. API

Edwards-Curve Digital Signature Algorithm (EdDSA) (JEP 339): https://openjdk.org/jeps/339

Hidden Classes (JEP 371): https://openjdk.org/jeps/371

Remove the Nashorn JavaScript Engine (JEP 372): https://openjdk.org/jeps/372

Foreign-Memory Access API 2 (JEP 383): https://openjdk.org/jeps/383

Deprecate RMI Activation for Removal (JEP 385): https://openjdk.org/jeps/385

8. Java 14

Java 14 language specification: https://docs.oracle.com/javase/specs/jls/se14/html/index.html

8.1. JVM

NUMA-Aware Memory Allocation for G1 (JEP 345): https://openjdk.org/jeps/345

JFR Event Streaming (JEP 349): https://openjdk.org/jeps/349

Helpful NullPointerExceptions (JEP 358): https://openjdk.org/jeps/358

Deprecate the Solaris and SPARC Ports (JEP 362): https://openjdk.org/jeps/362

Remove the Concurrent Mark Sweep (CMS) Garbage Collector (JEP 363): https://openjdk.org/jeps/363

ZGC on macOS (JEP 364): https://openjdk.org/jeps/364

ZGC on Windows (JEP 365): https://openjdk.org/jeps/365

Deprecate the ParallelScavenge + SerialOld GC Combination (JEP 366): https://openjdk.org/jeps/366

8.2. Language

Switch Expressions (JEP 361): https://openjdk.org/jeps/361

Records 1 (JEP 359): https://openjdk.org/jeps/359

Text Blocks 2 (JEP 368): https://openjdk.org/jeps/368

Pattern Matching for instanceof 1 (JEP 305): https://openjdk.org/jeps/305

8.3. API

Non-Volatile Mapped Byte Buffers (JEP 352): https://openjdk.org/jeps/352

Remove the Pack200 APIs (JEP 367): https://openjdk.org/jeps/367

Foreign-Memory Access API 1 (JEP 370): https://openjdk.org/jeps/370

8.4. Tools

Remove the Pack200 Tools (JEP 367): https://openjdk.org/jeps/367

Packaging Tool 1 (JEP 343): https://openjdk.org/jeps/343

9. Java 13

Java 13 language specification: https://docs.oracle.com/javase/specs/jls/se13/html/index.html

9.1. JVM

Dynamic CDS Archives (JEP 350): https://openjdk.org/jeps/350

ZGC: Uncommit Unused Memory (JEP 351): https://openjdk.org/jeps/351

9.2. Language

Switch Expressions 2 (JEP 354): https://openjdk.org/jeps/354

Text Blocks 1 (JEP 355): https://openjdk.org/jeps/355

10. Java 12

Java 12 language specification:https://docs.oracle.com/javase/specs/jls/se12/html/index.html

10.1. JVM

Shenandoah GC (JEP 189): https://openjdk.org/jeps/189

10.2. Language

Switch Expressions 1 (JEP 325): https://openjdk.org/jeps/325

10.3. API

JVM Constants (JEP 334): https://openjdk.org/jeps/334

11. Java 11 (LTS)

Java 11 language specification: https://docs.oracle.com/javase/specs/jls/se11/html/index.html

11.1. JVM

CONSTANT_Dynamic (JEP 309): https://openjdk.org/jeps/309

Epsilon GC (JEP 318): https://openjdk.org/jeps/318

ZGC (JEP 333): https://openjdk.org/jeps/333

Nest-Based Access Control (JEP 181): https://openjdk.org/jeps/181

Low-Overhead Heap Profiling (JEP 331): https://openjdk.org/jeps/331

Improve Aarch64 Intrinsics (JEP 315): https://openjdk.org/jeps/315

11.2. Language

Local Variable Syntax for Lambda Parameters (JEP 323): https://openjdk.org/jeps/323

11.3. API

HTTP Client (JEP 321): https://openjdk.org/jeps/321

Java EE and CORBA removed (JEP 320): https://openjdk.org/jeps/320

Unicode 10 Support (JEP 327): https://openjdk.org/jeps/327

Nashorn JavaScript Engine deprecated (JEP 335): https://openjdk.org/jeps/335

New Cryptographic Algorithms (JEP 324, JEP 329): https://openjdk.org/jeps/324, https://openjdk.org/jeps/329

TLS 1.3 (JEP 332): https://openjdk.org/jeps/332

11.4. Tools

Single Source File Launch (JEP 330): https://openjdk.org/jeps/330

Flight Recorder (JEP 328): https://openjdk.org/jeps/328

Pack200 deprecated (JEP 336): https://openjdk.org/jeps/336

No more frames in JavaDoc (JDK-8196202)

12. Java 10

Java 10 language specification: https://docs.oracle.com/javase/specs/jls/se10/html/index.html

12.1. JVM

Graal VM (JEP 317): https://openjdk.org/jeps/317

GC Interface (JEP 304): https://openjdk.org/jeps/304

Parallel Full GC for G1 (JEP 307): https://openjdk.org/jeps/307

Thread-Local Handshakes (JEP 312): https://openjdk.org/jeps/312

Alternative Memory Devices (JEP 316): https://openjdk.org/jeps/316

12.2. Language

Keyword var (JEP 286): https://openjdk.org/jeps/286

12.3. API

Additional Unicode Language-Tag Extensions (JEP 314): https://openjdk.org/jeps/314

12.4. Tools

javah Removed (JEP 313): https://openjdk.org/jeps/313

13. Java 9

Java 9 language specification: https://docs.oracle.com/javase/specs/jls/se9/html/index.html

13.1. Language

Module System (JEP 261): https://openjdk.org/jeps/261

Private Methods in Interfaces (JEP 213): https://openjdk.org/jeps/213

13.2. API

HTTP/2 Client 1 (JEP 110): https://openjdk.org/jeps/110

Var Handles (JEP 193): https://openjdk.org/jeps/193

Compact Strings (JEP 254): https://openjdk.org/jeps/254

Reactive Streams (JEP 266): https://openjdk.org/jeps/266

Enhanced Deprecation (JEP 277): https://openjdk.org/jeps/277

Object.finalize() deprecated (JDK-8165641)

13.3. Tools

jshell (JEP 222): https://openjdk.org/jeps/222

Multi-Release JAR Files (JEP 238): https://openjdk.org/jeps/238

Compile for Older Platform Versions (JEP 247): https://openjdk.org/jeps/247

jlink (JEP 282): https://openjdk.org/jeps/282

14. Java 8 (LTS)

Java 8 language specification: https://docs.oracle.com/javase/specs/jls/se8/html/index.html

14.1. JVM

Remove Permanent Generation (JEP 122): https://openjdk.org/jeps/122

14.2. Language

Lambda Expressions (JSR 335): https://jcp.org/en/jsr/detail?id=335

Default Methods in Interfaces (JSR 335):

Effectively Final Variables (JSR 335):

Type Use Annotations (JEP 104): https://openjdk.org/jeps/104

Repeating Annotations (JEP 120): https://openjdk.org/jeps/120

14.3. API

Streams (java.util.stream) (JEP 107): https://openjdk.org/jeps/107

Lambda APIs (java.util.function) (JEP 109): https://openjdk.org/jeps/109

Date Time (java.time) (JSR 310, JEP 150): https://jcp.org/en/jsr/detail?id=310, https://openjdk.org/jeps/150

15. Java 7

Java 7 language specification: https://docs.oracle.com/javase/specs/jls/se7/html/index.html

15.1. JVM

New Opcode INVOKEDYNAMIC (JSR 292): https://jcp.org/en/jsr/detail?id=292

15.2. Language

Switch on String (JSR 334): https://jcp.org/en/jsr/detail?id=334

Try-with (JSR 334): https://jcp.org/en/jsr/detail?id=334

Diamond Operator (JSR 334): https://jcp.org/en/jsr/detail?id=334

Binary Integer Literals (JSR 334): https://jcp.org/en/jsr/detail?id=334

Underscores in numeric literals (JSR 334): https://jcp.org/en/jsr/detail?id=334

Multi Catch (JSR 334): https://jcp.org/en/jsr/detail?id=334

15.3. API

Method Handles (JSR 292): https://jcp.org/en/jsr/detail?id=292

NIO.2 (java.nio.file) (JSR 203): https://jcp.org/en/jsr/detail?id=203

16. Java 6

Java 6 language specification:

16.1. API

XML Digital Signatures (javax.xml.crypto.dsig) (JSR 105): https://jcp.org/en/jsr/detail?id=105

Streaming API for XML 1.0 (javax.xml.stream) (JSR 173): https://jcp.org/en/jsr/detail?id=173

Web Services Metadata (javax.jws) (JSR 181): https://jcp.org/en/jsr/detail?id=181

Java API for XML Processing 1.3 (javax.xml.*) (JSR 206): https://jcp.org/en/jsr/detail?id=206

JAXB 2.0 (javax.xml.bind) (JSR 222): https://jcp.org/en/jsr/detail?id=222

Scripting for the Java Platform (javax.script) (JSR 223): https://jcp.org/en/jsr/detail?id=223

XML-Based Web Services 2.0 (javax.xml.ws) (JSR 224): https://jcp.org/en/jsr/detail?id=224

Common Annotations (javax.annotations) (JSR 250): https://jcp.org/en/jsr/detail?id=250

Smart Card I/O (javax.smartcardio) (JSR 268): https://jcp.org/en/jsr/detail?id=268

Pluggable Annotation Processing (javax.lang.model) (JSR 269): https://jcp.org/en/jsr/detail?id=269

Java Activation Framework (javax.annotation) (JDK-6254474):

16.2. Tools

javac supports java.lang.SuppressWarnings annotation (JDK-4986256)

17. Java 5

Java 5 language specification:

17.1. Language

Generics (JSR 14): https://jcp.org/en/jsr/detail?id=14

Annotations (JSR 175): https://jcp.org/en/jsr/detail?id=175

Autoboxing (JSR 201): https://jcp.org/en/jsr/detail?id=201

Enums (JSR 201): https://jcp.org/en/jsr/detail?id=201

For-each Loops (JSR 201): https://jcp.org/en/jsr/detail?id=201

Static Imports (JSR 201): https://jcp.org/en/jsr/detail?id=201

Var Args (JSR 201): https://jcp.org/en/jsr/detail?id=201

17.2. API

Concurrency Utilities (java.util.concurrent) (JSR 166): https://jcp.org/en/jsr/detail?id=166

18. Java 1.4.

18.1. Language

Keyword assert (JSR 41): https://jcp.org/en/jsr/detail?id=41

18.2. API

Regular Expressions (JSR 51): https://jcp.org/en/jsr/detail?id=51

Non-blocking IO (JSR 51): https://jcp.org/en/jsr/detail?id=51

Logging (JSR 47): https://jcp.org/en/jsr/detail?id=47

Preferences (JSR 10): https://jcp.org/en/jsr/detail?id=10

XML APIs (JSR 5): https://jcp.org/en/jsr/detail?id=5

XSLT (JSR 63): https://jcp.org/en/jsr/detail?id=63

19. Java 1.3.

19.1. JVM

HotSpot

19.2. API

JNDI

Sound

20. Java 1.2.

Java 1.2 language specification: https://javaalmanac.io/jdk/1.2/langspec.pdf

20.1. JVM

Sun JIT

20.2. Language

Keyword strictfp

API

Swing

Collections

21. Java 1.1.

21.1. JVM

JIT (on Windows only by JavaSoft)

21.2. Language

Inner Classes

21.2. API

Java Beans

JDBC

RMI

Reflection

22. Java 1.0.

Java 1.0 language specification: https://javaalmanac.io/jdk/1.0/langspec.pdf

23. ## Learn Java history with simple code samples

Java 21 (LTS): https://github.com/luiscoco/Java_21-new-features-samples/tree/main

Java 20 : https://github.com/luiscoco/Java_20-new-features-samples

...

Java 8 (LTS) : https://github.com/luiscoco/Java_8-new-features-samples

Next Java versions samples will be published in the following days

About

Java History

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors