Outre les modifications apportées au langage, la bibliothèque de classes Java a subi d'autres transformations au fil des ans, passant de quelques centaines de classes dans JDK 1.0 à plus de trois mille dans J2SE 5. De nouvelles API , telles que Swing et Java2D , ont été introduites, et de nombreuses classes et méthodes de JDK 1.0 ont été dépréciées . Seules quelques API ont été supprimées (au moins une, pour la gestion des threads, dans Java 22 ). Certains programmes permettent la conversion de programmes Java d'une version de la plateforme Java vers une version antérieure (par exemple, la rétroportation de Java 5.0 vers la version 1.4) (voir Outils de rétroportage Java ).
Concernant la feuille de route du support Java SE d'Oracle , Java SE 25 ( LTS ) est la dernière version en date de septembre 2025 (et Java 26 une version ultérieure), tandis que les versions 21, 17, 11 et 8 sont les autres versions encore prises en charge ( support à long terme – LTS), pour lesquelles les clients Oracle bénéficient du support Oracle Premier. Oracle continue de publier gratuitement des mises à jour publiques de Java 8 pour le développement et l'utilisation personnelle, et ce, indéfiniment.
Dans le cas d’ OpenJDK , un support commercial à long terme et des mises à jour logicielles gratuites sont disponibles auprès de plusieurs organisations de la communauté au sens large .
Java 26 a été publié le 17 mars 2026 et Java 25 LTS a été publié le 16 septembre 2025.
AWT )JDK 1.1
strictfpmot-clé (depuis la JVM 17, ce mot-clé est obsolète et ne doit pas être utilisé dans le nouveau code)- L' API graphique Swing a été intégrée aux classes principales.
- La JVM de Sun était équipée pour la première fois d'un compilateur JIT .
- Module d'extension Java
- Java IDL , une implémentation IDL pour l'interopérabilité CORBA
- Cadre de collections
Java 1.3 est la dernière version de Java à prendre officiellement en charge Microsoft Windows 95.
- Expressions régulières inspirées des expressions régulières Perl
- Le chaînage d'exceptions permet à une exception d'encapsuler une exception de niveau inférieur d'origine.
- Prise en charge du protocole Internet version 6 ( IPv6 )
- E/S non bloquantes (nommées NIO) (spécifiées dans JSR 51 )
- API de journalisation (spécifiée dans JSR 47 )
- API d'entrée/sortie d'images pour la lecture et l'écriture d'images aux formats JPEG et PNG.
- Analyseur XML intégré et processeur XSLT ( JAXP ) (spécifié dans JSR 5 et JSR 63 )
- Extensions intégrées de sécurité et de cryptographie ( JCE , JSSE , JAAS )
- Java Web Start inclus (Java Web Start a été publié pour la première fois en mars 2001 pour J2SE 1.3) (spécifié dans JSR 56 )
- API des préférences (
java.util.prefs)
Le support public et les mises à jour de sécurité pour Java 1.4 ont pris fin en octobre 2008. Les mises à jour de sécurité payantes pour les clients Oracle ont pris fin en février 2013.
Génériques : assure une sécurité de type statique à la compilation pour les collections et élimine le besoin de la plupart des conversions de type (spécifié par JSR 14 ). Les bibliothèques standard ont également bénéficié des améliorations suivantes : Java 5 est la dernière version de Java à prendre officiellement en charge Microsoft Windows 98 et Windows ME , tandis que Windows Vista était la version la plus récente de Windows sur laquelle Java SE 5 était pris en charge avant la fin de vie de Java 5 en octobre 2009. Java 5 Update 5 (1.5.0_05) est la dernière version de Java à fonctionner sur Windows 95 (avec Internet Explorer 5.5 installé) et Windows NT 4.0 . Java 5 a été disponible pour la première fois sur Apple Mac OS X 10.4 (Tiger) et était la version par défaut de Java installée sur Apple Mac OS X 10.5 (Leopard). Le support public et les mises à jour de sécurité pour Java 1.5 ont pris fin en novembre 2009. Les mises à jour de sécurité payantes pour les clients Oracle ont pris fin en avril 2015. Cette version a introduit un nouveau système de versionnage pour le langage Java, bien que l'ancien système de versionnage ait continué d'être utilisé pour les bibliothèques de développement : Les deux numéros de version « 1.5.0 » et « 5.0 » sont utilisés pour identifier cette version de Java 2 Platform Standard Edition. La version « 5.0 » est la version produit, tandis que la version « 1.5.0 » est la version développeur. Le numéro « 5.0 » reflète mieux le niveau de maturité, de stabilité, d'évolutivité et de sécurité de J2SE. — « Version 1.5.0 ou 5.0 ? », Notes de version de Java Cette correspondance s'est poursuivie lors des versions ultérieures (Java 6 = JDK 1.6, Java 7 = JDK 1.7, etc.). Prise en charge des langages de script ( JSR 223 ) : API générique pour une intégration étroite avec les langages de script et intégration intégrée de Mozilla JavaScript Rhino . Java 6 peut être installé sur Mac OS X 10.5 (Leopard) fonctionnant sur des machines équipées d'un processeur 64 bits (Core 2 Duo et supérieur). Java 6 est également compatible avec les machines 32 bits et 64 bits exécutant Mac OS X 10.6 (Snow Leopard). Le support de Java 6 a pris fin en février 2013, date à laquelle toutes les mises à jour publiques, y compris les correctifs de sécurité, ont été arrêtées. Oracle a publié deux mises à jour supplémentaires pour Java 6 en mars et avril 2013, corrigeant certaines failles de sécurité. Après la sortie de Java 6, Sun, puis Oracle, ont publié plusieurs mises à jour qui, sans modifier aucune API publique, ont amélioré l'utilisabilité pour l'utilisateur final ou corrigé des bogues. Cette option indique au compilateur JIT La prise en charge des langages dynamiques par la JVM , avec le nouveau Lambda (l'implémentation Java des fonctions lambda ), Jigsaw (l'implémentation Java des modules ) et une partie de Coin ont été supprimés de Java 7 et intégrés à Java 8 (à l'exception de Jigsaw , intégré à Java 9). Java 7 était la version par défaut à télécharger sur java.com d'avril 2012 jusqu'à la sortie de Java 8. Oracle a publié des mises à jour publiques trimestrielles pour la famille Java 7 jusqu'en avril 2015, date à laquelle le produit a cessé d'être disponible au public. Les mises à jour ultérieures pour JDK 7, qui se sont poursuivies jusqu'en juillet 2022, ne sont accessibles qu'aux clients disposant d'un contrat de support. un support à long terme (LTS ). Entre autres, Java 11 inclut un certain nombre de nouvelles fonctionnalités, telles que : Corrections de bugs Changements Corrections de bugs Problèmes connus Changements Corrections de bugs Fonctionnalités et options supprimées Autres notes Corrections de bugs Autres notes Corrections de bugs Autres notes Corrections de bugs Corrections de bugs Fonctionnalités et options supprimées Autres notes Corrections de bugs Autres notes Corrections de bugs Autres notes Corrections de bugs Autres notes Corrections de bugs Fonctionnalités et options supprimées Autres notes Corrections de bugs Fonctionnalités et options supprimées Autres notes Corrections de bugs Fonctionnalités et options supprimées Autres notes Corrections de bugs Autres notes Corrections de bugs Autres notes Corrections de bugs Autres notes Corrections de bugs Problèmes connus Autres notes Corrections de bugs Other notes Bug fixes Known issues Other notes Bug fixes Removed features and options Other notes Bug fixes Known issues Other notes Bug fixes Changes Bug fixes Other notesint) et les classes wrapper primitives (telles que Énumérations : le enummot-clé crée une liste ordonnée et typée de valeurs (telles que Day.MONDAY`int`, Day.TUESDAY`int`, `int`, etc.) ; auparavant, cela ne pouvait être réalisé qu’avec des entiers constants non typés ou des classes construites manuellement (modèle d’énumération typé) (spécifié par JSR 201 ).void drawtext(String... lines) ;). Dans le code appelant, un nombre quelconque de paramètres de ce type peut être utilisé ; ils sont alors placés dans un tableau à passer à la méthode, ou bien le code appelant peut passer un tableau de ce type.for each : la forsyntaxe de boucle est étendue avec une syntaxe spéciale permettant d’itérer sur chaque membre d’un tableau ou de n’importe quelle classe modèle de mémoire Java aborde les problèmes de complexité, d'efficacité et de performance des spécifications précédentes java.util.concurrentChangement de version
Mises à jour Java 6
Libérer date de sortie Points forts Java SE 6 23/12/2006 Cette version apporte de nombreuses améliorations aux services Web, aux scripts, aux bases de données, aux annotations extensibles et à la sécurité, ainsi qu'à la qualité, la compatibilité et la stabilité. JConsole est désormais officiellement pris en charge. La prise en charge de Java DB a été ajoutée. Java SE 6 Mise à jour 1HotSpot VM 10 Java SE 6 Mise à jour 5JavaScript pour faciliter le déploiement d' applets et d'applications Java Web Start . Java SE 6 Mise à jour 11 Windows Server 2008 ; améliorations des performances des applications graphiques et JavaFX Java SE 6 Mise à jour 13-miettes Garbage-First (G1) à faible temps d'attente . -XX:+DoEscapeAnalysis HotSpot d'utiliser l'analyse d'échappement pour déterminer si les objets locaux peuvent être alloués sur la pile plutôt que sur le tas .Ubuntu 8.04 LTS Desktop Edition, SLES 11, Windows 7 , Red Hat Enterprise Linux 5.3, Firefox 3.6 et VisualVM 1.2 ; Java DB mis à jour ; nombreuses améliorations de performancesJava SE 6 Mise à jour 19Red Hat Enterprise Linux 5.4 et 5.5, Oracle Enterprise Linux 4.8, 5.4 et 5.5 ; prise en charge de Google Chrome 4 ; prise en charge des indicateurs de progression de chargement personnalisés ; VisualVM 1.2.2 Java SE 6 Mise à jour 22la RFC 5746 Java SE 6 Mise à jour 23Internet Explorer 9 , Firefox 4 et Chrome 10 ; BigDecimal amélioré ; inclut une compilation « hiérarchisée » dans la VM serveur, ce qui lui permet de démarrer aussi rapidement que la VM cliente, tout en atteignant de meilleures performances maximales (cette fonctionnalité est activée en spécifiant -serverdes -XX:+TieredCompilationoptions de commande).Java SE 6 Mise à jour 26Red Hat Enterprise Linux 6 Java SE 6 Mise à jour 31Windows 2000 Java SE 6 Update 32Solaris 10 n° 54 ; 25 correctifs de sécurité Java SE 6 Mise à jour 81 15 juillet 2014 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 11 correctifs de sécurité Java SE 6 Mise à jour 85 16 octobre 2014 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 18 correctifs de sécurité Java SE 6 Mise à jour 91 21/01/2015 Les versions Linux x64 et Windows i586 sont disponibles en tant qu'implémentation de référence Java SE 6. Les autres versions sont uniquement disponibles via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 15 correctifs de sécurité Java SE 6 Mise à jour 95 14 avril 2015 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 14 correctifs de sécurité Java SE 6 Mise à jour 101 15/07/2015 Non disponible publiquement, uniquement disponible via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 18 correctifs de sécurité La certification pour IE 10 et 11 a été introduite dans la version 1.6.0_101 Java SE 6 Mise à jour 105 2015-10-20 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 17 correctifs de sécurité Java SE 6 Mise à jour 111 2016-01-20 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 13 correctifs de sécurité Java SE 6 Mise à jour 113 05/02/2016 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 1 correctif de sécurité Java SE 6 Mise à jour 115 21 avril 2016 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 8 correctifs de sécurité Java SE 6 Mise à jour 121 19/07/2016 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 15 correctifs de sécurité Java SE 6 Mise à jour 131 18 octobre 2016 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 13 correctifs de sécurité Java SE 6 Mise à jour 141 17 janvier 2017 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 17 correctifs de sécurité Java SE 6 Mise à jour 151 18 avril 2017 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 10 correctifs de sécurité Java SE 6 Mise à jour 161 18 juillet 2017 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 5 correctifs de sécurité Java SE 6 Mise à jour 171 2017-10-20 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 7 correctifs de sécurité Java SE 6 Mise à jour 181 16 janvier 2018 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 12 correctifs de sécurité Java SE 6 Mise à jour 191 17 avril 2018 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 7 correctifs de sécurité Java SE 6 Mise à jour 201 17/07/2018 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 3 correctifs de sécurité Java SE 6 Mise à jour 211 18 octobre 2018 Non disponible publiquement, disponible uniquement via le programme de support Java SE et dans le groupe de correctifs recommandés de Solaris 10 ; 8 correctifs de sécurité invokedynamicbytecode sous JSR-292, fait suite aux travaux de prototypage actuellement menés sur la machine virtuelle multilingue.-XX:+UseCompressedOops) <>java.nio.file[ java.nio.file.attributejava.nio.file.spiMises à jour de Java 7
Mises à jour Java 11
Libérer date de sortie Points forts Java SE 11 25/09/2018 Version initiale Java SE 11.0.1 16 octobre 2018 Changements Java SE 11.0.2 15 janvier 2019 Problèmes connus Java SE 11.0.3 16 avril 2019 Nouvelles fonctionnalités Java SE 11.0.4 16/07/2019 Nouvelles fonctionnalités Java SE 11.0.5 15 octobre 2019 Nouvelles fonctionnalités Java SE 11.0.6 14 janvier 2020 Nouvelles fonctionnalités Java SE 11.0.7 14 avril 2020 Nouvelles fonctionnalités Java SE 11.0.8 14 juillet 2020 Nouvelles fonctionnalités Java SE 11.0.9 2020-10-20 Nouvelles fonctionnalités Java SE 11.0.10 19 janvier 2021 Nouvelles fonctionnalités Java SE 11.0.11 2021-04-20 Nouvelles fonctionnalités Java SE 11.0.12 2021-07-20 Nouvelles fonctionnalités Java SE 11.0.13 19 octobre 2021 Nouvelles fonctionnalités Java SE 11.0.14 18 janvier 2022 Nouvelles fonctionnalités Java SE 11.0.15 19 avril 2022 Nouvelles fonctionnalités Java SE 11.0.16 19/07/2022 Nouvelles fonctionnalités Java SE 11.0.16.1 18 août 2022 Changements Java SE 11.0.17 18 octobre 2022 Nouvelles fonctionnalités Java SE 11.0.18 17 janvier 2023 Nouvelles fonctionnalités Java SE 11.0.19 2023-04-18 New features Java SE 11.0.20 2023-07-18 New features Java SE 11.0.21 2023-10-17 New features Java SE 11.0.22 2024-01-16 New features Java SE 11.0.23 2024-04-16 Java SE 11.0.24 2024-07-16 Java SE 11.0.25 2024-10-15 Java SE 11.0.26 2025-01-21 Java SE 11.0.27 2025-04-15 Java SE 11.0.28 2025-07-15 Java SE 11.0.29 2025-10-21 Release Release date Highlights Java SE 12 2019-03-19 Initial release Java SE 12.0.1 2019-04-16 Known issues Java SE 12.0.2 2019-07-16 Removed features and options
Java 13 updates
| Release | Release date | Highlights |
|---|---|---|
| Java SE 13 | 2019-09-17 | Initial release |
| Java SE 13.0.1 | 2019-10-15 | Other notes
|
| Java SE 13.0.2 | 2020-01-14 | Other notes
Bug fixes
|
- 2 bug fixes
- Removal of Comodo Root CA Certificate (security-libs/java.security)
- Removal of DocuSign Root CA Certificate (security-libs/java.security)
Other notes
- Better Listing of Arrays (core-libs/java.util:collections)
- Default SSLEngine Should Create in Server Role (security-libs/javax.net.ssl)
- Improved Serialization Handling (core-libs/java.io:serialization)
Bug fixes
- 8 bug fixes
multi-line string literals (aka Text Blocks). The Shenandoah and Z garbage collectors (latter sometimes abbreviated ZGC) are now ready for use in production (i.e. no longer marked experimental). Support for Oracle's Solaris operating system (and SPARC CPUs) is dropped (while still available in e.g. Java 11). The Nashorn JavaScript Engine is removed. Also removed some root CA certificates.
- sum types. They work well with other recent features like records, switch expressions, and pattern matching for instance-of. They all form part of a system for "Pattern matching in Java" first discussed by
Table of Java 15 updates Release Release date Highlights Java SE 15 2020-09-15 Initial release Java SE 15.0.1 2020-10-20 New features - Improve Certificate Chain Handling (security-libs/javax.net.ssl)
Other notes
- Added Property to Control LDAP Authentication Mechanisms Allowed to Authenticate Over Clear Connections (core-libs/javax.naming)
- Added 3 SSL Corporation Root CA Certificates (security-libs/java.security)
- Added Entrust Root Certification Authority – G4 certificate (security-libs/java.security)
- Enhanced Support of Proxy Class (core-libs/java.io:serialization)
Bug fixes
- 8 bug fixes
Java SE 15.0.2 2021-01-19 Other notes - JDK time-zone data upgraded to tzdata2020d (core-libs/java.time)
- JDK time-zone data upgraded to tzdata2020c (core-libs/java.time)
- US/Pacific-New Zone Name Removed as Part of tzdata2020b (core-libs/java.time)
Bug fixes
- 24 bug fixes
Ahead-of-Time compilation
(and Graal JIT) options. The Java implementation itself was and is still written in C++, while as of Java 16, more recent C++14 (but still not e.g. C++17 or C++20) is allowed. The code was also moved to GitHub, dropping Mercurial as the source control system.
Java 17 updates
| Release | Release date | Highlights |
|---|---|---|
| Java SE 17 | 2021-09-14 | Initial release |
| Java SE 17.0.1 | 2021-10-19 | Removed features and options
Other notes
Bug fixes
|
| Java SE 17.0.2 | 2022-01-18 | Removed features and options
Other notes
Bug fixes
|
| Java SE 17.0.3 | 2022-04-19 | New features
Other notes
Bug fixes
|
| Java SE 17.0.3.1 | 2022-05-02 | Changes
Bug fixes
|
| Java SE 17.0.4 | 2022-07-19 | New features
Other notes
Bug fixes
|
| Java SE 17.0.4.1 | 2022-08-18 | Changes
|
| Java SE 17.0.5 | 2022-10-18 | New features
Other notes
Bug fixes
|
| Java SE 17.0.6 | 2023-01-17 | New features
Known issues
Other notes
Bug fixes
|
| Java SE 17.0.7 | 2023-04-18 | New features
Other notes
Bug fixes
|
| Java SE 17.0.8 | 2023-07-18 | New features
Known issues
Other notes
Bug fixes
|
| Java SE 17.0.9 | 2023-10-17 | New features
Removed features and options
Other notes
Bug fixes
|
| Java SE 17.0.10 | 2024-01-16 | New features
Known issues
Other notes
Bug fixes
|
| Java SE 17.0.11 | 2024-04-16 | |
| Java SE 17.0.12 | 2024-07-16 | |
| Java SE 17.0.13 | 2024-10-15 | |
| Java SE 17.0.14 | 2025-01-21 | |
| Java SE 17.0.15 | 2025-04-15 | |
| Java SE 17.0.16 | 2025-07-15 | |
| Java SE 17.0.17 | 2025-10-21 |
Other notes Bug fixes Bug fixes Other notes Bug fixes Bug fixes Other notes Bug fixes Bug fixes Known issues Other notes Bug fixes 32-bit version of Java for Windows on x86 was deprecated for removal with this release. The following JEPs were added, including eight JEPs that graduated from the incubating and preview stages, compared to Java 20 which only had previewing and incubating JEPs. Java 21 introduces features first previewed in Java 17 (pattern matching for switch statements) and Java 19 (record patterns). All JEPs added with Java 21 include the following:Release Release date Highlights Java SE 18 2022-03-22 Initial release Java SE 18.0.1 2022-04-19 New features Java SE 18.0.1.1 2022-05-02 core-libs/java.io Java SE 18.0.2 2022-07-19 Removed features and options Java SE 18.0.2.1 2022-08-18 Changes Release Release date Highlights Java SE 19 2022-09-20 Initial release Java SE 19.0.1 2022-10-18 Other notes Java SE 19.0.2 2023-01-17 New features Release Release date Highlights Java SE 20 2023-03-21 Initial release Java SE 20.0.1 2023-04-18 Other notes Java SE 20.0.2 2023-07-18 New features
instead of:
Java 21 updates
| Release | Release date | Highlights |
|---|---|---|
| Java SE 21 | 2023-09-19 | Initial release |
| Java SE 21.0.1 | 2023-10-17 | Other notes
Bug fixes
|
| Java SE 21.0.2 | 2024-01-16 | New features
Known issues
Issues fixed
Other notes
Bug fixes
|
| Java SE 21.0.3 | 2024-04-16 | New features
Known issues
Other notes
Updates to Third Party Libraries
Bug fixes
|
| Java SE 21.0.4 | 2024-07-16 | |
| Java SE 21.0.5 | 2024-10-15 | |
| Java SE 21.0.6 | 2025-01-21 | |
| Java SE 21.0.7 | 2025-04-15 | |
| Java SE 21.0.8 | 2025-07-25 | |
| Java SE 21.0.9 | 2025-10-21 |
Project Lilliput)
Future features
- Project Valhalla: Value classes, whose objects lack identity, but can in certain cases get an improved memory layout (with less indirection), or have their allocation optimized away entirely.
- Project Panama:
- Improved interoperability with native code, to enable Java source code to call functions and use data types from other languages, in a way that is easier and has better performance than today (this part of Project Panama is getting stabilized in Java 22 under JEP 454: Foreign Function & Memory API).
- Vector API, a portable and relatively low-level abstraction layer for SIMD programming. Its stabilization is dependent on Project Valhalla.
- Project Lilliput: Reduce the size of Java object headers. First down to 64 bits, and then down to 32 bits.
- Reducing startup time and warm-up time (time to peak performance) in JIT mode:
- Project CRaC enables making snapshots of whole JVM (together with the running application) and restoring it with necessary adjustments (reopening files, sockets, etc).
- Project Leyden, among other things, will allow partial or (in the long term) full AOT compiling, reducing overall dynamism (by adopting so called "closed-world constraints") to reduce dynamic compiling overhead.
- Project Babylon aims to extend the Java language's reach to alternative programming models with an enhancement to its reflective programming abilities, called code reflection (i.e., reflection over code itself). The stated main goal is to run Java code on GPUs, with SQL and other programming models as secondary targets.
Implementations
The officially supported Java platform, first developed at Sun and now stewarded by Oracle, is Java SE. Releases are based on the OpenJDK project, a free and open-source project with an open development model. Other Java implementations exist, however—in part due to Java's early history as proprietary software. In contrast, some implementations were created to offer some benefits over the standard implementation, often the result of some area of academic or corporate-sponsored research. Many Linux distributions include builds of OpenJDK through the IcedTea project started by Red Hat, which provides a more straightforward build and integration environment.
Visual J++ and the Microsoft Java Virtual Machine were created as incompatible implementations. After the Sun v. Microsoft lawsuit, Microsoft abandoned it and began work on the .NET platform. In 2021, Microsoft started distributing compatible "Microsoft Build of OpenJDK" for Java 11 first then also for Java 17. Their builds support not only Windows, but also Linux and macOS.
Other proprietary Java implementations are available, such as Azul's Zing. Azul offers certified open source OpenJDK builds under the Zulu moniker.
Prior to the release of OpenJDK, while Sun's implementation was still proprietary, the GNU Classpath project was created to provide a free and open-source implementation of the Java platform. Since the release of JDK 7, when OpenJDK became the official reference implementation, the original motivation for the GNU Classpath project almost completely disappeared, and its last release was in 2012.
The Apache Harmony project was started shortly before the release of OpenJDK. After Sun's initial source code release, the Harmony project continued, working to provide an implementation under a lax license, in contrast to the protective license chosen for OpenJDK. Google later developed Android and released it under a lax license. Android incorporated parts of the Harmony project, supplemented with Google's own Dalvik virtual machine and ART. Apache Harmony has since been retired, and Google has switched its Harmony components with equivalent ones from OpenJDK.
Both Jikes and Jikes RVM are open-source research projects that IBM developed.
Several other implementations exist that started as proprietary software, but are now open source. IBM initially developed OpenJ9 as the proprietary J9, but has since relicensed the project and donated it to the Eclipse Foundation. JRockit is a proprietary implementation that was acquired by Oracle and incorporated into subsequent OpenJDK versions.
Most commonly used implementations in 2025
Amazon developed Corretto, a no-cost, multiplatform, production-ready distribution of OpenJDK with long-term support that includes performance enhancements and security fixes. Corretto is certified as compatible with the Java SE standard and is used internally at Amazon for many production services.
The Eclipse Temurin project, formerly known as AdoptOpenJDK, provides prebuilt OpenJDK binaries from a fully open source build farm. The project transitioned to the Eclipse Foundation in 2021 as part of the Adoptium Working Group, which ensures high-quality, vendor-neutral Java runtime distributions.
SAP's downstream distribution of OpenJDK, optimized for SAP applications and deployments. It provides both short-term and long-term support releases aligned with OpenJDK's release schedule. Alibaba Dragonwell is a downstream version of OpenJDK with some in-house optimizations. It includes enhancements in startup performance, footprint, and throughput. GraalVM represents a significant departure from traditional Java implementations. Developed by Oracle Labs, it provides a polyglot virtual machine supporting multiple languages beyond Java, including JavaScript, Python, Ruby, and R. GraalVM includes an advanced just-in-time compiler written in Java and supports ahead-of-time compilation for creating native executables, substantially reducing startup time and memory footprint. The Red Hat build of OpenJDK is Red Hat's supported distribution of OpenJDK for Red Hat Enterprise Linux and Windows, providing long-term support and regular updates as part of Red Hat's subscription offerings. The Semeru Runtime, based on the Eclipse OpenJ9 JVM and OpenJDK class libraries, is IBM's no-cost Java runtime optimized for cloud deployments. It offers improved startup time, smaller memory footprint, and better throughput compared to HotSpot-based implementations.