<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Aptos;
panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;
mso-fareast-language:EN-US;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:11.0pt;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="en-BE" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<div>
<p class="MsoNormal"><span style="mso-ligatures:none">Welcome to the final OpenJDK Quality Outreach update of 2024!</span><span lang="EN-US" style="mso-ligatures:none"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">JDK 24, scheduled for General Availability on March 18, 2025 [1], is now in Rampdown Phase One (RDP1) [2]. At this point, the overall JDK 24 feature set is frozen and only low-risk enhancements might still
be considered. You will find below the final list of the 24 JEPs that were integrated into JDK 24 as well as JDK 24 technical materials in the last section.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">This QO update also covers 3 important heads-ups related to security, integrity and JDK 24.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">The next key milestone is early February with the first JDK 24 Release Candidate builds. That means that we have a few weeks, modulo the end of year break, to find and hopefully address any issue that your
projects might encounter. So, please let us know if you encounter any issue with the JDK early-access builds.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[1] <a href="https://openjdk.org/projects/jdk/24/">
<span style="color:#467886">https://openjdk.org/projects/jdk/24/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[2] <a href="https://mail.openjdk.org/pipermail/jdk-dev/2024-December/009672.html">
<span style="color:#467886">https://mail.openjdk.org/pipermail/jdk-dev/2024-December/009672.html</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"># Heads-up - JDK 24: Permanently Disabling the Security Manager<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Introduced to enforce the principle of the least privilege, the Security Manager was designed to prevent unauthorized code from accessing sensitive resources (ex. files, network connections, etc.). While
effective in theory, it has fallen short in practice for multiple reasons: complexity, limited adoption, maintenance overhead and evolving threat landscape.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">In Java 17, the Security Manager was deprecated for removal under JEP 411 [3]. In JDK 24, its functionality will be effectively disabled via JEP 486 [4]. Key changes include:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Disabling the Security Manager - it will no longer be possible to enable the SM at startup using command-line options, nor will it be possible to install a custom SM during runtime.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Rendering the Security Manager API non-functional - the SM API will remain present for compatibility but will no longer have any operational effect.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Improving maintainability - thousands of lines of code dedicated to supporting the Security Manager will be removed, freeing OpenJDK contributors to implement modern security features.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Developers and enterprises using older Java versions or legacy applications relying on the Security Manager will retain access until JDK 24. Beyond that, they are encouraged to transition to alternative
sandboxing and API interception mechanisms.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">## Call to Action<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">The deprecation of the Security Manager in JDK 17 had little to no impact on most Java developers. Warnings issued in JDK 17–23 generated minimal discussion in the Java ecosystem, highlighting its limited
relevance. Furthermore, major frameworks and tools (ex. Jakarta EE, Ant, Tomcat, etc.) have already removed support for the Security Manager, reinforcing the trend.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">For applications still dependent on the Security Manager, the JDK offers options to identify and address its usage:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- jdeprscan [5] scans a JAR file for the usage of deprecated API elements, and it helps find code using these methods.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Messages on the console warnings highlight Security Manager usage during runtime.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Check how you launch your Java application - with the Security Manager allowed or enabled via command line options, or policy files that require it to be installed and configured.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">These tools give code maintainers the necessary insights to transition away from the Security Manager before its complete removal in future JDK releases. By taking these steps, you will ensure a smooth transition
from the Security Manager while adopting more effective security practices.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">This is a summary; for more details, make sure to read JEP 486 [4].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[3] <a href="https://openjdk.org/jeps/411">
<span style="color:#467886">https://openjdk.org/jeps/411</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[4] <a href="https://openjdk.org/jeps/486">
<span style="color:#467886">https://openjdk.org/jeps/486</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[5] <a href="https://dev.java/learn/jvm/tools/core/jdeprscan/">
<span style="color:#467886">https://dev.java/learn/jvm/tools/core/jdeprscan/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"># Heads-up - JDK 24: Prepares Restricted Native Access<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Any interaction between Java code and native code, be it via the Java Native Interface (JNI) API or the Foreign Function & Memory (FFM) API, is risky in the sense that it can compromise the integrity of
applications and of the Java Platform itself, for example by causing JVM crashes, even after the native code completed execution. According to the policy of integrity by default, all JDK features that are capable of breaking integrity must obtain explicit
approval from the application’s developer. JDK 24, by means of JEP 472 [6], prepares that by aligning the behaviors of JNI and FFM by:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Printing warnings for all restricted operations (with the goal to turn these into exceptions in a future release).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Expanding the command-line options `--enable-native-access` and `--illegal-native-access` to govern restricted operations of both APIs.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Note that this is a change for JNI, which used to not trigger such warnings, as well as for FFM, which used to forbid restricted operations by default. Starting with JDK 24, both APIs behave uniformly by
printing warnings. In the future, both APIs will throw exceptions instead. The intent is neither to discourage the use of, deprecate, or even remove JNI nor to restrict the behavior of native code called via JNI or FFM. The goal is to ensure that applications
and the Java Platform have integrity by default while giving application operators the tools they need to selectively opt-out where needed.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">This is a summary; for more details, please read the full Heads-Up [7] and JEP 472 [6].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[6] <a href="https://openjdk.org/jeps/472">
<span style="color:#467886">https://openjdk.org/jeps/472</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[7] <a href="https://inside.java/2024/12/09/quality-heads-up/">
<span style="color:#467886">https://inside.java/2024/12/09/quality-heads-up/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"># Heads-up - JDK 24: Security Properties Files Inclusion<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Managing security properties across multiple JDK releases can be a challenge, particularly in environments requiring centralized control and distinct security profiles. To address this and starting with
JDK 24, the Java Platform now allows the main security properties file (`${java.home}/conf/security/java.security`) or any file specified via the `java.security.properties` system property to include additional files. This inclusion is recursive, allowing
for nested configurations, provided no cycles occur.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">The `include` keyword is reserved and cannot be used to define security properties, as any attempt to do so results in an unchecked `IllegalArgumentException`. The inclusion mechanism enhances security
by explicitly listing files in the main configuration file, preventing misconfigurations by throwing a fatal error if a file is missing or inaccessible. It also forbids including directories or URLs, ensuring strict control over which files are included. Users
must ensure proper permissions for included files to avoid tampering, such as enforcing secure file permissions. The system supports a clear priority for security property overrides based on the order of inclusion, and updates to a single file automatically
propagate across all configurations. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">This enhancement offers better control and adaptability over Java security properties for developers, system administrators and infrastructure engineers.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">This is a summary; for more details, please read the full Heads-Up [8] and the JDK 24 release notes [9].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[8] <a href="https://inside.java/2024/12/10/quality-heads-up/">
<span style="color:#467886">https://inside.java/2024/12/10/quality-heads-up/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[9] <a href="https://jdk.java.net/24/release-notes#JDK-8319332"><span style="color:#467886">https://jdk.java.net/24/release-notes#JDK-8319332</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"># JDK 24 Early-Access Builds<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">The JDK 24 early-access builds 28 are available [10] and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [11].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">## JEPs integrated into JDK 24:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 404: Generational Shenandoah (Experimental)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 450: Compact Object Headers (Experimental)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 472: Prepare to Restrict the Use of JNI<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 475: Late Barrier Expansion for G1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 478: Key Derivation Function API (Preview)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 479: Remove the Windows 32-bit x86 Port<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 483: Ahead-of-Time Class Loading & Linking<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 484: Class-File API<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 485: Stream Gatherers<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 486: Permanently Disable the Security Manager<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 487: Scoped Values (4th Preview)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 488: Primitive Types in Patterns, instanceof, and switch (2nd Preview)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 489: Vector API (9th Incubator)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 490: ZGC: Remove the Non-Generational Mode<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 491: Synchronize Virtual Threads without Pinning<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 492: Flexible Constructor Bodies (3rd Preview)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 493: Linking Run-Time Images without JMODs<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 494: Module Import Declarations (2nd Preview)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 495: Simple Source Files and Instance Main Methods (4th Preview)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 499: Structured Concurrency (4th Preview)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JEP 501: Deprecate the 32-bit x86 Port for Removal<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">## Changes in recent JDK 24 builds that may be of interest:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8345015: Remove unused method lookup_time_t_function [Reported by JaCoCo]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8344352: 32-bit builds crash after JDK-8305895 [Reported by JaCoCo]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8344299: SM cleanup in javax.naming modules<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8343791: Socket.connect API should document whether the socket will be closed…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8343001: Adjust XSLT and XPath Extension Function Property<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8341551: Revisit jdk.internal.loader.URLClassPath.JarLoader after JEP 486<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8340359: Remove javax.naming.Context.APPLET<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8337199: Add jcmd Thread.vthread_scheduler and Thread.vthread_pollers diagnostic commands<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8313367: SunMSCAPI cannot read Local Computer certs w/o Windows elevation<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8341964: Add mechanism to disable different parts of TLS cipher suite<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8341553: Remove UseCompactObjectHeaders extra CDS archives<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8333582: Update CLDR to Version 46.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8341975: Unable to set encoding for IO.println, IO.print and IO.readln<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8342075: HttpClient: improve HTTP/2 flow control checks<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8326949: Authorization header is removed when a proxy Authenticator is set on HttpClient<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8245545: Disable TLS_RSA cipher suites<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8319993: Update Unicode Data Files to 16.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8341566: Add Reader.of(CharSequence)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8338536: Permanently disable remote code downloading in JNDI<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8343004: Adjust JAXP limits<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8343020: (fs) Add support for SecureDirectoryStream on macOS<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8344882: (bf) Temporary direct buffers should not count against the upper limit on direct buffer memory<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8335912: Add an operation mode to the jar command when extracting to not overwriting existing files<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8343881: java.lang.classfile.Attribute attributeName() method should return Utf8Entry<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8338021: Support new unsigned and saturating vector operators in VectorAPI<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- JDK-8343150: Change URLClassLoader.getPermissions to return empty PermissionCollection<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Note: A complete list of changes can be found here [12].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[10] <a href="https://jdk.java.net/24/">
<span style="color:#467886">https://jdk.java.net/24/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[11] <a href="https://jdk.java.net/24/release-notes">
<span style="color:#467886">https://jdk.java.net/24/release-notes</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">[12] <a href="https://github.com/openjdk/jdk/compare/jdk-24+21...jdk-24+28">
<span style="color:#467886">https://github.com/openjdk/jdk/compare/jdk-24+21...jdk-24+28</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"># Topics of Interest<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Java 24 Performance Improvements & Deprecations<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://www.youtube.com/watch?v=oTc16DAMTqg"><span style="color:#467886">https://www.youtube.com/watch?v=oTc16DAMTqg</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Java 24 Language & API Changes<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/12/05/newscast-81/"><span style="color:#467886">https://inside.java/2024/12/05/newscast-81/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Java 24 Stops Pinning Virtual Threads (Almost)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/11/21/newscast-80/"><span style="color:#467886">https://inside.java/2024/11/21/newscast-80/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Detoxifying the JDK Source Code<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://stuartmarks.wordpress.com/2024/12/12/detoxifying-the-jdk-source-code/"><span style="color:#467886">https://stuartmarks.wordpress.com/2024/12/12/detoxifying-the-jdk-source-code/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Better Java Streams with Gatherers - JEP Cafe<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/11/26/jepcafe23/"><span style="color:#467886">https://inside.java/2024/11/26/jepcafe23/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Java Language Futures - Fall 2024 Edition<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/10/30/devoxxbelgium-java-language-futures/"><span style="color:#467886">https://inside.java/2024/10/30/devoxxbelgium-java-language-futures/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Ask the Java Architects<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/11/14/devoxxbelgium-ask-architects/"><span style="color:#467886">https://inside.java/2024/11/14/devoxxbelgium-ask-architects/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Pattern Matching in Java - Past, Present, Future<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/11/11/devoxxbelgium-pattern-matching/"><span style="color:#467886">https://inside.java/2024/11/11/devoxxbelgium-pattern-matching/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Monitoring Java Application Security with JDK tools and JFR Events<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/11/17/devoxxbelgium-security/"><span style="color:#467886">https://inside.java/2024/11/17/devoxxbelgium-security/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- ZGC Automatic Heap Sizing #JVMLS<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/11/09/jvmls-zgc/"><span style="color:#467886">https://inside.java/2024/11/09/jvmls-zgc/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Postcards from the Peak of Complexity<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/11/03/devoxxbelgium-complexity-peak/"><span style="color:#467886">https://inside.java/2024/11/03/devoxxbelgium-complexity-peak/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Release Your (Java) Projects Like OpenJDK<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/10/31/newscast-79/"><span style="color:#467886">https://inside.java/2024/10/31/newscast-79/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Are Virtual Threads Going to Make Reactive Programming Irrelevant?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/10/28/javazone-virtual-threads/"><span style="color:#467886">https://inside.java/2024/10/28/javazone-virtual-threads/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- A Sneak Peek at StableValue and SegmentMapper<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/10/24/devoxxbelgium-stablevalues/"><span style="color:#467886">https://inside.java/2024/10/24/devoxxbelgium-stablevalues/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">- Advancing AI by Accelerating Java on Parallel Architectures<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://inside.java/2024/10/23/java-and-ai/"><span style="color:#467886">https://inside.java/2024/10/23/java-and-ai/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">~<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">As always, ping me if you find any issues while testing your project(s) with the latest JDK early-access builds. And as the year-end is fast approaching, let me wish you all the best for the upcoming holidays.
See you in 2025 with Java 24, JavaOne and Java 25!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">PS: Please let me know if you don't want to receive these OpenJDK Quality Outreach updates anymore.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="mso-ligatures:none">--David</span><o:p></o:p></p>
</div>
</body>
</html>