The Complete History of Java Programming Language
Last Updated :
10 Nov, 2025
The programming language Java was developed by James Gosling and his team at Sun Microsystems in the early 1990s. Initially the goal was to build a platform independent language for embedded devices such as set-top boxes and televisions.
After exploring C++ (which proved too heavy and too closely tied to platform dependencies), the team embarked on an entirely new project codenamed the “Green Project”.
Origin and Naming of Java
The project first used the name “Green” (internally “Greentalk” with extension .gt), then was renamed “Oak” (inspired by an oak tree outside Gosling’s office). When Sun attempted to trademark “Oak,” they discovered it was already claimed by Oak Technologies, so a further rename was needed.
In an interesting session guided by a naming consultant, the team generated dozens of candidate names. The name “Java” (after the Indonesian coffee bean) emerged as the one that cleared legal review. Although Gosling’s preferred name was “Lyric” and the team initially favoured “Silk,” “Java” became the official name.
Evolution of Java
From the outset Java was built around key design goals: robustness, portability, platform independence, high performance, and multithreading. Over the years the Java Class Library expanded from only a few hundred classes to thousands and the platform grew to support enterprise, mobile, and cloud applications.
Since the first public release of JDK 1.0, Java has undergone continual revision via the Java Community Process (JCP).
History of Java Versions
| Version | Release Date | Major Changes |
|---|
| JDK 1.0 | Jan 1996 | First official release of Java. |
|---|
| JDK 1.1 | Feb 1997 | Added inner classes, JavaBeans, JDBC, RMI. |
|---|
| J2SE 1.2 | Dec 1998 | Collections Framework, Swing GUI toolkit, JIT compiler. |
|---|
| J2SE 1.3 | May 2000 | HotSpot JVM, JNDI, Proxy classes. |
|---|
| J2SE 1.4 | Feb 2002 | Assert keyword, regex, NIO improvements. |
|---|
| Java SE 5.0 | Sep 2004 | Generics, enhanced-for loop, autoboxing, annotations. |
|---|
| Java SE 6 | Dec 2006 | Scripting support, JDBC 4.0, pluggable annotations. |
|---|
| Java SE 7 | Jul 2011 | Try-with-resources, binary literals, strings in switch. |
|---|
| Java SE 8 | Mar 2014 | Lambda expressions, Stream API, new Date-Time API. |
|---|
| Java SE 9 | Sep 2017 | Module system (Project Jigsaw). |
|---|
| Java SE 10 | Mar 2018 | Local-variable type inference (var), performance enhancements. |
|---|
| Java SE 11 (LTS) | Sep 2018 | HTTP Client API, TLS 1.3, Flight Recorder. |
|---|
| Java SE 12 | Mar 2019 | Switch expressions (preview), JVM GC improvements. |
|---|
| Java SE 13 | Sep 2019 | Text blocks, improved switch expressions. |
|---|
| Java SE 14 | Mar 2020 | Records (preview), pattern-matching for instanceof (preview). |
|---|
| Java SE 15 | Sep 2020 | Sealed classes (preview), hidden classes, Foreign-Function & Memory API (incubator). |
|---|
| Java SE 16 | Mar 2021 | Finalised records and pattern matching for switch (preview). |
|---|
| Java SE 17 (LTS) | Sep 2021 | Finalised sealed classes, improved rendering on macOS. |
|---|
| Java SE 18 | Mar 2022 | Further language and library enhancements. |
|---|
| Java SE 20 | Mar 2023 | Incubator/preview features, part of rapid-release cadence. |
|---|
| Java SE 21 (LTS) | Sep 2023 | Several previewed features from earlier versions matured. |
|---|
| Java SE 24 | Mar 2025 | Latest public release as of writing. |
|---|
Note: The release cycle shifted to a six-month cadence after Java 9. LTS versions (Long-Term Support) now include Java 8, 11, 17, 21 and upcoming ones.
Explore
Java Basics
OOP & Interfaces
Collections
Exception Handling
Java Advanced
Practice Java