Java language timeline

This page covers high level time line of evolution of Java in chronological order.

Java timeline

Java has been the one of the most used and popular language. This page covers high level time line of different versions and features introduced in each version in chronological order.

JDK 1.0 (1996)

  • Initial language, very popular

JDK1.1 (1997)

  • Inner classes, new event model

JDK 1.2, 1.3 (1998-2000)

  • No changes at language level

JDK 1.4 (2002)

  • Introduced assert keyword

Java 5 (2004)

Biggest changes to language since release 1.0. Changed the name to Java 5 instead of 1.5 to reflect maturity and stability of java.

Introduced following features:

  • Generics
  • Autoboxing/Unboxing
  • Enhanced for loop (“foreach”)
  • Type-safe enumerations
  • Varargs
  • Static import
  • Metadata

Java 6 (2006)

  • No changes at language level

Java 7 (2011)

  • Strings in switch
  • try-with-resources statement - try can now have multiple statements in the parenthesis and each statement should create an object which implements the new java.lang.AutoClosable interface. The AutoClosable interface consists of just one method.
  • Improved type inference for generic instance creation With Java 5 and 6 - Map<String, List> retVal = new HashMap<String, List>(); Java 7 - Map<String, List> retVal = new HashMap<>();
  • Improved exception handling: Multi-catch
  • Mandatory catch block when using the try statement
  • More precise rethrow
  • Binary integral literals
  • Underscores in numeric literals
  • New file system API (NIO 2.0)
  • Fork and Join framework

Java 8 (2014)

  • Lambda Expressions, a new language feature, has been introduced in this release. They enable you to treat functionality as a method argument, or code as data. Lambda expressions let you express instances of single-method interfaces (referred to as functional interfaces) more compactly.
  • Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility with code written for older versions of those interfaces.
  • Streaming API provides a mechanism for processing a set of data in various ways that can include filtering, transformation, or any other way that may be useful to an application.
  • Optional class acts as a wrapper around a value that may or may not be null, and is used to reduce the frequency of NullPointerException in applications that take advantage of it.
  • Repeating Annotations provide the ability to apply the same annotation type more than once to the same declaration or type use.
  • Type Annotations provide the ability to apply an annotation anywhere a type is used, not just on a declaration. Used with a pluggable type system, this feature enables improved type checking of your code.
  • Improved Date/Time Handling Improve Java’s built-in support and eliminate the need for an add-on library like Joda
  • Project Nashorn, a JavaScript runtime which allows developers to embed JavaScript code within applications
  • Remove the permanent generation


# Reference

Version History

Date Description
2015-08-22    Initial Version