Skip to content

Latest commit

 

History

History

19

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Major New Functionality

1. Concurrency Model Update Previews

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.

2. Language Feature Previews

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.

3. Libraries Preview/Incubator

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.

New Features

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))

Removed Features and Options

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))

Deprecated Features and Options

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)

Other Notes

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)

Differences Between Oracle JDK and OpenJDK

  • 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.