1996 – 2026
Java Versions
Every public release of Java — Java 1.0 in January 1996 through Java 26 in March 2026 — with LTS status, Oracle and third-party end-of-life dates, and the major changes per version. Plus the Sun launch, the JCP, the Oracle acquisition, the API lawsuit, the OpenJDK split, the six-month cadence shift, GraalVM, and virtual threads.
The 1995 launch and Sun Microsystems
Java started as the Green Project inside Sun Microsystems in December 1990, led by James Gosling, Mike Sheridan, and Patrick Naughton. The brief: design a programming environment for next-generation consumer electronics — set-top boxes, interactive television, smart appliances — that would survive the multi-decade life of consumer hardware. Gosling's first cut was a language called Oak, named after a tree outside his office window.
The set-top box market never materialized. By 1994 the team had repurposed the runtime for the emerging World Wide Web, betting that small bytecode-compiled "applets" embedded in HTML pages would be Java's killer app. The HotJava browser, released in May 1995, demonstrated the idea. Netscape Navigator 2.0 shipped a Java runtime in December 1995 — the moment Java became real to the industry. Java 1.0 went GA on January 23, 1996.
"Write once, run anywhere" became Sun's tagline and a generational positioning bet against Microsoft's Win32. The intermediate Java bytecode abstraction, JIT compilation, and a managed memory model were the mechanisms; the real product was platform independence at a moment when "your Mac couldn't run your dad's PC software" was a structural fact. Java's ascent paralleled Linux's, and not by accident — both bet on platform-independence in the era when Microsoft's Win32 lock-in looked permanent.
The Java Community Process
The Java Community Process (JCP) was established by Sun in December 1998 as the formal mechanism for evolving the Java specification. Specifications became JSRs (Java Specification Requests); each JSR went through community review with a designated Expert Group. Sun retained final authority through the spec lead role on every Java SE JSR.
Notable JSRs over the years: JSR 14 (Generics, eventually shipped in Java 5), JSR 175 (Annotations), JSR 220 (EJB 3.0), JSR 310 (the new date/time API in Java 8), JSR 335 (Lambdas in Java 8), JSR 376 (Modules in Java 9). After Oracle's acquisition, Java SE moved most of its evolution into JEPs (JDK Enhancement Proposals) on OpenJDK, with the JCP continuing to formally bless the Java SE specification post-fact. Java EE evolution moved out of the JCP entirely with the Eclipse Foundation handoff in 2017 (see "Jakarta EE" below).
Sun v. Microsoft (1997–2001)
Microsoft licensed Java from Sun in March 1996 and shipped its own Java implementation in Windows. The licensed implementation diverged: Microsoft added Windows-specific extensions (J/Direct, RNI) and omitted parts of the Java spec required for portability. Sun sued in October 1997, alleging breach of the license agreement and unfair business practices. After a preliminary injunction in November 1998 and several years of litigation, the case settled in January 2001; Microsoft agreed to pay $20 million and stopped distributing its Java implementation in Windows. A separate antitrust settlement in 2004 had Microsoft pay an additional $1.6 billion.
The episode is the reason Microsoft pivoted to creating its own competing platform — .NET, announced in mid-2000 and shipping as 1.0 in February 2002 — rather than continuing to license Java. The C# language explicitly took inspiration from Java while diverging on generics (reified instead of erased), value types, properties, and other features Anders Hejlsberg had been advocating for at Borland. (Cross-link: .NET Versions.)
The Oracle acquisition (April 2009 / January 2010)
Oracle announced its acquisition of Sun Microsystems for $7.4 billion on April 20, 2009. The deal closed January 27, 2010 after EU competition review. Oracle inherited Java, Solaris, ZFS, MySQL (Sun had bought MySQL AB the year before), and Sun's hardware business. For Java specifically, the acquisition consolidated a runtime that had been quietly funded by Sun for fifteen years under a much more aggressive owner.
The early years were rocky. Java 7 had been Sun's planned 2008 release; it didn't ship until July 2011, eighteen months after Oracle closed. James Gosling left Oracle in April 2010, two and a half months after the close. The high-profile Oracle v. Google Java API copyright suit was filed August 12, 2010 (see below). Several members of the original Sun Java team left for Google, Twitter, and elsewhere. The community read the early period as Oracle squeezing every monetization angle — rebrandings, support-contract pushes, the 2018 commercial-license pivot.
From Java 9 (2017) onward the picture stabilized. Mark Reinhold's six-month cadence, the open development of OpenJDK on GitHub, the 2021 NFTC license that returned a free Oracle JDK for production use, the funding of Project Loom and Panama, and the multi-vendor OpenJDK ecosystem (Adoptium, Corretto, Microsoft, Red Hat) collectively produced the most active period of Java language and platform evolution since the J2SE 1.2 / 5 era.
Oracle v. Google — the Java API lawsuit (2010–2021)
Oracle America, Inc. v. Google LLC was filed on August 12, 2010, eight months after Oracle's acquisition of Sun closed. Oracle alleged that Android — which had reimplemented 37 Java SE API packages without a license — infringed Oracle's copyrights and patents in the Java APIs. The patent claims faded early; the copyright fight became one of the longest-running and most consequential intellectual-property cases in software history.
Eleven years, two trials, two Federal Circuit appeals, and a global pandemic later, the U.S. Supreme Court ruled 6–2 on April 5, 2021 that Google's reimplementation of the API declarations qualified as fair use. The Court's opinion deliberately sidestepped whether APIs are copyrightable in the first place — a question the industry had been desperate to settle — and ruled narrowly on the fair-use question.
The ruling validated a generation of clean-room API reimplementations (Wine, ReactOS, the entire Linux ABI compatibility story) and removed an existential cloud over open-source software. For Java specifically, it closed an eleven-year overhang on the entire platform's first decade. The Java-to-Kotlin shift on the Android side — Google announced first-class Kotlin support at I/O 2017 — started years before the ruling. Cross-link to the Android version page's Oracle v. Google section for the parallel platform-side narrative.
OpenJDK — the open-source pivot
Sun open-sourced Java under GPL v2 in November 2006 at JavaOne, with a Classpath Exception added shortly after to make the runtime safe to embed in proprietary applications. The reference implementation became OpenJDK; Sun's commercial JDK and OpenJDK were essentially the same code from Java 7 onward. The decision was driven partly by Linux distributions: Red Hat, Debian, and Ubuntu had been unable to ship Sun JDK for years because of its proprietary license, and the gap had given GNU Classpath (a clean-room reimplementation, started in 1998) momentum it shouldn't have needed.
The 2018 dust-up around "Oracle JDK is now paid" was a licensing change to the Oracle-branded JDK distribution, not to OpenJDK itself; OpenJDK has remained GPL+CE throughout. Oracle reversed the production-charging posture in 2021 with the No-Fee Terms and Conditions (NFTC) license that ships with Java 17 and later, returning the Oracle JDK to free for production use. The episode is the reason most cloud and enterprise deployments now standardize on a non-Oracle distribution — Adoptium Temurin, Amazon Corretto, Azul Zulu, Microsoft Build of OpenJDK — even though the Oracle JDK is once again free.
The six-month cadence (September 2017–)
Java 9 shipped in September 2017, three years late from the original 2014 plan. The delay was driven by Project Jigsaw — the JDK module system — which was contentious enough in the community to delay the entire release while it was reworked. Mark Reinhold, the chief architect of the Java Platform Group, used the post-mortem to make a structural change: time-boxed releases every six months instead of feature-driven multi-year cycles, with every fourth release designated LTS for enterprise customers who couldn't or wouldn't upgrade twice a year.
The cadence shipped its first release with Java 10 in March 2018 and has held since. It has been the single most consequential structural change to Java since the platform launched. The benefits: features that are ready ship when they're ready, instead of waiting on a release-blocker; previews and incubators let the community try features at scale before they're set in stone; the JDK can deprecate and remove old code on a predictable schedule. The downsides: enterprise customers who pin to LTS are perpetually two to four years behind the cutting edge, and the "what JDK should I use?" question has become substantially more nuanced.
LTS releases under the cadence: Java 11 (September 2018), Java 17 (September 2021), Java 21 (September 2023), Java 25 (September 2025), and Java 29 (planned September 2027). Each LTS gets five years of Oracle Premier support and eight years of Oracle Extended (paid). Vendor distributions typically extend free public updates further on each LTS — Corretto and Temurin have the longest published roadmaps.
GraalVM
GraalVM began as a research project at Oracle Labs around 2011 and shipped 1.0 in May 2018. Two pieces matter: the Graal JIT compiler (an alternative HotSpot JIT written in Java) and native-image (an ahead-of-time compiler that produces standalone executables with sub-100ms cold-start times). The native-image story is the Java answer to Go and Rust on serverless and microservice deployment ergonomics — small binaries, fast startup, low memory footprint — while preserving the Java language and BCL developer experience. Spring Boot, Quarkus, Helidon, and Micronaut all support native-image as a first-class deployment path. GraalVM moved to the Universal Permissive License in 2024, returning it to fully permissive open source for redistribution.
Project Loom — virtual threads
Project Loom, started by Ron Pressler at Oracle in 2017, set out to fix a structural problem in Java's concurrency model: thread-per-request code was easy to write but expensive to run, while async/reactive code was efficient but hard to read, debug, and instrument. Loom's answer was virtual threads — user-mode threads scheduled by the JVM on a small pool of OS carrier threads — that preserve the synchronous, thread-per-request programming model without the resource costs.
Virtual threads entered preview in Java 19 (September 2022) and graduated to stable in Java 21 LTS (September 2023). The release that Java engineers had been waiting on for a decade. The associated work — structured concurrency, scoped values — continued to mature through Java 22, 23, 24, and 25. openjdk.org/projects/loom remains the project hub.
Project Panama — foreign function & memory
Project Panama, started in 2014, set out to replace JNI — the 1996-era C bridge that had stewed in its own complexity for two decades — with a modern, safe, performant native interop story. The deliverables are the Foreign Function & Memory API (call native code, manage off-heap memory) and the Vector API (SIMD intrinsics from Java code). The Foreign Function & Memory API graduated in Java 22 (March 2024); the Vector API has remained in incubator longer than any feature in Java history while the Valhalla value-type story catches up. openjdk.org/projects/panama.
Project Valhalla — value types
Project Valhalla, started by Brian Goetz around 2014, is the long-running effort to add value types (immutable, identity-less, flat-laid-out structs) to Java. The goal is the same as records but at the runtime level: avoid the boxed-object overhead for things that should be plain data. The project's complexity is largely about generics — making List<Point> store flat Point values rather than boxed Point references requires extending the type system in compatible ways. Twelve years in, Valhalla is still incubating; pieces have shipped (records, sealed classes, identity vs. value distinction work). openjdk.org/projects/valhalla.
Java EE → Jakarta EE
Java's enterprise edition — Java 2 Enterprise Edition (J2EE) in 1999, Java EE from 2006 — was always a distinct product from Java SE: a set of additional specifications (Servlet, JSP, EJB, JMS, JPA, CDI, JAX-RS, etc.) implemented by application servers like JBoss, WebSphere, WebLogic, GlassFish, and Payara. In September 2017, Oracle announced it would hand Java EE off to the Eclipse Foundation. The renamed project became Jakarta EE in 2018 (Oracle retained the "Java" trademark for the SE side). The javax.* package namespace was renamed to jakarta.* in Jakarta EE 9 (December 2020) — a once-in-a-platform breaking change that took most of the ecosystem several years to absorb. Jakarta EE 11 shipped in 2024; the jakarta.ee roadmap continues independent of Java SE's release cadence.
People who actually shaped Java
Sun era: James Gosling (Oak / Java's primary designer; left Oracle April 2010), Patrick Naughton and Mike Sheridan (co-founders of the Green Project), Bill Joy (Sun co-founder; long-time advocate inside Sun for a portable runtime), Guy Steele (JLS co-author, language design), Arthur van Hoff (HotJava browser, applets era), Joshua Bloch (Collections framework, Effective Java, BigInteger; later left Sun for Google), Doug Lea (java.util.concurrent; SUNY Oswego professor; wrote the concurrency library Sun adopted into the JDK in Java 5).
Modern OpenJDK team: Mark Reinhold (chief architect of the Java Platform Group; Mr. JEP), Brian Goetz (Java Language Architect; Java Concurrency in Practice; lead of Project Valhalla), Ron Pressler (Project Loom lead), Maurizio Cimadamore (Project Panama lead), Aleksey Shipilëv (long-time JVM and GC engineer; Shenandoah lineage; now widely-cited industry benchmarker), Stuart Marks (collections, JEP author).
Distribution / community: Stephen Colebourne (Joda-Time, java.time / JSR-310), Martijn Verburg (London Java Community, Adoptium founding contributor), Tim Ellison (IBM J9 / Eclipse OpenJ9 lineage), Gil Tene (Azul co-founder; advocate for low-pause GC), Andrew Haley (Red Hat OpenJDK lead). Public face: Venkat Subramaniam, Trisha Gee, Nicolai Parlog, Mala Gupta, and the JavaOne / Devoxx speaker rotation.