Java Version Differences

The Java Programming Language has gone through several versions since JDK Beta as well as multiple additions of classes and packages to the standard library. Since Java 2, the evolution of the Java language has been governed by the Java Community Process (JCP). The JCP uses Java Specification Requests (JSR) to propose additions and changes to the Java Platform.

It’s hard to believe that Java JDK was first introduced in Beta form back in 1995, making Java 23 years old. The most current version of Java right now is Java SE 10, but Java SE 11 is expected to be released in September 2018, which is really just a month away. Java SE 11 should include some bug fixes as well as some interesting new features.

Below are a list of the major versions of Java with key changes identified going from the most current version of Java (SE 10) to the older version of Java (SE 5). The SE stands for Standard Edition, which is used to distinguish the base platform from the Enterprise Edition (EE). Take a look at the JRE vs JDK since it can be confusing.


Java SE 10

Release Date: March 20, 2018


Java SE 10 Features

  • 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 Handshaking
  • Heap Allocation on Alternative Memory Devices
  • Consolidate the JDK Forest into a Single Repository

Java SE 9

Release Date: September 21, 2017


Java SE 9 Features

  • Modularization of the JDK under Project Jigsaw
  • The Java Shell (jshell)
  • Ahead-of-Time Compiling
  • XML Catalogs
  • Various Concurrency Updates (Reactive Streams)
  • Variable Handles
  • The Java Linker (jlink)
  • HiDPI Graphics: Automatic scaling and sizing

Java SE 8

Release Date: March 18, 2014
CodeName: Spider


Java SE 8 Features

  • Language level support for Lambda Expressions And Streams
  • A JavaScript runtime to embed JavaScript code within applications (Project Nashorn)
  • Annotation on Java Types
  • Unsigned Integer Arithmetic
  • Repeating annotations
  • Date and Time API
  • Statically-linked JNI libraries
  • Ability to Launch JavaFX applications
  • Remove the permanent generation

Java SE 7

Release Date: July 28, 2011
CodeName: Dolphin


Java SE 7 Features

  • JVM support for dynamic languages
  • Compressed 64-bit pointers
  • Strings in switch statement
  • Binary integer literals
  • Allowing underscores in numeric literals
  • Catching multiple exception types
  • Concurrency utilities
  • New File I/O library
  • Library-level support for elliptic curve cryptography algorithms
  • New platform APIs for the graphics features
  • Upstream updates to XML and Unicode
  • Java Deployment Rulesets

Java SE 6

Release Date: December 11, 2006
CodeName: Mustang


Java SE 6 Features

  • Drop support for older Win9x versions
  • Scripting Language Support
  • Dramatic performance improvements for the core platform
  • Improved Web Service support through JAX-WS
  • Support of JDBC 4.0
  • 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
  • JVM improvements include: synchronization and compiler performance optimizations

Java SE 5

Release Date: September 30, 2004
CodeName: Tiger


Java SE 5 Features

  • Addition of Generics
  • Metadata or Annotations
  • Autoboxing or unboxing (auto converting between primitive data types)
  • Addition of Enumerations
  • Addition of varargs
  • Enhanced For Loop
  • Improved semantics of execution for multi-threaded Java programs
  • Automatic stub generation for RMI objects
  • Swing (synth)
  • The concurrency utilities
  • Scanner class for parsing data from various input streams and buffers

Add a Comment

Your email address will not be published. Required fields are marked *