Java is a programming language and computing platform first released by Sun Microsystems in 1995

  • Java 1.0 (January 1996):
    • Initial release of Java, introducing the Java programming language and core libraries.
    • Key features include platform independence, object-oriented programming, and a robust security model.
  • Java 1.1 (February 1997):
    • Inner classes
    • JavaBeans,
    • changes to the AWT event model.
  • Java 2 (December 1998):
    • The first major update to Java, which included the introduction of the J2SE (Java 2 Standard Edition)
    • J2EE (Java 2 Enterprise Edition) platforms.
    • Renamed as “Java 2” to distinguish it from the enterprise-focused Java EE.
    • Introduced the Swing GUI toolkit
    • the Collections framework
    • Java Naming and Directory Interface (JNDI)
    • Java Plug-in.
  • Java 3 (2000):
    • Introduced the HotSpot JVM
    • Java Naming and Directory Interface (JNDI)
  • Java 4 (2002):
    • Introduced the Java Print Service
    • Java Web Start feature.
  • Java 5 (2004):
    • Introduced generics
    • annotations
    • autoboxing and unboxing
    • the enhanced for loop
    • Enumerations
    • Var Args
  • Java 6 (2006):
    • improved the performance of the JIT compiler
    • Added scripting support with the introduction of the Java Compiler API, Scripting API, and the inclusion of the Rhino JavaScript engine.
  • Java 7 (2011):
    • Introduced support for type inference with the “diamond operator”
    • improved exception handling
    • support for the new file system API.
  • Java 8 (2014):
    • Lambda expressions
    • Stream API for functional-style operations on collections
    • Date and Time API (java.time package)
    • Default and static methods in interfaces
    • Nashorn JavaScript engine
    • PermGen space replaced with Metaspace
  • Java 9 (2017):
    • Module system (Project Jigsaw)
    • REPL (JShell)
    • Reactive Streams API
    • Enhanced Process API
    • HTTP/2 support
    • Various JVM improvements
  • Java 10 (2018):
    • Local variable type inference with var keyword
    • Enhanced garbage collection
    • Application class-data sharing
    • Experimental Java-based Just-In-Time (JIT) compiler (GraalVM)
    • the Local-Variable Type Inference
    • the Garbage-Collector Interface,
    • the Thread-Local Handshakes.
  • Java 11 (2018):
    • Introduced the Local-Variable Syntax for Lambda Parameters
    • Remove the Java EE and CORBA modules.
    • Long-term support (LTS) release
    • Removed Java EE modules (moved to Jakarta EE)
    • Introduced the Java Platform Module System (JPMS)
    • HTTP Client API
    • Unicode 10 support
  • Java 12 (2019):
    • the switch expressions
    • the JVM Constants API.
    • Added switch expressions (preview feature)
    • Compact Number Formatting
    • New GC algorithm (Shenandoah
  • Java 13 (2019):
    • Added text blocks (preview feature)
    • Switch expressions (preview feature)
    • Dynamic CDS Archives
  • Java 14 (2020):
    • Added records (preview feature)
    • Pattern matching for instanceof (preview feature)
    • Switch expressions (standard feature)
    • Text blocks (standard feature)
  • Java 15 (2021)
    • Added sealed classes (preview feature)
    • Text blocks (standard feature)
    • Hidden classes
    • ZGC (Garbage Collector) enhancements
  • Java 16 (2021) :
    • Added records (standard feature)
    • Pattern matching for instanceof (standard feature)
    • Unix-domain socket channels
    • Foreign function and memory API (incubator feature)
  • Java 17 (Java SE 17) (September 2021):
    • Added Sealed Classes (standard feature)
    • Pattern matching for switch (standard feature)
    • Foreign function and memory API (standard feature)
    • Enhanced Pseudo-Random Number Generators
    • Strong encapsulation of JDK internals