JDK 27 Rampdown Phase is Closing / Default G1 in All Environments
"David Delabassee via dev" <[email protected]> Tue, 28 Jul 2026 09:16:22 +0000
| Newsgroups | gmane.comp.jakarta.log4j.devel |
|---|---|
| Message-ID | <SJ0PR10MB548819D5B6F8B5B87F9F9CE1FCCB2__33231.4837652788$1785230230$gmane$org@SJ0PR10MB5488.namprd10.prod.outlook.com> |
--_000_SJ0PR10MB548819D5B6F8B5B87F9F9CE1FCCB2SJ0PR10MB5488namp_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Welcome to the OpenJDK Quality Outreach summer update! Everything is on track for the general availability of Java 27 on 15 Septem= ber, as JDK 27 is now in Rampdown Phase 2, meaning that only low-risk enhan= cements may still be considered. The first release candidate builds of JDK = 27 are expected in just over a week, once RDP2 concludes. This also means t= hat the window for testing your projects with JDK 27 has almost closed. If = you haven=92t done so, now is a good time to start testing your projects us= ing the JDK 28 early-access builds. Also of note, G1 is becoming the default garbage collector across all envir= onments in JDK 27. Make sure to check the Heads-Up below for more details. I=92ll conclude by highlighting two non-technical resources that are nevert= heless highly recommended: the Java documentary [1] and an episode of the I= nside Java podcast [2] discussing JEPs and how critical they are to the evo= lution of the platform. [1] https://inside.java/2026/07/18/the-java-documentary/ [2] https://inside.java/2026/06/25/podcast-060/ # Heads-up - JDK 27: Default G1 in All Environments In situations where no garbage collector is specified on the command line, = the HotSpot JVM used to select either G1 GC or Serial GC, depending on the = environment. It preferred G1, but due to Serial's past throughput and footp= rint advantages in constrained environments, the JVM would select the latte= r if only a single CPU or less than 1792 MB of physical memory was detected= . Recent work has made G1 competitive with Serial in those environments. Gene= rally speaking, G1 will have similar native memory overhead, slightly lower= throughput, and lower maximum latencies than Serial. To make it easier to = reason about the JVM's behavior, starting with JDK 27, it picks G1 as defau= lt garbage collector in all environments. This change: - does not remove Serial GC from the JDK, which remains available in situat= ions where its performance characteristics are preferable - does not interfere with applications that select a specific garbage colle= ctor on the command line - does not interfere with applications that run in environments with multip= le CPUs and more than 1792 MB of memory That means an application is affected by this change only if it runs in a c= onstrained environment and does not explicitly select a garbage collector. = In such cases, we recommend benchmarking the application with different GCs= to identify the one that best suits its needs. If that is not possible, th= e application can either use G1 as the new default or be configured to use = Serial to ensure that its GC-related performance characteristics remain unc= hanged. For more information, please check JEP 523 [3]. [3] https://openjdk.org/jeps/523 # Heads-up - JDK 28: New jlink Keystore plugin A new `jlink` plugin has been introduced in JDK 28. It allows users to spec= ify which CA certificates should be included in the `cacerts` keystore of a= custom runtime image. This is useful for creating runtime images that cont= ain only the CA certificates required by the applications that use those im= ages. The command-line option accepts one or more `cacerts` keystore aliase= s, separated by commas. For more details, see [4]. [4] https://bugs.openjdk.org/browse/JDK-8377102 # JDK 27 Early-Access Builds The JDK 27 early-access builds for Build 32 are now available [5], along wi= th the corresponding release notes [6]. [5] https://jdk.java.net/27/ [6] https://jdk.java.net/27/release-notes ## JEPs integrated into JDK 27: - JEP 523: Make G1 the Default Garbage Collector in All Environments - JEP 527: Post-Quantum Hybrid Key Exchange for TLS 1.3 - JEP 531: Lazy Constants (3rd Preview) - JEP 532: Primitive Types in Patterns, instanceof, and switch (5th Preview= ) - JEP 533: Structured Concurrency (7th Preview) - JEP 534: Compact Object Headers by Default - JEP 536: JFR In-Process Data Redaction - JEP 537: Vector API (12th Incubator) - JEP 538: PEM Encodings of Cryptographic Objects (3rd Preview) ## Changes in recent JDK 27 builds that may be of interest: - JDK-8381812: The synthetic $deserializeLambda$ is notably bigger [Reporte= d by Eclipse Collections] - JDK-8382582: Remove the experimental JVMCI feature - JDK-8373426: Remove ffdhe6144 and ffdhe8192 from default list of TLS name= d groups - JDK-8385957: JFR: Sensitive command-line arguments still in environment v= =85 - JDK-8381796: Enhance Certificate parsing - JDK-8368041: Enhance TLS certificate handling - JDK-8377833: Enhance Jar file processing - JDK-8380672: Improve certification checking - JDK-8360700: Implement JEP 534: Compact Object Headers by Default - JDK-8296183: jndiprovider.properties contains properties pointing to non-= existing classes - JDK-8378464: PixelInterleavedSampleModel constructors and methods do not = specify behavior =85 - JDK-8374348: Implement -XX:AOTMode=3Drequired as alias for -XX:AOTMode=3D= on - JDK-8382031: Update IANA Language Subtag Registry to Version 2026-05-05 - JDK-8357439: Add bash autocompletion for jcmd - JDK-8329548: Change KeyUpdate messages from TLS 1.3 - JDK-8386466: DESedeKeySpec.isParityAdjusted spec permits 8-byte key but R= I throws InvalidKeyException Note: A more exhaustive list of changes can be found here [7]. [7] https://github.com/openjdk/jdk/compare/jdk-27+22...jdk-27+32 # JDK 28 Early-Access Builds The JDK 28 early-access builds 8 are now available [8] for testing. You can= review the Release Notes here [9]. ## Changes in recent JDK 28 builds that may be of interest: - JDK-8385957: JFR: Sensitive command-line arguments still in environment v= =85 - JDK-8384557: Allow configuration of the JVM's temporary directory on Linu= x - JDK-8301626: Capture Named Group information in TLSHandshakeEvent - JDK-8374058: Enhance JPEG handling - JDK-8387123: Remove LuxTrust Global Root CA - JDK-8386200: ListFormat incorrectly escapes single quotes - JDK-8385834: Tighten ListFormat.getInstance(String[]) behavior for invali= d placeholders - JDK-8377102: New jlink plugin to specify the specific CA certificates to = include in =85 - JDK-6356745: (coll) Add PriorityQueue(Collection, Comparator) - JDK-8385304: X25519 should utilize aarch64 intrinsics - JDK-8380549: HttpCookie.expiryDate2DeltaSeconds returns 0 on parse failur= e, causing =85 - JDK-8376748: Emit runtime warnings for JCE algorithms that will be disabl= ed - JDK-8386322: Float16Vector.toString should render lane values using Float= 16.toString - JDK-8387377: Compilation is very slow when --module-path contains many Au= tomatic Modules =85 Note: A more exhaustive list of changes can be found here [10]. [8] https://jdk.java.net/28/ [9] https://jdk.java.net/28/release-notes [10] https://github.com/openjdk/jdk/compare/jdk-28+0...jdk-28+7 # JavaFX 27 Early-Access Builds The latest early-access builds of JavaFX 27 are available [11], along with = the corresponding JavaFX 27 Javadocs [12]. These EA builds enable JavaFX de= velopers to build and test their applications with JavaFX 27 on JDK 27. Alt= hough they are designed to work with JDK 27-ea, they are also known to work= with JDK 25 and later releases. [11] https://jdk.java.net/javafx27/ [12] https://download.java.net/java/early_access/javafx27/docs/api/overview= -summary.html # Topics of Interest - Java - The Documentary https://inside.java/2026/07/18/the-java-documentary/ - =93How JEPs Drive Java's Evolution=94 - Inside Java Podcast https://inside.java/2026/06/25/podcast-060/ - =93JDK 27 + Valhalla, Now!=94 - Inside Java Podcast https://inside.java/2026/07/19/podcast-062/ - =93Scripting JS and Python with Project Detroit=94 - Inside Java Podcast https://inside.java/2026/07/09/podcast-061/ - Identifying JDK Value Class Candidate https://mail.openjdk.org/archives/list/[email protected]/thread/Y72= NRXM7KYBX43OKYBQMVKOZDWKG4MHS - SIMD Vectors in the HotSpot JVM - Auto Vectorization and the Vector API https://inside.java/2026/07/02/simd-vectors-hotspot-jvm/ - ZGC: A Decade of Redefining Java Performance https://inside.java/2026/06/30/zgc-performance-decade/ - Better Tools for Immutable Data https://inside.java/2026/06/21/better-tools-immutable-data/ - Performance Improvements in JDK 26 https://inside.java/2026/06/09/jdk-26-performance-improvements/ - Java Next Language Features https://inside.java/2026/06/07/java-next-language-features/ - =93Java *is* Memory Efficient=94 - Inside Java Podcast https://inside.java/2026/05/28/podcast-059/ ~ As always, if you encounter any issues while running your project on JDK ea= rly-access builds, please feel free to reach out. P.S. If you would prefer not to receive future OpenJDK Quality Outreach upd= ates, just let me know. --David --_000_SJ0PR10MB548819D5B6F8B5B87F9F9CE1FCCB2SJ0PR10MB5488namp_--