JDK Alpha and Beta (1995)

The Java Alpha and Beta was the first releases but they have highly unstable APIs and ABIs. The supplied Java web browser was named WebRunner.

JDK 1.0 (January 23, 1996)

It was the first stable released version of Java. Its codename was Oak.The first stable version of JDK was JDK 1.0.2 and it was called Java 1.
Up to JDK 1.0.1, private and protected keywords could be used together to create yet another form of protection which used to act as a restriction to methods or variables mainly to subclasses of a given class. In JDK 1.0.2, this capability has been removed.

JDK 1.1 (February 19, 1997)
Some additions were included to this version. i.e.
  • The concept of Inner Class
  • JavaBeans
  • JDBC
  • RMI
  • AWT event model was totally reshaped.
  • Reflection(which supported Introspection only, modification was not possible at runtime).
  • JIT(Just In Time) compiler on Microsoft Windows platforms, produced for JavaSoft by Symantec
  • Internationalization and Unicode support originating from Taligent.

J2SE 1.2 (December 8, 1998)

Its codename was Playground. First time, it was called J2SE (Java 2 Platform, Standard Edition) .It replaced JDK to recognize the base platform from J2EE (Java 2 Platform, Enterprise Edition) and J2ME(Java 2 Platform, Micro Edition) .It was a very important java release as it tripled the size of the Java platform to 1520 classes in 59 packages.
Some additions were included to this version. i.e.
  • Java plug-in
  • Java IDL, an IDL implementation for CORBA interoperability
  • Collections framework
  • the Swing graphical API was integrated into the core classes
  • Sun's JVM was equipped with a JIT compiler for the first time

J2SE 1.3 (May 8, 2000)

Its codename was Kestrel. Some additions were included to this version. i.e.
  • HotSpot JVM included.
  • RMI was modified to support optional compatibility with CORBA.
  • JNDI (Java Naming and Directory Interface).
  • Java Platform Debugger Architecture (JPDA) included.
  • JavaSound.
  • Synthetic proxy classes.

J2SE 1.4 (February 6, 2002)

Its codename was Merlin. It was the first Java platform which was released under the Java Community Process.
Some additions were included to this version. i.e.
  • Improved libraries.
  • Perl regular expressions included.
  • Provided exception chaining (It allows an exception to encapsulate original lower-level exception).
  • IPv6 support (Internet Protocol version 6).
  • Logging API (Specified in JSR 47.)
  • Image I/O API for reading and writing images in formats like JPEG and PNG.
  • XML parser and XSLT processor integrated.
  • Security and cryptography extensions (JCE, JSSE, JAAS) integrated.
Support and security updates for Java 1.4 ended in October 2008.

J2SE 5.0 (September 30, 2004)

Its codename was Tiger. It was originally numbered 1.5, which is still used as the internal version number. So, it was changed to 5.0 to "better reflect the level of maturity, stability, scalability and security of the J2SE". This process also was released under the Java Community Process.
Support and security updates for Java 5.0 ended on November 3, 2009 but updates were available to paid Oracle customers until May 2015.
J2SE 5.0added some significant new language features:
  • It provided compile-time (static) type safety for collections and eliminates the need for most typecasts.
  • Used Metadata or annotations.
  • Autoboxing/unboxing.
  • Enumerations.
  • Enhanced for each loop.
  • Improved semantics of execution for multi-threaded Java programs.
  • Static imports.
There were also some improvements in standard libraries:
  • Automatic stub generation for RMI objects.
  • Swing: It provided a skinny look and feel.
  • The concurrency utilities in package java.util.concurrent.
  • Scanner class for parsing data from various input streams and buffers.
Java 5 was the last release of Java which officially supportedthe Microsoft Windows 9x line (Windows 95, Windows 98, Windows ME).
Windows Vista was the last version of Windows that J2SE 5 supported before going to end in October 2009.
Java 5.0 is the default version of Java installed on Apple Mac OS X 10.5 (Leopard). Java 6 can be installed

Java SE 6 (December 11, 2006)

Its codename was Mustang. After the release of this version, Java replaced the name J2SE to Java SE and dropped the .0 from the version number.
Some additions were included to this version. i.e.
  • Dropped the support for older Win9x versions.
  • Scripting Language Support.
  • Generic API for tight integration with scripting languages.
  • Improved Web Service support.
  • JDBC 4.0 support.
  • Use a Java Compiler API to invoke a Java Compiler programmatically.
After the release of Java 6, Sun released many updates to fix bugs.

Java SE 7 (July 28, 2011)

Its codename was Dolphin. It was launched on 7, July 2011 but was made available for developers on July 28, 2011.
Some additions were included to this version. i.e.
  • JVM support for dynamic languages.
  • Compressed 64-bits pointer.
  • Strings added in switch.
  • Automatic resource management in try-statement.
  • Underscores allowed in numeric literals.
  • Binary integer literals.
  • Improved type interface for creating generic instance. (also called diamond operator <>)
  • Improved catching and throwing. (catch multiple exceptions and rethrow with improved type checking)
  • Provided Java Deployment rulesets.
It was the default version to download on java.com from April 2012 up to the release of Java 8.

Java SE 8 (March 18, 2014)

Its codename was Spider. Although, codenames have been discontinued, but the codename Spider is common among java developers.
It includes some features which were proposed for Java SE 7 but added in Java SE 8.
  • Language-level support for Lambda expressions.
  • Allowed developers to embed JavaScript code within applications.
  • Annotation of Java Types.
  • Provided Date and Time API.
  • Repeating Annotations.
  • Launching of JavaFX applications.
  • Removal of permanent generation.
Java SE 8 is not supported in Windows XP but after JDK 8 update 25, we can install and run it under Windows XP.
Java 8 is set as a default version to download from java.com from October 2014.

Java SE 9 (September 21, 2017)

In 2016, Oracle discussed some features to release in Java 9. It was hoped that Java 9 would include better support for multi-gigabyte heaps, better native code integration, a different default garbage collector and a self-tuning JVM. The release of Java 9 was postponed many times and finally it was released on September 21, 2017.
It includes some specific features:
  • Modularization of the JDK under Project Jigsaw.
  • Provided Money and Currency API.
  • Tight integration with JavaFX.
  • Java implementation of reactive streams.
  • More Concurrency Updates.
  • Provided Java Linker.
  • Automatic scaling and sizing.

Java SE 10 (March, 20, 2018)

Java SE 10 was released to remove primitive data types and move towards 64-bit addressable arrays to support large data sets.It was released on 20 March 2018, with twelve new features confirmed. These features are:
  • Local-Variable Type Inference
  • Experimental Java-Based JIT Compiler This is the integration of the Graal dynamic compiler for the Linux x64 platform
  • Application Class-Data Sharing This allows application classes to be placed in the shared archive to reduce startup and footprint for Java applications
  • Time-Based Release Versioning
  • Parallel Full GC for G1
  • Garbage-Collector Interface
  • Additional Unicode Language-Tag Extensions
  • Root Certificates
  • Thread-Local Handshakes
  • Heap Allocation on Alternative Memory Devices
  • Remove the Native-Header Generation Tool - javah
  • Consolidate the JDK Forest into a Single Repository

Java SE 13 (September, 17, 2019)

JDK 13 is the open-source reference implementation of version 13 of the Java SE Platform as specified by by JSR 388 in the Java Community Process.
JDK 13 reached General Availability on 17 September 2019. Production-ready binaries under the GPL are available from Oracle; binaries from other vendors will follow shortly.

Features

  • 350:Dynamic CDS Archives
    351:ZGC: Uncommit Unused Memory
    353:Reimplement the Legacy Socket API
    354:Switch Expressions (Preview)
    355:Text Blocks (Preview)