Java Versions

Java programming language first developed in 1995 with version 1.0. It got several updates and changes since version 1.0. the latest version is Java 14. in this section we will discuss the several Java versions. A complete list of Java versions are as following:

VersionsRelease date
JDK Beta1995
J2SE 1.0January 1996
J2SE 1.1February 1997
J2SE 1.2December 1998
J2SE 1.3May 2000
J2SE 1.4February 2002
J2SE 5.0September 2004
JAVA SE 6December 2006
JAVA SE 7July 2011
JAVA SE 8 (LTS)March 2014
JAVA SE 9September 2017
JAVA SE 10March 2018
JAVA SE 11 (LTS)September 2018
JAVA SE 12March 2019
JAVA SE 13September 2019
JAVA SE 14March 2020

Let’s understand each version in detail.

JDK 1.0

The First version JDK “1.0” was released on 23 January 1996. The first stable version was JDK”1.0.2″ which is also known as Java1.

JDK 1.1

JDK 1.1 was released on February 19, 1997. It has included some additional features:

  • AWT event model
  • Inner classes.
  • JavaBeans
  • JDBC
  • RMI
  • The ability of the process to identify (reflection) which supported Introspection only, no modification at runtime was possible. later, reflection was added to J2SE 1.2.
  • JIT (Just In Time) compiler on Microsoft Windows platforms.

J2SE 1.2

J2SE (Java 2 platform, standard edition) 1.2 was released on Dec 8, 1998. it is also known as Java 2.

Some major features that were included in Java 2 are as following:

  • strictfp keyword
  • the Swing graphical API was integrated into the core classes
  • Sun’s JVM was equipped with a JIT compiler for the first time
  • Java plug-in
  • Java IDL, an IDL implementation for CORBA interoperability
  • Collections framework

J2SE 1.3

J2SE 1,3 was released on 8 May, 2000. It included some additional features such as:

  • HotSpot JVM
  • RMI was modified to support optional compatibility with CORBA
  • Java Naming and Directory Interface (JNDI) included in core libraries (previously available as an extension)
  • Java Platform Debugger Architecture (JPDA)
  • JavaSound
  • Synthetic proxy classes

J2SE 1.4

J2SE 1.4 was released on 6 February, 2002. It was the first platform developed under the Java Community Process as JSR 59. Some major updates that were included as:

  • Language changes
  • assert keyword (specified in JSR 41)
  • Library improvements
  • Regular expressions modeled after Perl regular expressions
  • Exception chaining allows an exception to encapsulate original lower-level exception
  • Internet Protocol version 6 (IPv6) support
  • Non-blocking I/O (Java) (named NIO) (specified in JSR 51)
  • Logging API (specified in JSR 47)
  • Image I/O API for reading and writing images in formats like JPEG and PNG
  • Integrated XML parser and XSLT processor (JAXP) (specified in JSR 5 and JSR 63)
  • Integrated security and cryptography extensions (JCE, JSSE, JAAS)
  • Java Web Start included (Java Web Start was first released in March 2001 for J2SE 1.3) (specified in JSR 56)
  • Preferences API (java.util.prefs)

J2SE 5.0

J2SE 5.0 was released on 30 September 2004. it is also known as Java 5. It had included:

  • Generics
  • Metadata (annotations)
  • Autoboxing/unboxing
  • Enumerations
  • Varargs:
  • Enhanced for each loop
  • Improved semantics of execution for multi-threaded Java programs
  • Static imports

There were also the following improvements to the standard libraries:

  • Automatic stub generation for RMI objects
  • Swing
  • The concurrency utilities in package java.util.concurrent.
  • Scanner class for parsing data from various input streams and buffers

Java SE 6

Java 6 was released on 11 December, 2006. The name J2SE was replaced by Sun with Java SE and dropped the ‘.0’ from its name. Some major updations includes as:

  • Support for older Win9x versions dropped
  • Scripting Language Support.
  • Dramatic performance improvements for the core platform.
  • Improved Web Service support through JAX-WS (JSR 224).
  • JDBC 4.0 support.
  • Java Compiler API
  • Upgrade of JAXB to version 2.0
  • Support for pluggable annotations.
  • Many GUI improvements, such as integration of SwingWorker in the API, table sorting and filtering, and true Swing double-buffering.
  • JVM improvements included.

Java SE 7

Java 7 was released on 7 July, 2011. The codename was Dolphin. It had included some major features as:

  • JVM support for dynamic languages.
  • Compressed 64-bit pointers.
  • Strings in switch.
  • Automatic resource management in try-statement.
  • Improved type inference for generic instance creation.
  • Simplified varargs method declaration.
  • Binary integer literals.
  • Allowing underscores in numeric literals.
  • Catching multiple exception types and rethrowing exceptions with improved type.
  • Concurrency utilities.
  • New file I/O library.
  • Timsort.
  • Library-level support for elliptic curve cryptography algorithms.
  • An XRender pipeline for Java 2D.
  • New platform APIs for the graphics features.
  • Enhanced library-level support for new network protocols.
  • Upstream updates to XML and Unicode
  • Java deployment rule sets.
  • Lambda.

It was the default version that can be downloaded from java.com from April 2012.

Java SE 8

Java 8 was released on 18 March, 2014. The codename was Spider. It had included some major features such as:

  • 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 SE 9

Java 9 was released on 21 September, 2017. It includes some additional features such as:

  • Money and Currency API.
  • Integration with JavaFX.
  • Implementation of reactive streams.
  • Concurrency Updates.
  • Java Linker
  • Automatic scaling and sizing
  • Collection
  • Streams, and many more.

JAVA SE 10

Java 10 was released on March 20, 2018, with some special features. These features are:

  • Local-variable type inference
  • Experimental Java-based JIT compiler.
  • Application class-data sharing.
  • 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
  • Consolidate the JDK forest into a single repository

Java SE 11

Java 11 was released on September 25, 2018. It includes several additional features such as:

  • Dynamic class-file constants
  • Epsilon: a no-op garbage collector
  • Local-variable syntax for lambda parameters
  • Low-overhead heap profiling
  • HTTP client (standard)
  • Transport Layer Security (TLS)
  • Flight recorder
  • a scalable low-latency garbage collector (Experimental)
  • JavaFX, Java EE, and CORBA modules have been removed
  • Deprecated the Nashorn JavaScript engine
  • Unicode 10.0.0 support.

Java SE 12

Java 12 was released on March 19, 2019. It includes several additional features such as:

  • A Low-Pause-Time Garbage Collector (Experimental)
  • Microbenchmark Suite
  • Switch Expressions (Preview)
  • JVM Constants API
  • One AArch64 Port, Not Two
  • Default CDS Archives
  • Abortable Mixed Collections for G1
  • Promptly Return Unused Committed Memory from G1

Java SE 13

Java 13 was released on September 17, 2019. It includes the following new features:

  • Dynamic CDS Archives
  • ZGC: Uncommit Unused Memory
  • Reimplement the Legacy Socket API
  • Switch Expressions
  • Text Blocks

Java SE 14

Java SE 14 was released on March 17, 2020. It includes the following new features:

  • Pattern Matching for instanceof
  • Packaging Tool
  • NUMA-Aware Memory Allocation for G1
  • JFR Event Streaming
  • Non-Volatile Mapped Byte Buffers
  • Helpful NullPointerExceptions
  • Records (Preview)
  • Switch Expressions (Standard)
  • Deprecate the Solaris and SPARC Ports
  • Remove the Concurrent Mark Sweep (CMS) Garbage Collector
  • ZGC on macOS
  • ZGC on Windows
  • Deprecate the ParallelScavenge + SerialOld GC Combination
  • Remove the Pack200 Tools and API
  • Text Blocks (Second Preview)
  • Foreign-Memory Access API (Incubator)