{"version":"21","name":"Java 21","ga":"2023-09-19","eol":"2029-12","umbrellajsr":"396","latestversion":"21.0.11","status":"LTS","bytecode":"65.0","unicode":"15.0.0","documentation":{"notes":"https://www.oracle.com/java/technologies/javase/21u-relnotes.html","vm":"https://docs.oracle.com/javase/specs/jvms/se21/html/index.html","lang":"https://docs.oracle.com/javase/specs/jls/se21/html/index.html","api":"https://docs.oracle.com/en/java/javase/21/docs/api/","tools":"https://docs.oracle.com/en/java/javase/21/docs/specs/man/index.html"},"scm":[{"type":"git","url":"https://github.com/openjdk/jdk21u"}],"updates":[{"version":"21","tag":"jdk-21-ga","date":"2023-09-19"},{"version":"21.0.1","tag":"jdk-21.0.1-ga","date":"2023-10-13"},{"version":"21.0.2","tag":"jdk-21.0.2-ga","date":"2024-01-16"},{"version":"21.0.3","tag":"jdk-21.0.3-ga","date":"2024-04-08"},{"version":"21.0.4","tag":"jdk-21.0.4-ga","date":"2024-07-16"},{"version":"21.0.5","tag":"jdk-21.0.5-ga","date":"2024-10-11"},{"version":"21.0.6","tag":"jdk-21.0.6-ga","date":"2025-01-04"},{"version":"21.0.7","tag":"jdk-21.0.7-ga","date":"2025-04-09"},{"version":"21.0.8","tag":"jdk-21.0.8-ga","date":"2025-07-09"},{"version":"21.0.9","tag":"jdk-21.0.9-ga","date":"2025-10-13"},{"version":"21.0.10","tag":"jdk-21.0.10-ga","date":"2026-01-15"},{"version":"21.0.11","tag":"jdk-21.0.11-ga","date":"2026-04-17"}],"features":[{"title":"Generational ZGC","category":"jvm","refs":[{"type":"JEP","identifier":"439","href":"https://openjdk.java.net/jeps/439"}]},{"title":"Deprecate the Windows 32-bit x86 Port for Removal","category":"jvm","refs":[{"type":"JEP","identifier":"449","href":"https://openjdk.java.net/jeps/449"}]},{"title":"Prepare to Disallow the Dynamic Loading of Agents","category":"jvm","refs":[{"type":"JEP","identifier":"451","href":"https://openjdk.java.net/jeps/451"}]},{"title":"String Templates","category":"lang","preview":true,"revision":1,"refs":[{"type":"JEP","identifier":"430","href":"https://openjdk.java.net/jeps/430"},{"type":"AlmanacFeature","identifier":"stringtemplates","href":"https://javaalmanac.io/features/stringtemplates/"}]},{"title":"Record Patterns","category":"lang","refs":[{"type":"JEP","identifier":"440","href":"https://openjdk.java.net/jeps/440"},{"type":"AlmanacFeature","identifier":"recordpatterns","href":"https://javaalmanac.io/features/recordpatterns/"}]},{"title":"Pattern Matching for switch","category":"lang","refs":[{"type":"JEP","identifier":"441","href":"https://openjdk.java.net/jeps/441"},{"type":"AlmanacFeature","identifier":"typepatterns","href":"https://javaalmanac.io/features/typepatterns/"}]},{"title":"Unnamed Patterns and Variables","category":"lang","preview":true,"revision":1,"refs":[{"type":"JEP","identifier":"443","href":"https://openjdk.java.net/jeps/443"}]},{"title":"Unnamed Classes and Instance Main Methods","category":"lang","preview":true,"revision":1,"refs":[{"type":"JEP","identifier":"445","href":"https://openjdk.java.net/jeps/445"},{"type":"AlmanacFeature","identifier":"jep445","href":"https://javaalmanac.io/features/jep445/"}]},{"title":"Sequenced Collections","category":"api","refs":[{"type":"JEP","identifier":"431","href":"https://openjdk.java.net/jeps/431"}]},{"title":"Foreign Function & Memory API","category":"api","preview":true,"revision":3,"refs":[{"type":"JEP","identifier":"442","href":"https://openjdk.java.net/jeps/442"}]},{"title":"Virtual Threads","category":"api","refs":[{"type":"JEP","identifier":"444","href":"https://openjdk.java.net/jeps/444"},{"type":"AlmanacFeature","identifier":"virtual-threads","href":"https://javaalmanac.io/features/virtual-threads/"}]},{"title":"Scoped Values","category":"api","preview":true,"revision":1,"refs":[{"type":"JEP","identifier":"446","href":"https://openjdk.java.net/jeps/446"}]},{"title":"Vector API","category":"api","incubator":true,"revision":6,"refs":[{"type":"JEP","identifier":"448","href":"https://openjdk.java.net/jeps/448"}]},{"title":"Key Encapsulation Mechanism API","category":"api","refs":[{"type":"JEP","identifier":"452","href":"https://openjdk.java.net/jeps/452"}]},{"title":"Structured Concurrency","category":"api","preview":true,"revision":1,"refs":[{"type":"JEP","identifier":"453","href":"https://openjdk.java.net/jeps/453"}]}],"apidiffversions":["1.0","1.1","1.2","1.3","1.4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"],"vendors":[{"name":"BellSoft","url":"https://bell-sw.com/","products":[{"id":"liberica","name":"Liberica","license":"GPLv2+CE","url":"https://bell-sw.com/pages/downloads/?version=java-21","platforms":["alpine-arm64","alpine-x64","linux-arm32","linux-arm64","linux-ppc64le","linux-riscv64","linux-x86","linux-x64","macos-arm64","macos-x64","windows-arm64","windows-x86","windows-x64"],"versions":["21"],"foojaydownload":true}]},{"name":"SAP","url":"https://sapmachine.io/","products":[{"id":"sap_machine","name":"SapMachine 21","license":"GPLv2+CE","url":"https://github.com/SAP/SapMachine/releases?q=%22sapmachine-21%22","platforms":["aix-ppc64","alpine-x64","linux-arm64","linux-ppc64le","linux-x64","macos-arm64","macos-x64","windows-x64"],"versions":["21"],"foojaydownload":true}]},{"name":"Oracle","url":"https://www.oracle.com/java/","products":[{"id":"oracle","name":"Oracle JDK 21","license":"Oracle No-Fee","url":"https://www.oracle.com/java/technologies/downloads/#java21","platforms":["linux-arm64","linux-x64","macos-arm64","macos-x64","windows-x64"],"versions":["21"],"foojaydownload":true}]},{"name":"IBM","url":"https://www.ibm.com/support/pages/java-sdk-downloads","products":[{"id":"semeru","name":"Semeru Runtime Open Edition, Version 21","license":"GPLv2+CE","url":"https://developer.ibm.com/languages/java/semeru-runtimes/downloads?version=21","platforms":["aix-ppc64","linux-arm64","linux-ppc64le","linux-s390x","linux-x64","macos-arm64","macos-x64","windows-x64"],"versions":["21"],"foojaydownload":true}]},{"name":"Azul Systems","url":"https://www.azul.com/","products":[{"id":"zulu","name":"Zulu Builds of OpenJDK 21","license":"GPLv2+CE","url":"https://www.azul.com/downloads/?version=java-21-lts&show-old-builds=true#zulu","platforms":["alpine-arm64","alpine-x64","linux-arm64","linux-x64","macos-arm64","macos-x64","windows-arm64","windows-x64"],"versions":["21"],"foojaydownload":true},{"id":"prime","name":"Azul Prime","license":"Commercial","url":"https://www.azul.com/downloads/#prime","platforms":["linux-x64","linux-arm64"],"versions":["8","11","17","21"],"foojaydownload":false}]},{"name":"Microsoft","url":"https://www.microsoft.com/openjdk","products":[{"id":"microsoft","name":"Microsoft Build of OpenJDK 21","license":"GPLv2+CE","url":"https://docs.microsoft.com/en-us/java/openjdk/download","platforms":["linux-arm64","linux-x64","macos-arm64","macos-x64","windows-arm64","windows-x64"],"versions":["21"],"foojaydownload":true}]},{"name":"Amazon","url":"https://docs.aws.amazon.com/corretto/index.html","products":[{"id":"corretto","name":"Corretto 21","license":"GPLv2+CE","url":"https://docs.aws.amazon.com/corretto/latest/corretto-21-ug/downloads-list.html","platforms":["alpine-arm64","alpine-x64","linux-arm64","linux-x64","macos-arm64","macos-x64","windows-x64"],"versions":["21"],"foojaydownload":true}]},{"name":"Red Hat","url":"https://developers.redhat.com/products/openjdk/","products":[{"id":"redhat","name":"Red Hat build of OpenJDK 21","license":"GPLv2+CE","url":"https://developers.redhat.com/products/openjdk/download","platforms":["linux-x64","windows-x64"],"versions":["21"],"foojaydownload":true}]},{"name":"Adoptium","url":"https://adoptium.net/","products":[{"id":"temurin","name":"Eclipse Temurin","license":"GPLv2+CE","url":"https://adoptium.net/temurin/releases/?version=21","platforms":["aix-ppc64","alpine-arm64","alpine-x64","linux-arm64","linux-ppc64le","linux-riscv64","linux-s390x","linux-x64","macos-arm64","macos-x64","windows-arm64","windows-x64"],"versions":["21"],"foojaydownload":true}]}]}