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. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community Process (JCP), which uses Java Specification Requests (JSRs) to propose and specify additions and changes to the Java platform. The language is specified by the Java Language Specification (JLS); changes to the JLS are managed under JSR 901.

In addition to the language changes, much more dramatic changes have been made to the Java Class Library over the years, which has grown from a few hundred classes in JDK 1.0 to over three thousand in J2SE 5. Entire new APIs, such as Swing and Java2D, have been introduced, and many of the original JDK 1.0 classes and methods have been deprecated. Some programs allow conversion of Java programs from one version of the Java platform to an older one (for example Java 5.0 backported to 1.4) (see Java backporting tools).

After the Java 7 release, Oracle promised to go back to a 2-year release cycle.[1] However, in 2013, Oracle announced that they would delay Java 8 by one year, in order to fix bugs related to Java security.[2]

Java 8 is the only publicly supported version, while after public support periods of older versions has ended, non-public updates have been issued for Java 7 and earlier.

Codename Tiger. The release on September 30, 2004 was originally numbered 1.5, which is still used as the internal version number. The number was changed to "better reflect the level of maturity, stability, scalability and security of the J2SE".[13] This version was developed under JSR 176.

J2SE 5.0 entered its end-of-public-updates period on April 8, 2008; updates are no longer available to the public as of November 3, 2009. Updates were available to paid Oracle customers until May 2015.[14]

Metadata: also called annotations; allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities (specified by JSR 175)

Varargs: the last parameter of a method can now be declared using a type name followed by three dots (e.g. void drawtext(String... lines)); in the calling code any number of parameters of that type can be used and they are then placed in an array to be passed to the method, or alternatively the calling code can pass an array of that type

Enhanced for each loop: the for loop syntax is extended with special syntax for iterating over each member of either an array or any Iterable, such as the standard Collection classes (specified by JSR 201)

Improved semantics of execution for multi-threaded Java programs; the new Java memory model addresses issues of complexity, effectiveness, and performance of previous specifications[17]

Java 5 is the last release of Java to officially support the Microsoft Windows 98 and Windows ME,[19] while Windows Vista is the newest version of Windows that J2SE 5 was supported on prior to Java 5 going end of life in October 2009.[12]

This version introduced a new versioning system for the Java language, although the old versioning system continued to be used for developer libraries:

Both version numbers "1.5.0" and "5.0" are used to identify this release of the Java 2 Platform Standard Edition. Version "5.0" is the product version, while "1.5.0" is the developer version. The number "5.0" is used to better reflect the level of maturity, stability, scalability and security of the J2SE.

A few crashes were fixed. The program is now compiled with better optimization. Calendar bugfixes and other bugfixes were made.

Java SE 5 Update 3

2005-05-03

This release fixes several bugs, including crashes of the Linux Mozilla plugin.

Java SE 5 Update 4

2005-07-04

With the release, J2SE support for Windows 64-bit has progressed from release candidate to final release. This version runs on AMD64/EM64T 64-bit mode machines with Windows Server 2003 x64 Editions.

Java SE 5 Update 5

2005-09-18

Several bugs were fixed and performance enhancements were made. Last release for Windows 95 and Windows NT 4.0.

Java SE 5 Update 6

2005-12-07

Prior to this update, an applet or application could specify the version of the JRE on which it would run. This has changed. All applets are executed with the latest JRE version.

Java SE 5 Update 7

2006-05-29

Several bugs were fixed and performance enhancements were made.

Java SE 5 Update 8

2006-08-13

Several bugs were fixed and performance enhancements were made.

Java SE 5 Update 9

2006-11-12

This release fixes several minor regressions.

Java SE 5 Update 10

2006-12-22

An implementation of the epoll I/O event notification facility, supported by Linux 2.6, was added. Many bugs were fixed.

Java SE 5 Update 11

2007-03-08

Several bugs were fixed and performance enhancements were made.

Java SE 5 Update 12

2007-06-11

Java SE 5 Update 13

2007-10-05

Multiple security vulnerabilities in Java Web Start relating to local file access were fixed. A security vulnerability in the JRE allowing network access restrictions to be circumvented was fixed. Several other security issues and minor bugs were fixed.

Java SE 5 Update 14

Java SE 5 Update 15

2008-03-06

Several crashes due to heap buffer out-of-bounds were fixed, along with several other bugs. New root certificates from AOL, DigiCert, and TrustCenter are now included.

Java SE 5 Update 16

2008-07-23

This release fixes several security flaws, such as DoS vulnerabilities, buffer overflows, and other bugs which could lead to crashes or which would give applets access to certain system resources. These vulnerabilities were located in Java Web Start, in the Java Management Extensions (JMX) Management Agent, and in the functions for handling XML data.

Java SE 5 Update 17

2008-12-03

The UTF-8 charset implementation was updated to handle the non-shortest form of UTF-8 byte sequences, introducing an incompatibility from previous releases. New root certificates were added. Many bugs were fixed.

Java SE 5 Update 18

2009-03-25

Several security issues were resolved. The behavior of the JNDI feature to store and retrieve Java objects in an LDAP directory was slightly modified. Five new root certificates were added. Many bugs were fixed.

Java SE 5 Update 19

2009-05-29

Support was added for several system configurations. Service Tag support was added. Many bugs were fixed, including several crashes and memory leaks.

Java SE 5 Update 20

2009-08-06

Several security vulnerabilities were resolved, such as potential system access by untrusted applets, and integer overflows in image processing and in Unpack200. Several new root certificates were added. Many other minor bugs were fixed.

Java SE 5 Update 21

2009-09-09

Many minor bugs were fixed.

Java SE 5 Update 22

2009-11-04

This release marks the End of Service Life (EOSL) for Java 5, and is its final public version. Several security vulnerabilities, reported as Sun Alerts 269868, 270474, 270475, and 270476, were fixed. Several other bugs were fixed. Furthermore, two new root certificates were added.

Codename Mustang. As of the version released on December 11, 2006, Sun replaced the name "J2SE" with Java SE and dropped the ".0" from the version number.[23] Internal numbering for developers remains 1.6.0.[24] This version was developed under JSR 270.

During the development phase, new builds including enhancements and bug fixes were released approximately weekly. Beta versions were released in February and June 2006, leading up to a final release that occurred on December 11, 2006.

Support for older Win9x versions dropped; unofficially, Java 6 Update 7 was the last release of Java shown to work on these versions of Windows.[citation needed] This is believed[by whom?] to be due to the major changes in Update 10.

Java 6 reached the end of its supported life in February 2013, at which time all public updates, including security updates, were scheduled to be stopped.[31][32] Oracle released two more update to Java 6 in March and April 2013, which patched some security vulnerabilities.[33][34]

After Java 6 release, Sun, and later Oracle, released several updates which, while not changing any public API, enhanced end-user usability or fixed bugs.[35] Since January 2016, Java 6 (and earlier) versions are no longer available for download from Oracle.[36]

Release

Release date

Highlights

Java SE 6

2006-12-23

This release adds many enhancements in the fields of Web services, scripting, databases, pluggable annotations, and security, as well as quality, compatibility, and stability. JConsole is now officially supported. Java DB support has been added.

HotSpot VM 14. This release includes extensive performance updates to the JIT compiler, compressed pointers for 64-bit machines, as well as support for the G1 (Garbage First) low-pause garbage collector.[48][49]

Some developers have noticed an issue introduced in this release which causes debuggers to miss breakpoints seemingly randomly.[51] Sun has a corresponding bug, which is tracking the issue. The workaround applies to the Client and Server VMs.[52] Using the -XX:+UseParallelGC option will prevent the failure. Another workaround is to roll back to update 13, or to upgrade to update 16.

No security fixes; Hotspot VM 20; support for Internet Explorer 9, Firefox 4 and Chrome 10; improved BigDecimal; includes "tiered" compilation in the Server VM that enables it to start quickly as does the Client VM, while achieving better peak performance (this feature is enabled by specifying -server and -XX:+TieredCompilation command options)[63]

Linux x64 and Windows i586 versions are available as the Java SE 6 Reference Implementation.[99] Other versions are only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 15 security fixes[100]

Java SE 6 Update 95

2015-04-14

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 14 security fixes[101]

Java SE 6 Update 101

2015-07-15

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 18 security fixes[102] Certification for IE 10 and 11 was introduced in 1.6.0_101

Java SE 6 Update 105

2015-10-20

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 17 security fixes[103]

Java SE 6 Update 111

2016-01-20

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 17 security fixes[104]

Java SE 6 Update 113

2016-02-05

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 1 security fix[105]

Java SE 6 Update 115

2016-04-21

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 8 security fixes[106]

Java SE 6 Update 121

2016-07-19

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 15 security fixes[107]

Java SE 6 Update 131

2016-10-18

Not available publicly, only available through the Java SE Support program and in Solaris 10's Recommended Patchset Cluster; 12 security fixes[108]

Java 7 (codename Dolphin[109]) is a major update that was launched on July 7, 2011[110] and was made available for developers on July 28, 2011.[111] The development period was organized into thirteen milestones; on June 6, 2011, the last of the thirteen milestones was finished.[112][113] On average, 8 builds (which generally included enhancements and bug fixes) were released per milestone. The feature list at the OpenJDK 7 project lists many of the changes.

New file I/O library (defined by JSR 203) adding support for multiple file systems, file metadata and symbolic links. The new packages are java.nio.file, java.nio.file.attribute and java.nio.file.spi[127][128]

Lambda (Java's implementation of lambda functions), Jigsaw (Java's implementation of modules), and part of Coin were dropped from Java 7, and released as part of Java 8 (except for Jigsaw, which will be in Java 9).[131][132]

Java 7 was the default version to download on java.com from April 2012 until Java 8 was released.[133]

JavaFX and Java Access Bridge included in Java SE JDK and JRE installation, JavaFX support for touch-enabled monitors and touch pads, JavaFX support for Linux, JDK and JRE Support for Mac OS X, JDK for Linux on ARM[145]

Olson Data 2012i; bugfix for problems with registration of plugin on systems with Stand-alone version of JavaFX Installed, security fixes for CVE-2013-0422;[151] the default security level for Java applets and web start applications has been increased from "Medium" to "High"

JSR 335, JEP 126: Language-level support for lambda expressions (officially, lambda expressions; unofficially, closures) under Project Lambda[196] and default methods (virtual extension methods)[197][198][199] 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.[200][201] Sun later declared that lambda expressions would be included in Java and asked for community input to refine the feature.[202] Supporting lambda expressions also allows the performance of 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,[197] default methods also allow multiple inheritance of behavior (but not state).

Java 8 is not supported on Windows XP[210] but as of JDK 8 update 25, it can still be installed and run under Windows XP.[211] Previous updates of JDK 8 could be run under XP, but had to be installed after a forced installation by directly unzipping files from the installation executable.

From October 2014, Java 8 has been the default version to download from the official website.[212]

At JavaOne 2011, Oracle discussed features they hope to have in a 2016 release of Java 9,[239] including better support for multi-gigabyte heaps, better native code integration, and a self-tuning JVM.[240] In early 2016 the release of Java 9 was rescheduled for March 2017[241] which later again postponed four more months to July 2017.[242]

Work is under way to make the Java implementation of Reactive Streams part of Java 9: Doug Lea, leader of JSR 166, has proposed[249] a new Flow class[250] that will include the interfaces currently provided by Reactive Streams.[251][252] This work is tracked under:

^Stahl, Henrik (2014-07-11). "Updated: The future of Java on Windows XP". Oracle Corporation. Retrieved 2014-11-11. JDK 8 is not supported on Windows XP. Early versions of JDK 8 had known issues with the installer on Windows XP that prevented it from installing without manual intervention. This was resolved in JDK 8 Update 25. The important point here is that we can no longer provide complete guarantees for Java on Windows XP, since the OS is no longer being updated by Microsoft. We strongly recommend that users upgrade to a newer version of Windows that is still supported by Microsoft in order to maintain a stable and secure environment.

^"JEP 266: More Concurrency Updates". Oracle Corporation. 2016-09-01. Retrieved 2016-11-01. Interfaces supporting the Reactive Streams publish-subscribe framework, nested within the new class Flow, along with a utility class SubmissionPublisher that developers can use to create custom components