Java version history

The Java language has undergone several changes since JDK 1.0 as well as numerous additions of classes and packages to the standard library.

Oracle continues to release no-cost public Java 8 updates for development[4] and personal use indefinitely.

Oracle also continues to release no-cost public Java 17 LTS updates for all users, including commercial and production use until September 2024.

[5] In the case of OpenJDK, both commercial long-term support and free software updates are available from multiple organizations in the broader community.

Major changes included:[27][28] Public support and security updates for Java 1.4 ended in October 2008.

Java SE 5 entered its end-of-public-updates period on April 8, 2008; updates are no longer available to the public as of November 3, 2009.

During the development phase, new builds including enhancements and bug fixes were released approximately weekly.

Major changes included in this version:[41][42] Java 6 can be installed to Mac OS X 10.5 (Leopard) running on 64-bit (Core 2 Duo and higher) processor machines.

[47][48] Oracle released two more updates to Java 6 in March and April 2013, which patched some security vulnerabilities.

[51] The -XX:+DoEscapeAnalysis option directs the HotSpot JIT compiler to use escape analysis to determine whether local objects can be allocated on the stack instead of the heap.

[citation needed] Some developers have noticed an issue introduced in this release which causes debuggers to miss breakpoints seemingly randomly.

[90][91] On average, 8 builds (which generally included enhancements and bug fixes) were released per milestone.

[113] Further updates for JDK 7, which continued until July 2022, are only made available to customers with a support contract.

[163] Previous updates of JDK 8 could be run under XP by downloading archived zip format file and unzipping it for the executable.

Java SE 9 was made available on September 21, 2017[245] due to controversial acceptance of the current implementation of Project Jigsaw by Java Executive Committee[246] which led Oracle to fix some open issues and concerns and to refine some critical technical questions.

In the last days of June 2017, Java Community Process expressed nearly unanimous consensus on the proposed Module System scheme.

[255] Java 9 should include better support for multi-gigabyte heaps, better native code integration, a different default garbage collector (G1, for "shorter response times")[256] and a self-tuning JVM.

Java 13 includes the following new features, as well as "hundreds of smaller enhancements and thousands of bug fixes".

Java 14 includes the following new features, as well as "hundreds of smaller enhancements and thousands of bug fixes".

Java 15 adds e.g. support for multi-line string literals (aka Text Blocks).

The Shenandoah and Z garbage collectors (latter sometimes abbreviated ZGC) are now ready for use in production (i.e. no longer marked experimental).

Support for Oracle's Solaris operating system (and SPARC CPUs) is dropped (while still available in e.g. Java 11).

They work well with other recent features like records, switch expressions, and pattern matching for instance-of.

They all form part of a system for "Pattern matching in Java" first discussed by Gavin Bierman and Brian Goetz, in September 2018.

JEP 406 extends the pattern matching syntax used in instanceof operations to switch statements and expressions.

[403][404] The following features, or JEPs, were added with this release: An API related to Java's threading implementation, java.lang.Thread.countStackFrames, was removed.

Azul offers certified open source OpenJDK builds under the Zulu moniker.

Android incorporated parts of the Harmony project, supplemented with Google's own Dalvik virtual machine and ART.

IBM initially developed OpenJ9 as the proprietary J9[413] but has since relicensed the project and donated it to the Eclipse Foundation.

JRockit is a proprietary implementation that was acquired by Oracle and incorporated into subsequent OpenJDK versions.