<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=utf-8">
<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:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Apple Color Emoji";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* 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="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">Welcome to the OpenJDK Quality Outreach summer update.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">JDK 23 is now in Rampdown Phase Two [1], its overall feature has been frozen a few weeks ago. Per the JDK Release Process, we have now turned our
 focus to P1 and P2 bugs, which can be fixed with approval [2]. Late enhancements are still possible, with approval, but the bar is now extraordinarily high. That also means that the JDK 23 Initial Release Candidates are fast approaching, i.e., August 8th [3]!
 So, and in addition to testing your projects with the latest JDK 23 early-access builds, it is now a good time to start testing with the JDK 24 early-access builds.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">Make sure to also check the heads-up below as some are related to JDK 23 and might have some impact, i.e., the first one being related to the eventual
 removal of the Security Manager and the second one discusses the removal of the legacy COMPAT locale provider.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[1]
<a href="https://mail.openjdk.org/pipermail/jdk-dev/2024-July/009252.html"><span style="color:#0563C1">https://mail.openjdk.org/pipermail/jdk-dev/2024-July/009252.html</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[2]
<a href="https://openjdk.org/jeps/3#rdp-2"><span style="color:#0563C1">https://openjdk.org/jeps/3#rdp-2</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[3]
<a href="https://openjdk.org/projects/jdk/23/"><span style="color:#0563C1">https://openjdk.org/projects/jdk/23/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">## Heads-up - JDK 23: Subject.getSubject API Requires Allowing the Security Manager
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">In JDK 17 and as announced in JEP 411 [4], the Security Manager was deprecated for removal. As part of that change, several Security Manager APIs,
 such as `AccessControlContext`, were deprecated for removal. The `Subject::doAs` and `Subject::getSubject` APIs depend on Security Manager related APIs even though they do not require Security Manager to be installed to use them.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">As of JDK 23 [5], to help applications prepare for the eventual removal of the Security Manager, subject authorization and the Subject APIs' behavior
 depend on allowing the Security Manager: <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- If the system property `java.security.manager` is set on the command line to the empty string, a class name, or the value `allow` then there
 is no behavior change compared to previous releases. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- If the system property `java.security.manager` is not set on the command line or has been set on the command line to the value `disallow`, invoking
 the `Subject.getSubject` method will throw `UnsupportedOperationException`. <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">Yet, running an application with `-Djava.security.manager=allow` is a temporary workaround to keep older code working. Maintainers of code using
 `Subject.doAs` and `Subject.getSubject` are strongly encouraged to migrate it with utmost priority to the replacement APIs, `Subject.callAs` and `Subject.current`. Make sure to check [5] and [6] for additional details.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">The jdeprscan tool [7] scans a JAR file for usage of deprecated API elements and is helpful to find code using these methods. Additionally, consider
 migrating as soon as possible code that stores a `Subject` in an `AccessControlContext` and invokes `AccessController.doPrivileged` with that context. Such code will stop working when the Security Manager is removed.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[4]
<a href="https://openjdk.org/jeps/411"><span style="color:#0563C1">https://openjdk.org/jeps/411</span></a>
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[5]
<a href="https://jdk.java.net/23/release-notes#b15"><span style="color:#0563C1">https://jdk.java.net/23/release-notes#b15</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[6]
<a href="https://inside.java/2024/07/08/quality-heads-up/"><span style="color:#0563C1">https://inside.java/2024/07/08/quality-heads-up/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[7]
<a href="https://dev.java/learn/jvm/tools/core/jdeprscan/"><span style="color:#0563C1">https://dev.java/learn/jvm/tools/core/jdeprscan/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">## Heads-up - JDK 23: Unicode / Removal of COMPAT Locale Provider<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">### A Quick History of Locale Data in the JDK<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">Before the Unicode Consortium created the Common Locale Data Repository (CLDR) in 2003 to manage locale data, the JDK had to provide its own collection.
 It did so successfully and in JDK 8 supported about 160 locales. To reduce maintenance effort, allow better interoperability between platforms, and improve locale data quality, the JDK started to move towards CLDR in 2014:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK 8 comes with two locale data providers, which can be selected with the system property java.locale.providers:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">   . JRE/COMPAT for the JDK’s legacy data collection (default)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">   . CLDR for the CLDR data<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">   . a custom locale provider can be implemented<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK 9 picks CLDR by default<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK 21 issues a warning on JRE/COMPAT<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">There are plenty of minor and a few notable differences between the legacy data and CLDR - the recently rewritten JEP 252 [8] lists a few of them.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">### Locale Data in JDK 23<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">JDK 23 [9] removes legacy locale data. As a consequence, setting java.locale.providers to JRE or COMPAT has no effect.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">Projects that are still using legacy locale data are highly encouraged to switch to CLDR as soon as possible. Where that is infeasible, two alternatives
 remain:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Create custom formatters with patterns that mimic the legacy behavior and use them everywhere where locale-sensitive data is written or parsed.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Implement a custom locale data provider [10].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">For more details on that as well as on CLDR in the JDK in general, please check JEP 252 [8] that has been recently rewritten to provide better
 information and guidance.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[8]
<a href="https://openjdk.org/jeps/252"><span style="color:#0563C1">https://openjdk.org/jeps/252</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[9]
<a href="https://bugs.openjdk.org/browse/JDK-8325568"><span style="color:#0563C1">https://bugs.openjdk.org/browse/JDK-8325568</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[10]
<a href="https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/spi/LocaleServiceProvider.html">
<span style="color:#0563C1">https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/spi/LocaleServiceProvider.html</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">## Heads-up - JDK 23:  Initial Leyden Early-Access Builds<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">Project Leyden published its first early-access builds (24-leyden+2-8 2024/6/20) [11]. The initial release is focused on improving Java applications
 start-up time, but other Leyden optimizations will be explored in future releases.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">Below are some of the highlights of these Leyden EA builds:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Ahead-of-time compilation of Java methods to natively execute them as soon as the application starts up in the production run;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Ahead-of-time resolution of constant pool entries allows the AOT compiler to generate better code and for your application to start faster;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Ahead-of-time generation of Dynamic Proxies and reflection data as frameworks use those extensively during start-up time;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- A unified Cache Data Store (CDS) archive to simplify the creation of the CDS archive, while supporting multiple types of optimization artifacts;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Loaded Classes in the CDS archive as soon the application starts up;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Class loader lookup cache to help application frameworks perform repeated lookups without repeatedly scanning the classpath;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Archived Method Profiles to reach Java application peak performance faster.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">The easiest way to start with Leyden features is by using the java program in the Leyden Early Access Release with the -XX:CacheDataStore flag.
 More details of this Leyden EA Build can be found in the release notes [12]. <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[11]
<a href="https://jdk.java.net/leyden/"><span style="color:#0563C1">https://jdk.java.net/leyden/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[12]
<a href="https://github.com/openjdk/leyden/blob/leyden-ea1-release-notes/README.md">
<span style="color:#0563C1">https://github.com/openjdk/leyden/blob/leyden-ea1-release-notes/README.md</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">## JDK 23 Early-Access Builds<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">The JDK 23 early-access builds 32 are available [13], and are provided under the GNU General Public License v2, with the Classpath Exception. The
 Release Notes are available here [14] and the Javadoc here [15].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[13]
<a href="https://jdk.java.net/23/"><span style="color:#0563C1">https://jdk.java.net/23/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[14]
<a href="https://jdk.java.net/23/release-notes"><span style="color:#0563C1">https://jdk.java.net/23/release-notes</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[15]
<a href="https://download.java.net/java/early_access/jdk23/docs/api/"><span style="color:#0563C1">https://download.java.net/java/early_access/jdk23/docs/api/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">## JDK 24 Early-Access Builds<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">The JDK 24 early-access builds 7 are available [16], and are provided under the GNU General Public License v2, with the Classpath Exception. The
 Release Notes are available here [17].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">### Changes in recent JDK 24 builds that may be of interest:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8334299: Deprecate LockingMode option, along with LM_LEGACY and LM_MONITOR<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8330846: Add stacks of mounted virtual threads to the HotSpot thread …<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8333649: Allow different NativeCall encodings<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8333755: NumberFormat integer only parsing breaks when format has suffix<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8330842: Support AES CBC with Ciphertext Stealing (CTS) in SunPKCS11<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8327793: Deprecate jstatd for removal<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8248981: Specify list of standard message digest and mgf algorithms for RSASSA-PSS signature<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8334580: Deprecate no-arg constructor BasicSliderUI() for removal<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8320448: Accelerate IndexOf using AVX2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8333749: Consolidate ConstantDesc conversion in java.base<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8329141: Obsolete RTM flags and code<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8330198: Add some class loading related perf counters to measure VM startup<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8330699: Obsolete -XX:+UseEmptySlotsInSupers<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- JDK-8334734: Remove specialized readXxxEntry methods from ClassReader<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">This is only a curated list, a complete list of changes can be found here [18].<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[16]
<a href="https://jdk.java.net/24/"><span style="color:#0563C1">https://jdk.java.net/24/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[17]
<a href="https://jdk.java.net/24/release-notes"><span style="color:#0563C1">https://jdk.java.net/24/release-notes</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">[18]
<a href="https://github.com/openjdk/jdk/compare/jdk-24+0...jdk-24+7"><span style="color:#0563C1">https://github.com/openjdk/jdk/compare/jdk-24+0...jdk-24+7</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">## Topics of Interest<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Integrity by Default - Inside Java Newscast<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><a href="https://inside.java/2024/07/18/newscast-73/"><span style="color:#0563C1">https://inside.java/2024/07/18/newscast-73/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Java and AI? - Inside Java Newscast<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><a href="https://inside.java/2024/07/04/newscast-72/"><span style="color:#0563C1">https://inside.java/2024/07/04/newscast-72/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- What Happened to String Templates? - Inside Java Newscast
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><a href="https://inside.java/2024/06/20/newscast-71/"><span style="color:#0563C1">https://inside.java/2024/06/20/newscast-71/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Java Language Futures - Spring 2024 Edition<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><a href="https://inside.java/2024/07/01/java-language-futures/"><span style="color:#0563C1">https://inside.java/2024/07/01/java-language-futures/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- Project Loom - Structured Concurrency<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><a href="https://inside.java/2024/07/13/structured-concurrency/"><span style="color:#0563C1">https://inside.java/2024/07/13/structured-concurrency/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">- How to Build Custom Java Runtimes with Jlink<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><a href="https://inside.java/2024/06/21/build-runtimes-with-jlink/"><span style="color:#0563C1">https://inside.java/2024/06/21/build-runtimes-with-jlink/</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">## July 2024 Critical Patch Update Released<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">As part of the July 2024 CPU, Oracle released OpenJDK 22.0.2, JavaFX 22.0.2, JDK 22.0.2, JDK 21.0.4 LTS, JDK 17.0.12 LTS, JDK 11.0.24 LTS, JDK
 8u421 as as well as JDK 8u421-perf.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">~<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB">We still have a few days before JDK 23 enters into the Release Candidate phase so please make sure to test your projects on the latest early-access
 builds and report any issue… but that shouldn't be a reason to not enjoy the summer and recharge your batteries!
</span><span style="font-family:"Apple Color Emoji";mso-ligatures:none;mso-fareast-language:EN-GB">😎</span><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-family:"Calibri",sans-serif;mso-ligatures:none">--David</span><o:p></o:p></p>
</div>
</body>
</html>