JDK 22 RDP2 & Deprecate sun.mis c.Unsafe Memory-Access Methods…
David Delabassee <[email protected]> Fri, 26 Jan 2024 11:30:12 +0000
| Newsgroups | gmane.comp.lang.jython.devel |
|---|---|
| Message-ID | <SA1PR10MB769983E16D8D00D3686FA08BFC792@SA1PR10MB7699.namprd10.prod.outlook.com> |
--===============5284101608216404397==
Content-Language: en-GB
Content-Type: multipart/alternative;
boundary="_000_SA1PR10MB769983E16D8D00D3686FA08BFC792SA1PR10MB7699namp_"
--_000_SA1PR10MB769983E16D8D00D3686FA08BFC792SA1PR10MB7699namp_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
Greetings!
We are starting 2024 with JDK 22 as it has just entered Rampdown Phase 2 [1=
]. And with the initial JDK 22 Release Candidates now less than 2 weeks awa=
y (Feb. 8th) [2], it is time to shift our attention to JDK 23.
After multiple rounds of incubations and preview, the Foreign Function & Me=
mory API is becoming standard and permanent in JDK 22. If we put its 'Funct=
ion' angle aside, this API also offers a standard and secure way to access =
off-heap API. And that brings us to the heads-up below 'Deprecate the memor=
y-access methods in sun.misc.Unsafe for removal in a future release' as dev=
elopers still using sun.misc.Unsafe for accessing memory are strongly encou=
raged to start preparing their plans to migrate away from those unsafe meth=
ods.
[1] https://mail.openjdk.org/pipermail/jdk-dev/2024-January/008675.html
[2] https://openjdk.org/projects/jdk/22/
## Heads-up: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Rem=
oval in a Future Release
The effort focused on enforcing the integrity of the Java platform [3] cont=
inues! The next phase in that long but important initiative will most likel=
y target the sun.misc.Unsafe API used for accessing memory. Those methods a=
lone represent 79 methods out of the 87 sun.misc.Unsafe methods!
This draft JEP [4] outlines the plan to deprecate for removal the sun.misc.=
Unsafe Memory-Access methods, the reasons, and the standard alternatives. A=
s the draft plan suggests, the first step will be to deprecate all memory-a=
ccess methods (on-heap, off-heap, and bimodal) for removal. This will cause=
compile-time deprecation warnings for code that refers to the methods, ale=
rting library developers to their forthcoming removal. In addition, a new c=
ommand-line option will allow users to receive runtime warnings when those =
methods are used. This command-line will help users to assess if their code=
base uses those unsafe API to access memory. It should be mentioned that ot=
her tools such as JFR and jdeprscan can also be used to detect the use of t=
hose deprecated APIs.
Library developers are strongly encouraged to migrate from sun.misc.Unsafe =
to the supported replacements, so that applications can migrate smoothly to=
modern JDKs. The initial step will be to conduct investigations to underst=
and if, how, and where sun.misc.Unsafe methods are used to access memory.
[3] https://openjdk.org/jeps/8305968
[4] https://openjdk.org/jeps/8323072
## Heads-up: Java Array Element Alignment - Weakening of Some Methods Guara=
ntees ?
Some methods make promises about Java array element alignment that are too =
strong. There are some ongoing reflexions to change the implementation (and=
the specification) of `MethodHandles::byteArrayViewVarHandle`, `MethodHand=
les::byteBufferViewVarHandle`, `ByteBuffer::alignedSlice`, and `ByteBuffer:=
:alignmentOffset` to weaken the guarantees they make about the alignment of=
Java array elements, in order to bring them in line with the guarantees ma=
de by an arbitrary JVM implementation.
For more details, make sure to check JDK-8320247 [5] and the related PR [6]=
but in a nutshell, the new behaviour would be :
- The `VarHandle` returned by `MethodHandles::byteArrayViewVarHandle` would=
only support `get` and `set` methods, and all other access methods would t=
hrow an exception.
- The `VarHandle` returned by `MethodHandles::byteBufferViewHandle` would o=
nly support the `get` and `set` access methods when a heap buffer is used, =
and all other access methods would throw an exception when used with a heap=
buffer. Direct byte buffers will continue to work the same way.
- The `ByteBuffer::alignmentOffset` and `ByteBuffer::alignedSlice` methods =
would throw an exception if the buffer is a heap buffer, and the given `uni=
tSize` is greater than 1.
If you have relevant feedback about this potential change, please make sure=
to bring it to the core-libs-dev mailing list [7], or comment on the PR [6=
].
[5] https://bugs.openjdk.org/browse/JDK-8320247
[6] https://github.com/openjdk/jdk/pull/16681
[7] https://mail.openjdk.org/pipermail/core-libs-dev/
## JDK 22 Early-Access Builds
JDK 22 Early-Access builds 33 are now available [8], and are provided under=
the GNU General Public License v2, with the Classpath Exception. The Relea=
se Notes [9] and the javadocs [10] are also available.
### Changes in recent JDK 22 builds that may be of interest:
- JDK-8320597: RSA signature verification fails on signed data that does no=
t encode params correctly [Reported by Apache POI]
- JDK-8322214: Return value of XMLInputFactory.getProperty() changed from b=
oolean to String in JDK 22 early access builds [Reported by Apache POI]
- JDK-8322725: (tz) Update Timezone Data to 2023d
- JDK-8321480: ISO 4217 Amendment 176 Update
- JDK-8314468: Improve Compiler loops
- JDK-8314295: Enhance verification of verifier
- JDK-8316976: Improve signature handling
- JDK-8317547: Enhance TLS connection support
- JDK-8318971: Better Error Handling for Jar Tool When Processing Non-exist=
ent Files
- JDK-8323659: LinkedTransferQueue add and put methods call overridable off=
er
Note: A complete list of changes can be found here [11].
[8] https://jdk.java.net/22/
[9] https://jdk.java.net/22/release-notes
[10] https://download.java.net/java/early_access/jdk22/docs/api/
[11] https://github.com/openjdk/jdk/compare/jdk-22+27...jdk-22+33
## JDK 23 Early-Access builds
JDK 23 Early-Access builds 7 are available [12] for testing. These EA build=
s are provided under the GNU General Public License v2, with the Classpath =
Exception. The Release Notes [13] are also available.
### Changes in recent JDK 23 builds that may be of interest:
- JDK-8320597: RSA signature verification fails on signed data that does no=
t encode params correctly [Reported by Apache POI]
- JDK-8322214: Return value of XMLInputFactory.getProperty() changed from b=
oolean to String in JDK 22 early access builds [Reported by Apache POI]
- JDK-8321545: Override toString() for Format subclasses
- JDK-8322366: Add IEEE rounding mode corruption check to JNI checks
- JDK-8322383: G1: Only preserve marks on objects that are actually moved
- JDK-8275338: Add JFR events for notable serialization situations
- JDK-8320458: Improve structural navigation in API documentation
- JDK-8320786: Remove ThreadGroup.stop
- JDK-8320532: Remove Thread/ThreadGroup suspend/resume
- JDK-8312150: Remove -Xnoagent option
- JDK-8322829: Refactor nioBlocker to avoid blocking while holding Thread's=
interrupt lock
- JDK-8322725: (tz) Update Timezone Data to 2023d
- JDK-8321480: ISO 4217 Amendment 176 Update
- JDK-8318971: Better Error Handling for Jar Tool When Processing Non-exist=
ent Files
- JDK-8321594: NativeThreadSet should use placeholder for virtual threads
- JDK-8321940: Improve CDSHeapVerifier in handling of interned strings
- JDK-8321802: (zipfs) Add validation of incorrect LOC signature in ZipFile=
System
- JDK-8322841: Parallel: Remove unused using-declaration in MutableNUMASpac=
e
- JDK-8319626: Override toString() for ZipFile
- JDK-8322878: Including sealing information Class.toGenericString()
Note: A more exhaustive changes list can be found here [14].
[12] https://jdk.java.net/23/
[13] https://jdk.java.net/23/release-notes
[14] https://github.com/openjdk/jdk/compare/jdk-23+1...jdk-23+7
## JavaFX 22 & 23 Early-Access Builds
These are early access builds of the JavaFX 22 Runtime built from openjdk/j=
fx [14]. These builds enable JavaFX application developers to build and tes=
t their applications with JavaFX 22 on JDK 22. Although JavaFX 22 is design=
ed to work with JDK 22, it is also known to work with JDK 17 and later vers=
ions.
The latest early access builds of JavaFX 22 Builds 26 (2024/1/20) are avail=
able [15], under the GNU General Public License, version 2, with the Classp=
ath Exception. JavaFX 22 API Javadocs [16] are also available.
The first early access builds (2024/1/19) of JavaFX 23 are now also availab=
le [17].
[14] https://github.com/openjdk/jfx
[15] https://jdk.java.net/javafx22/
[16] https://download.java.net/java/early_access/javafx22/docs/api/overview=
-summary.html
[17] https://jdk.java.net/javafx23/
## Topics of Interest
- Podcast =93The Panama Effect=94 with Jorn Vernee
https://inside.java/2024/01/08/podcast-032/
- Java's Plans for 2024 - Inside Java Newscast
https://inside.java/2024/01/18/newscast-61/
- Java 22 Unpacking - Inside Java Newscast
https://inside.java/2023/12/07/newscast-59/
- Java Highlights of 2023 - Inside Java Newscast
https://inside.java/2023/12/21/newscast-60/
- JDK 21: The GCs keep getting better
https://kstefanj.github.io/2023/12/13/jdk-21-the-gcs-keep-getting-better.ht=
ml
- Java SE Security Developer=92s Guide
https://docs.oracle.com/en/java/javase/21/security/index.html#Java-Platform=
%2C-Standard-Edition
- Another VS Code Extension for Java
https://inside.java/2023/12/03/java-vscode-extension/
## January 2024 Critical Patch Update Released
As part of the January 2024 CPU, Oracle released OpenJDK 21.0.2, JDK 21.0.2=
LTS, JDK 17.0.10 LTS, 11.0.22 LTS, 8u401, and 8u401-perf.
~
As usual, let us know if you find any quirks while testing your project(s) =
with the latest JDK early-access builds.
--David
--_000_SA1PR10MB769983E16D8D00D3686FA08BFC792SA1PR10MB7699namp_
Content-Type: text/html; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" xmlns:w=3D"urn:sc=
hemas-microsoft-com:office:word" xmlns:m=3D"http://schemas.microsoft.com/of=
fice/2004/12/omml" xmlns=3D"http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DWindows-1=
252">
<meta name=3D"Generator" content=3D"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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ligatures:standardcontextual;
mso-fareast-language:EN-US;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
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=3D"en-BE" link=3D"#0563C1" vlink=3D"#954F72" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<div>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Greetings!<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">We are starting 2024 with JDK 22 as it has just entered Rampdown =
Phase 2 [1]. And with the initial JDK 22 Release Candidates now less than 2=
weeks away (Feb. 8th) [2], it is time
to shift our attention to JDK 23. <o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">After multiple rounds of incubations and preview, the Foreign Fun=
ction & Memory API is becoming standard and permanent in JDK 22. If we =
put its 'Function' angle aside, this API
also offers a standard and secure way to access off-heap API. And that bri=
ngs us to the heads-up below 'Deprecate the memory-access methods in sun.mi=
sc.Unsafe for removal in a future release' as developers still using sun.mi=
sc.Unsafe for accessing memory are
strongly encouraged to start preparing their plans to migrate away from th=
ose unsafe methods.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[1]
<a href=3D"https://mail.openjdk.org/pipermail/jdk-dev/2024-January/008675.h=
tml"><span style=3D"color:#0563C1">https://mail.openjdk.org/pipermail/jdk-d=
ev/2024-January/008675.html</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[2]
<a href=3D"https://openjdk.org/projects/jdk/22/"><span style=3D"color:#0563=
C1">https://openjdk.org/projects/jdk/22/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## Heads-up: Deprecate the Memory-Access Methods in sun.misc.Unsa=
fe for Removal in a Future Release<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">The effort focused on enforcing the integrity of the Java platfor=
m [3] continues! The next phase in that long but important initiative will =
most likely target the sun.misc.Unsafe
API used for accessing memory. Those methods alone represent 79 methods ou=
t of the 87 sun.misc.Unsafe methods!<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">This draft JEP [4] outlines the plan to deprecate for removal the=
sun.misc.Unsafe Memory-Access methods, the reasons, and the standard alter=
natives. As the draft plan suggests,
the first step will be to deprecate all memory-access methods (on-heap, of=
f-heap, and bimodal) for removal. This will cause compile-time deprecation =
warnings for code that refers to the methods, alerting library developers t=
o their forthcoming removal. In
addition, a new command-line option will allow users to receive runtime wa=
rnings when those methods are used. This command-line will help users to as=
sess if their codebase uses those unsafe API to access memory. It should be=
mentioned that other tools such
as JFR and jdeprscan can also be used to detect the use of those deprecate=
d APIs.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Library developers are strongly encouraged to migrate from sun.mi=
sc.Unsafe to the supported replacements, so that applications can migrate s=
moothly to modern JDKs. The initial
step will be to conduct investigations to understand if, how, and where su=
n.misc.Unsafe methods are used to access memory.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[3]
<a href=3D"https://openjdk.org/jeps/8305968"><span style=3D"color:#0563C1">=
https://openjdk.org/jeps/8305968</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[4]
<a href=3D"https://openjdk.org/jeps/8323072"><span style=3D"color:#0563C1">=
https://openjdk.org/jeps/8323072</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## Heads-up: Java Array Element Alignment - Weakening of Some Met=
hods Guarantees ?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Some methods make promises about Java array element alignment tha=
t are too strong. There are some ongoing reflexions to change the implement=
ation (and the specification) of `MethodHandles::byteArrayViewVarHandle`,
`MethodHandles::byteBufferViewVarHandle`, `ByteBuffer::alignedSlice`, and =
`ByteBuffer::alignmentOffset` to weaken the guarantees they make about the =
alignment of Java array elements, in order to bring them in line with the g=
uarantees made by an arbitrary JVM
implementation.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">For more details, make sure to check JDK-8320247 [5] and the rela=
ted PR [6] but in a nutshell, the new behaviour would be :<o:p></o:p></span=
></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-ligatures:none;mso=
-fareast-language:EN-GB">-</span><span style=3D"mso-ligatures:none;mso-fare=
ast-language:EN-GB"> The `VarHandle` returned by `MethodHandles::byteArrayV=
iewVarHandle` would only support `get` and
`set` methods, and all other access methods would throw an exception.<o:p>=
</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-ligatures:none;mso=
-fareast-language:EN-GB">-</span><span style=3D"mso-ligatures:none;mso-fare=
ast-language:EN-GB"> The `VarHandle` returned by `MethodHandles::byteBuffer=
ViewHandle` would only support the `get`
and `set` access methods when a heap buffer is used, and all other access =
methods would throw an exception when used with a heap buffer. Direct byte =
buffers will continue to work the same way.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-ligatures:none;mso=
-fareast-language:EN-GB">-</span><span lang=3D"EN-US" style=3D"mso-ligature=
s:none;mso-fareast-language:EN-GB">
</span><span style=3D"mso-ligatures:none;mso-fareast-language:EN-GB">The `B=
yteBuffer::alignmentOffset` and `ByteBuffer::alignedSlice` methods would th=
row an exception if the buffer is a heap buffer, and the given `unitSize` i=
s greater than 1</span><span lang=3D"EN-US" style=3D"mso-ligatures:none;mso=
-fareast-language:EN-GB">.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">If you have relevant feedback about this potential change, please=
make sure to bring it to the core-libs-dev mailing list [7], or comment on=
the PR [6].<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[5]
<a href=3D"https://bugs.openjdk.org/browse/JDK-8320247"><span style=3D"colo=
r:#0563C1">https://bugs.openjdk.org/browse/JDK-8320247</span></a><o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[6]
<a href=3D"https://github.com/openjdk/jdk/pull/16681"><span style=3D"color:=
#0563C1">https://github.com/openjdk/jdk/pull/16681</span></a><o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[7]
<a href=3D"https://mail.openjdk.org/pipermail/core-libs-dev/"><span style=
=3D"color:#0563C1">https://mail.openjdk.org/pipermail/core-libs-dev/</span>=
</a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## JDK 22 Early-Access Builds<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JDK 22 Early-Access builds 33 are now available [8], and are prov=
ided under the GNU General Public License v2, with the Classpath Exception.=
The Release Notes [9] and the javadocs
[10] are also available.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">### Changes in recent JDK 22 builds that may be of interest:<o:p>=
</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8320597: RSA signature verification fails on signed data th=
at does not encode params correctly [Reported by Apache POI]<o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322214: Return value of XMLInputFactory.getProperty() chan=
ged from boolean to String in JDK 22 early access builds [Reported by Apach=
e POI]<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322725: (tz) Update Timezone Data to 2023d<o:p></o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8321480: ISO 4217 Amendment 176 Update<o:p></o:p></span></p=
>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8314468: Improve Compiler loops<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8314295: Enhance verification of verifier<o:p></o:p></span>=
</p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316976: Improve signature handling<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8317547: Enhance TLS connection support<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8318971: Better Error Handling for Jar Tool When Processing=
Non-existent Files<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8323659: LinkedTransferQueue add and put methods call overr=
idable offer<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Note: A complete list of changes can be found here [11].<o:p></o:=
p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[8]
<a href=3D"https://jdk.java.net/22/"><span style=3D"color:#0563C1">https://=
jdk.java.net/22/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[9] <a href=3D"https://jdk.java.net/22/release-notes"><span =
style=3D"color:#0563C1">https://jdk.java.net/22/release-notes</span></a><o:=
p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[10] <a href=3D"https://download.java.net/java/early_access/=
jdk22/docs/api/"><span style=3D"color:#0563C1">https://download.java.net/ja=
va/early_access/jdk22/docs/api/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[11]
<a href=3D"https://github.com/openjdk/jdk/compare/jdk-22+27...jdk-22+33"><s=
pan style=3D"color:#0563C1">https://github.com/openjdk/jdk/compare/jdk-22+2=
7...jdk-22+33</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## JDK 23 Early-Access builds<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JDK 23 Early-Access builds 7 are available [12] for testing. Thes=
e EA builds are provided under the GNU General Public License v2, with the =
Classpath Exception. The Release Notes
[13] are also available.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">### Changes in recent JDK 23 builds that may be of interest:<o:p>=
</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8320597: RSA signature verification fails on signed data th=
at does not encode params correctly [Reported by Apache POI]<o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322214: Return value of XMLInputFactory.getProperty() chan=
ged from boolean to String in JDK 22 early access builds [Reported by Apach=
e POI]<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8321545: Override toString() for Format subclasses<o:p></o:=
p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322366: Add IEEE rounding mode corruption check to JNI che=
cks<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322383: G1: Only preserve marks on objects that are actual=
ly moved<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8275338: Add JFR events for notable serialization situation=
s<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8320458: Improve structural navigation in API documentation=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8320786: Remove ThreadGroup.stop<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8320532: Remove Thread/ThreadGroup suspend/resume<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8312150: Remove -Xnoagent option<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322829: Refactor nioBlocker to avoid blocking while holdin=
g Thread's interrupt lock<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322725: (tz) Update Timezone Data to 2023d<o:p></o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8321480: ISO 4217 Amendment 176 Update<o:p></o:p></span></p=
>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8318971: Better Error Handling for Jar Tool When Processing=
Non-existent Files<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8321594: NativeThreadSet should use placeholder for virtual=
threads<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8321940: Improve CDSHeapVerifier in handling of interned st=
rings<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8321802: (zipfs) Add validation of incorrect LOC signature =
in ZipFileSystem<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322841: Parallel: Remove unused using-declaration in Mutab=
leNUMASpace<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8319626: Override toString() for ZipFile<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8322878: Including sealing information Class.toGenericStrin=
g()<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Note: A more exhaustive changes list can be found here [14].<o:p>=
</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[12]
<a href=3D"https://jdk.java.net/23/"><span style=3D"color:#0563C1">https://=
jdk.java.net/23/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[13]
<a href=3D"https://jdk.java.net/23/release-notes"><span style=3D"color:#056=
3C1">https://jdk.java.net/23/release-notes</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[14]
<a href=3D"https://github.com/openjdk/jdk/compare/jdk-23+1...jdk-23+7"><spa=
n style=3D"color:#0563C1">https://github.com/openjdk/jdk/compare/jdk-23+1..=
.jdk-23+7</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"> <o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## JavaFX 22 & 23 Early-Access Builds<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">These are early access builds of the JavaFX 22 Runtime built from=
openjdk/jfx [14]. These builds enable JavaFX application developers to bui=
ld and test their applications with
JavaFX 22 on JDK 22. Although JavaFX 22 is designed to work with JDK 22, i=
t is also known to work with JDK 17 and later versions.<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">The latest early access builds of JavaFX 22 Builds 26 (2024/1/20)=
are available [15], under the GNU General Public License, version 2, with =
the Classpath Exception. JavaFX 22 API
Javadocs [16] are also available.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">The first early access builds (2024/1/19) of JavaFX 23 are now al=
so available [17].<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[14]
<a href=3D"https://github.com/openjdk/jfx"><span style=3D"color:#0563C1">ht=
tps://github.com/openjdk/jfx</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[15]
<a href=3D"https://jdk.java.net/javafx22/"><span style=3D"color:#0563C1">ht=
tps://jdk.java.net/javafx22/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[16]
<a href=3D"https://download.java.net/java/early_access/javafx22/docs/api/ov=
erview-summary.html">
<span style=3D"color:#0563C1">https://download.java.net/java/early_access/j=
avafx22/docs/api/overview-summary.html</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[17]
<a href=3D"https://jdk.java.net/javafx23/"><span style=3D"color:#0563C1">ht=
tps://jdk.java.net/javafx23/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"> <o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## Topics of Interest<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- Podcast =93The Panama Effect=94 with Jorn Vernee<o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><a href=3D"https://inside.java/2024/01/08/podcast-032/"><span sty=
le=3D"color:#0563C1">https://inside.java/2024/01/08/podcast-032/</span></a>=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- Java's Plans for 2024 - Inside Java Newscast<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><a href=3D"https://inside.java/2024/01/18/newscast-61/"><span sty=
le=3D"color:#0563C1">https://inside.java/2024/01/18/newscast-61/</span></a>=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- Java 22 Unpacking - Inside Java Newscast<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><a href=3D"https://inside.java/2023/12/07/newscast-59/"><span sty=
le=3D"color:#0563C1">https://inside.java/2023/12/07/newscast-59/</span></a>=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- Java Highlights of 2023 - Inside Java Newscast<o:p></o:p></span=
></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><a href=3D"https://inside.java/2023/12/21/newscast-60/"><span sty=
le=3D"color:#0563C1">https://inside.java/2023/12/21/newscast-60/</span></a>=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK 21: The GCs keep getting better<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><a href=3D"https://kstefanj.github.io/2023/12/13/jdk-21-the-gcs-k=
eep-getting-better.html"><span style=3D"color:#0563C1">https://kstefanj.git=
hub.io/2023/12/13/jdk-21-the-gcs-keep-getting-better.html</span></a><o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- Java SE Security Developer=92s Guide<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><a href=3D"https://docs.oracle.com/en/java/javase/21/security/ind=
ex.html#Java-Platform%2C-Standard-Edition"><span style=3D"color:#0563C1">ht=
tps://docs.oracle.com/en/java/javase/21/security/index.html#Java-Platform%2=
C-Standard-Edition</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- Another VS Code Extension for Java<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><a href=3D"https://inside.java/2023/12/03/java-vscode-extension/"=
><span style=3D"color:#0563C1">https://inside.java/2023/12/03/java-vscode-e=
xtension/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## January 2024 Critical Patch Update Released<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">As part of the January 2024 CPU, Oracle released OpenJDK 21.0.2, =
JDK 21.0.2 LTS, JDK 17.0.10 LTS, 11.0.22 LTS, 8u401, and 8u401-perf.<o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">~<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">As usual, let us know if you find any quirks while testing your p=
roject(s) with the latest JDK early-access builds.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p> </o:p></span></p>
</div>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none">--David</span><o:=
p></o:p></p>
</div>
</body>
</html>
--_000_SA1PR10MB769983E16D8D00D3686FA08BFC792SA1PR10MB7699namp_--
--===============5284101608216404397==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============5284101608216404397==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Jython-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jython-dev
--===============5284101608216404397==--