JEP 425 Virtual Threads (Preview)
Introduce virtual threads to the Java Platform. Virtual threads are lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications. This is a preview API.
JEP 428 Structured Concurrency (Incubator)
Simplify multithreaded programming by introducing an API for structured concurrency. Structured concurrency treats multiple tasks running in different threads as a single unit of work, thereby streamlining error handling and cancellation, improving reliability, and enhancing observability. This is an incubating API.
JEP 405 Record Patterns (Preview)
Enhance the Java programming language with record patterns to deconstruct record values. Record patterns and type patterns can be nested to enable a powerful, declarative, and composable form of data navigation and processing. This is a preview language feature.
JEP 427 Pattern Matching for switch (Third Preview)
Enhance the Java programming language with pattern matching for switch expressions and statements. Extending pattern matching to switch allows an expression to be tested against a number of patterns, each with a specific action, so that complex data-oriented queries can be expressed concisely and safely. This is a preview language feature.
JEP 424 Foreign Function & Memory API (Preview)
Introduce an API by which Java programs can interoperate with code and data outside of the Java runtime. By efficiently invoking foreign functions (i.e., code outside the JVM), and by safely accessing foreign memory (i.e., memory not managed by the JVM), the API enables Java programs to call native libraries and process native data without the brittleness and danger of JNI. This is a preview API.
JEP 426 Vector API (Fourth Incubator)
Introduce an API to express vector computations that reliably compile at runtime to optimal vector instructions on supported CPU architectures, thus achieving performance superior to equivalent scalar computations.
core-libs/java.lang
Support Unicode 14.0 (JDK-8268081)
New system properties for System.out
and System.err
(JDK-8283620)
stdout.encoding
stderr.encoding
core-libs/java.net
HTTPS Channel Binding Support for Java GSS/Kerberos (JDK-8279842)
core-libs/java.time
Additional Date-Time Formats (JDK-8176706)
core-libs/java.util:collections
New Methods to Create Preallocated HashMaps and HashSets (JDK-8186958)
hotspot/compiler
Support for PAC-RET Protection on Linux/AArch64 (JDK-8277204)
hotspot/runtime
Automatic Generation of the CDS Archive (JDK-8261455)
security-libs/java.security
Windows KeyStore Updated to Include Access to the Local Machine Location (JDK-6782021)
Break Up SEQUENCE in X509Certificate::getSubjectAlternativeNames and X509Certificate::getIssuerAlternativeNames in otherName (JDK-8277976)
security-libs/javax.net.ssl
(D)TLS Signature Schemes (JDK-8280494)
security-libs/jdk.security
Add a -providerPath Option to jarsigner (JDK-8281175)
security-libs/org.ietf.jgss:krb5
New Options for ktab to Provide Non-default Salt (JDK-8279064)
xml/jaxp
New XML Processing Limits (JDK-8270504 (not public))
hotspot/gc
Removal of Diagnostic Flag GCParallelVerificationEnabled (JDK-8286304)
security-libs/javax.net.ssl
Remove Finalizer Implementation in SSLSocketImpl (JDK-8212136)
security-libs/javax.security
Remove the Alternate ThreadLocal Implementation of the Subject::current and Subject::callAs APIs (JDK-8282676 (not public))
core-libs/java.lang
java.lang.ThreadGroup Is Degraded (JDK-8284161)
core-libs/java.util:i18n
Deprecation of Locale Class Constructors (JDK-8282819)
security-libs/java.security
PSSParameterSpec(int) Constructor and DEFAULT Static Constant Are Deprecated (JDK-8254935)
security-libs/javax.crypto
OAEPParameterSpec.DEFAULT Static Constant Is Deprecated (JDK-8284553)
client-libs/2d
Metal Is Now the Default Java 2D Rendering Pipeline on macOS (JDK-8284378)
core-libs/java.io
New System Property to Disable Windows Alternate Data Stream Support in java.io.File (JDK-8285445)
core-libs/java.lang
User's Home Directory Is Set to $HOME if Invalid (JDK-8280357)
Thread Context ClassLoader Changed to be a Special Inheritable Thread-local (JDK-8284161)
Source and Binary Incompatible Changes to java.lang.Thread (JDK-8284161)
Incorrect Handling of Quoted Arguments in ProcessBuilder (JDK-8282008)
Double.toString(double) and Float.toString(float) May Return Slightly Different Results (JDK-4511638)
core-libs/java.lang:reflect
Make Annotation toString Output for Enum Constants Usable for Source Input (JDK-8281462)
core-libs/java.net
MD5 and SHA-1 Are Disabled by Default for HTTP Digest Authentication (JDK-8281561)
Improved HTTP Proxy Detection on Windows (JDK-8262442)
java.net.InetAddress Updated to Reject Ambiguous IPv4 Address Literals (JDK-8277608 (not public))
Make HttpURLConnection Default Keep Alive Timeout Configurable (JDK-8278067)
core-libs/java.nio
FileChannel.transferFrom May Transfer Fewer Bytes than Expected (JDK-8286763)
The mark and set Methods of InputStream and FilterInputStream Are No Longer Synchronized (JDK-8284930)
Files.copy Copies POSIX Attributes to Target on Foreign File System (JDK-8267820)
FileChannel.lock/tryLock Changed to Treat Size 0 to Mean the Locked Region Goes to End of File (JDK-5041655)
core-libs/java.time
Support for IsoFields in JapaneseDate/MinguoDate/ThaiBuddhistDate (JDK-8279185)
core-libs/java.util.concurrent
ForkJoinPool and ThreadPoolExecutor Do Not Use Thread::start to Start Worker Threads (JDK-8284161)
core-libs/java.util.jar
InflaterInputStream.read Throws EOFException (JDK-8292327)
core-libs/java.util.regex
Regex \b Character Class Now Matches ASCII Characters only by Default (JDK-8264160)
core-libs/java.util:i18n
Support for CLDR Version 41 (JDK-8265315)
core-libs/javax.naming
Parsing of URL Strings in Built-in JNDI Providers Is Stricter (JDK-8278972 (not public))
core-svc/tools
jstatd No Longer Requires a SecurityManager (JDK-8272317)
hotspot/jvmti
JVM TI Changes to Support Virtual Threads (JDK-8284161)
hotspot/runtime
JNI GetVersion Returns JNI_VERSION_19 (JDK-8286176)
hotspot/runtime
CPU Shares Ignored When Computing Active Processor Count (JDK-8281181)
install/install
RPM JDK Installer Changes (JDK-8275446)
All JDK Update Releases Are Installed into the Same Directory on macOS (JDK-8281010)
JDK-8278370: [win] Disable Side-by-Side Installations of Multiple JDK Updates in Windows JDK Installers (JDK-8278370)
security-libs/java.security
Only Expose Certificates With Proper Trust Settings as Trusted Certificate Entries in macOS KeychainStore (JDK-8278449 (not public))
RC2 and ARCFOUR Algorithms Added to jdk.security.legacyAlgorithms Security Property (JDK-8286090)
Use Larger Default Key Sizes if not Explicitly Specified (JDK-8267319)
DES, DESede, and MD5 Algorithms Added to jdk.security.legacyAlgorithms Security Property (JDK-8255552)
security-libs/javax.net.ssl
Fully Support Endpoint Identification Algorithm in RFC 6125 (JDK-7192189)
TLS Cipher Suites using 3DES Removed from the Default Enabled List (JDK-8163327)
Change in SSLEngine.closeInbound() Behavior (JDK-8273553)
tools/javac
Indy String Concat Changes Order of Operations (JDK-8273914)
Lambda Deserialization Fails for Object Method References on Interfaces (JDK-8282080)
tools/javadoc(tool)
JavaDoc Search Enhancements (JDK-8248863)
tools/jpackage
Allow Per-User and System Wide Configuration of a jpackaged App (JDK-8250950)
tools/jshell
JShell Highlights Deprecated Elements, Variables, and Keywords (JDK-8274148)
tools/launcher
-Xss
May Be Rounded up to a Multiple of the System Page Size
(JDK-8236569)
Use Larger Default key Sizes if not Explicitly Specified (JDK-8267319)
infrastructure
Toolchain Upgrade to Visual Studio 2022 (JDK-8283723)
core-libs/java.lang
System Property for Java SE Specification Maintenance Version (JDK-8285497)
- Oracle JDK offers "installers" (msi, rpm, deb, etc.) which not only place the JDK binaries in your system but also contain update rules and in some cases handle some common configurations like set common environmental variables (such as, JAVA_HOME in Windows) and establish file associations (such as, use java to launch .jar files). OpenJDK is offered only as compressed archive (tar.gz or .zip).
- Usage Logging is only available in Oracle JDK.
- Oracle JDK requires that third-party cryptographic providers be signed with a Java Cryptography Extension (JCE) Code Signing Certificate. OpenJDK continues allowing the use of unsigned third-party crypto providers.
- The output of java -version is different. Oracle JDK returns java and includes the Oracle-specific identifier. OpenJDK returns OpenJDK and does not include the Oracle-specific identifier.
- Oracle JDK 17 and later are released under the Oracle No-Fee Terms and Conditions License. OpenJDK is released under GPLv2wCP. License files included with each will therefore be different.
- Oracle JDK distributes FreeType under the FreeType license and OpenJDK does so under GPLv2. The contents of
\legal\java.desktop\freetype.md
is therefore different. - Oracle JDK has Java cup and steam icons and OpenJDK has Duke icons.
- Oracle JDK source code includes "ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms." Source code distributed with OpenJDK refers to the GPL license terms instead.