JDK 21 Is Now GA, a New VS Code Extension, and an Annotation Processing Heads-up

David Delabassee <[email protected]> Fri, 20 Oct 2023 09:53:58 +0000
Newsgroups gmane.comp.lang.jython.devel
Message-ID <SA1PR10MB7699A2A5F5DC8BD81EAB9BA6FCDBA@SA1PR10MB7699.namprd10.prod.outlook.com>
--===============3177942839457830448==
Content-Language: en-GB
Content-Type: multipart/alternative;
	boundary="_000_SA1PR10MB7699A2A5F5DC8BD81EAB9BA6FCDBASA1PR10MB7699namp_"

--_000_SA1PR10MB7699A2A5F5DC8BD81EAB9BA6FCDBASA1PR10MB7699namp_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

Greetings!

JDK 21 has been released (General Availability) on September 19th as planne=
d. You can find "The Arrival of Java 21" announcement here [1], and some ad=
ditional Java 21 materials in the "Topics of Interest" section below. On be=
half of the entire Java team, let me send our thanks to all of you. Through=
 your active participation in this program, you are helping shape the Java =
platform!

Needless to say, that Java 21 is an important release, so may I ask you to =
send me a brief email with the Java 21 support status of your project(s): A=
lready supported - Plan to support short-term - Don't plan to support short=
-term ?

And now that JDK 21 is out, let's shift our attention to JDK 22 which will =
enter the Rampdown Phase in less than 50 days on December 7 [2].

I want to conclude this update by briefly mentioning three different initia=
tives to are relevant to this group as they are, in their own way and at va=
rious levels, contributing to adopt newer Java releases more rapidly: the C=
lass-File API, Oracle's Java Platform extension for VS Code, and the Java P=
layground.

### The Class-File API

The Class-File API is a new standard API for parsing, generating, and trans=
forming Java class files. One of its unique aspects is that it will co-evol=
ve with the class-file format, which overtime will greatly reduce the frict=
ion of implementing new class-file features. With the fast-paced evolution =
of the Java platform, this was much-needed. This API should soon be preview=
ed and as it matures, we expect the JDK to switch from using various custom=
 class-file libraries to this standard API. We also expect that overtime fr=
ameworks relying on bytecode manipulation will also benefit from using this=
 new JDK class-file library. For more information, please check this recent=
 Newscast [3] for an overview, Brian Goetz's JVMLS session [4] for more det=
ails and design considerations, and JEP 457: Class-File API (Preview) [5] f=
or the technical details.

### Oracle's Java Platform extension for Visual Studio Code

Oracle has just announced [6] a new Visual Studio Code extension for Java d=
evelopers. Unlike other VS Code extensions, this new extension is using und=
er the hood the `javac` compiler for code editing and compilation, and Open=
JDK's debugger interface for debugging. This enables us to offer VS Code ID=
E support for new JDK features as soon as they are introduced, even during =
JDK Early Access phases. To this effect, this VS Code Extension will suppor=
t the current JDK releases as well as the next upcoming JDK version. For mo=
re information, please check the announcement [6].

### The Java Playground

The Java Playground [7] is an online sandbox that helps testing and explori=
ng new Java language features. No setup required, just type your Java snipp=
et in your browser and run it! Right now, the Playground is using Java 21 w=
ith Preview Features enabled, and it will switch to a new Java version as s=
oon as there is a new Java language features integrated in OpenJDK Early-Ac=
cess builds. The Playground is focusing mostly on Project Amber and is cert=
ainly not mean to be some sort of a lightweight online-IDE, it is instead a=
 learning tool to play with new Java language feature shortly after they ha=
ve been integrated into the platform.

[1] https://inside.java/2023/09/19/the-arrival-of-java-21/
[2] https://mail.openjdk.org/pipermail/jdk-dev/2023-September/008269.html
[3] https://www.youtube.com/watch?v=3DbQ2Rwpyj_Ks
[4] https://www.youtube.com/watch?v=3Dpcg-E_qyMOI
[5] https://openjdk.org/jeps/457
[6] https://inside.java/2023/10/18/announcing-vscode-extension/
[7] https://dev.java/playground


## Heads-Up - JDK 22: Implicit Annotation Processing Behavior Change

As discussed in the July 2023 Quality Outreach update [8], starting in JDK =
21 javac emits a note if _implicit_ annotation processing is being used, th=
at is, if one or more annotation processors are found and run from the clas=
s path when no explicit annotation processing configuration options are use=
d.

The note is reported since, quoting from the note text: "A future release o=
f javac may disable annotation processing unless at least one processor is =
specified by name (-processor), or a search path is specified (--processor-=
path, --processor-module-path), or annotation processing is enabled explici=
tly (-proc:only, -proc:full)."

That future version of javac has arrived in JDK 22 b19+ with JDK-8306819 ("=
Consider disabling the compiler's default active annotation processing"). I=
n the situation where a note was emitted in JDK 21, in JDK 22 no note is em=
itted, and annotation processors are *not* run. To restore the previous beh=
avior with respect to running annotation processors, add the '-proc:full' j=
avac option.

Feedback on the annotation processing policy change can be sent to compiler=
-dev [9].

[8] https://mail.openjdk.org/pipermail/quality-discuss/2023-July/001122.htm=
l
[9] https://mail.openjdk.org/mailman/listinfo/compiler-dev


## JDK 21 General Availability

JDK 21, the reference implementation of Java 21, is now Generally Available=
 [10]. The OpenJDK GA 21.0.1 builds are available [11], and are provided un=
der the GNU General Public License v2, with the Classpath Exception. The Re=
lease Notes [12] and the Javadocs [13] are also available.

[10] https://mail.openjdk.org/pipermail/jdk-dev/2023-September/008267.html
[11] https://jdk.java.net/21/
[12] https://jdk.java.net/21/release-notes
[13] https://docs.oracle.com/en/java/javase/21/docs/api/index.html


## JavaFX 21 GA Builds & JavaFX 22 EA Builds

Open-source builds of JavaFX 21 are now Generally Available [14], under the=
 GNU General Public License, version 2, with the Classpath Exception. The R=
elease Notes [15], and the JavaFX 21 API Javadocs [16] are also available.

The JavaFX runtime is delivered as an SDK and as a set of jmods for each pl=
atform. You can use the SDK to compile and run JavaFX applications. You can=
 use the jmods with jlink to create a JDK that includes the JavaFX modules,=
 and optionally, your modular application. JavaFX 21 is designed to work wi=
th JDK 21, but it is known to work with JDK 17 and later versions.

In addition, the early access builds of the JavaFX 22 Runtime (builds 12) a=
re also available [17]. They enable JavaFX application developers to build =
and test their applications with JavaFX 22 on JDK 22 EA.

[14] https://jdk.java.net/javafx21/
[15] https://github.com/openjdk/jfx/blob/jfx21/doc-files/release-notes-21.m=
d
[16] https://download.java.net/java/GA/javafx21/69ca518c413e4df09f6be747a24=
00cf6/docs/api/index.html
[17] https://jdk.java.net/javafx22/


## JDK 22 Early-Access Builds

The latest Early-Access builds 20 (2023/10/19) are available [18], and are =
provided under the GNU General Public License v2, with the Classpath Except=
ion. The Release Notes are available here [19].

Changes in recent JDK 22 builds (b12-b20) that may be of interest:
(Note that this is only a curated list of changes, make sure to check [20] =
for additional changes.)

- JDK-8306819: Consider disabling the compiler's default active annotation =
=85
- JDK-8316691: Heap dump: separate stack traces for mounted virtual threads=
 =85
- JDK-8317603: Improve exception messages thrown by sun.nio.ch.Net native m=
=85
- JDK-8312522: Implementation of Foreign Function & Memory API
- JDK-8296581: Better system proxy support
- JDK-8316994: Avoid modifying ClassLoader and Module objects during -Xshar=
=85
- JDK-8316970: Add internal annotation to mark restricted methods
- JDK-8301686: TLS 1.3 handshake fails if server_name doesn't match resumin=
=85
- JDK-8268622: Performance issues in javac Name class
- JDK-8317246: Cleanup java.net.URLEncoder and URLDecoder use of file.encod=
=85
- JDK-8311084: Add typeSymbol() API for applicable constant pool entries
- JDK-8316229: Enhance class initialization logging
- JDK-8315771: [JVMCI] Resolution of bootstrap methods with int[] static ar=
guments
- JDK-8316681: Rewrite URLEncoder.encode to use small reusable buffers
- JDK-8315810: Reimplement sun.reflect.ReflectionFactory::newConstructorFor=
Serialization with method handles
- JDK-8296246: Update Unicode Data Files to Version 15.1.0
- JDK-8316160: Remove sun.misc.Unsafe.{shouldBeInitialized,ensureClassIniti=
alized}
- JDK-8313452: Improve Classfile API attributes handling safety
- JDK-8314774: Optimize URLEncoder
- JDK-8246280: Refine API to model sealed classes and interfaces in javax.l=
ang.model
- JDK-8314960: Add Certigna Root CA
- JDK-8306632: Add a JDK Property for specifying DTD support
- JDK-8315938: Deprecate for removal Unsafe methods that have standard APIs=
 for many releases
- JDK-8041488: Locale-Dependent List Patterns
- JDK-8311939: Excessive allocation of Matcher.groups array
- JDK-8314569: (fs) Improve normalization of UnixPath for input with traili=
ng slashes
- JDK-8314611: Provide more explicative error message parsing Currencies
- JDK-8315117: Update Zlib Data Compression Library to Version 1.3
- JDK-8313804: JDWP support for -Djava.net.preferIPv6Addresses=3Dsystem
- JDK-8316681: Rewrite URLEncoder.encode to use small reusable buffers

[18] https://jdk.java.net/22/
[19] https://jdk.java.net/22/release-notes
[20] https://github.com/openjdk/jdk/compare/jdk-22%2B12...jdk-22%2B20


## New Jextract Early-Access Builds

Jextract mechanically generates Java bindings from native library headers. =
New Jextract EA builds are now available (Build 21-jextract+1-2 (2023/9/25)=
) [21], those EA builds are based on JDK 21 and are intended for expert use=
rs.

[21] https://jdk.java.net/jextract/


## Topics of Interest:

Java 21=85 and Beyond - Brian Goetz Devoxx 2023 Keynote
https://inside.java/2023/10/14/java-21-and-beyond/

JDK 21 Security Enhancements
https://seanjmullan.org/blog/2023/09/22/jdk21

With Java 21, Your Code Runs Even Faster but How is that Possible?
https://inside.java/2023/10/06/devoxx-your-code-runs-even-faster/

My Favorite JDK 21 Feature: Javadoc Search URL
https://stuartmarks.wordpress.com/2023/09/22/my-favorite-jdk-21-feature-jav=
adoc-search-url/

Upgrading from Java 17 to 21 #RoadTo21
https://inside.java/2023/08/27/roadto21-upgrade/

Java 21 API Changes #RoadTo21
https://inside.java/2023/09/10/roadto21-api/

Java 21 Security #RoadTo21
https://inside.java/2023/09/13/roadto21-security/

Java 21 Tool Enhancements: Better Across the Board #RoadTo21
https://inside.java/2023/09/06/roadto21-performance/

Java 21 JVM and GC Improvements #RoadTo21
https://inside.java/2023/09/03/roadto21-performance/

Java 21 Brings Full Pattern Matching #RoadTo21
https://inside.java/2023/09/17/roadto21-pattern-matching/

Java 21 new feature: Virtual Threads #RoadTo21
https://inside.java/2023/08/30/roadto21-virtualthreads/

G1: Java's Default Garbage Collector
https://inside.java/2023/10/15/g1/

New candidate JEP: 457: Class-File API (Preview)
https://openjdk.org/jeps/457

Using JAXB in Custom Ant Tasks on Recent Java Versions
https://jaitechwriteups.blogspot.com/2023/10/using-jaxb-in-custom-ant-tasks=
-on.html

Java Records are "Trusted" and Consequently Faster
http://minborgsjavapot.blogspot.com/2023/09/java-records-are-trusted-and.ht=
ml

JVMLS 2023 Keynote
https://inside.java/2023/09/14/jvmls-keynote/

JVMLS - Project Leyden
https://inside.java/2023/09/07/project-leyden/

JVMLS - Value Objects in Valhalla
https://inside.java/2023/09/05/value-objects-in-valhalla/

Complete JVMLS 2023 playlist
https://www.youtube.com/playlist?list=3DPLX8CzqL3ArzW90jKUCf4H6xCKpStxsOzp

Teaching Old Streams New Tricks
https://inside.java/2023/10/11/devoxx-teaching-old-streams-new-tricks/

Support Markdown in javadoc Comments
https://mail.openjdk.org/pipermail/javadoc-dev/2023-October/006455.html

Brian Goetz Answers Your Java Questions
https://inside.java/2023/10/20/ama-brian/


## October 2023 Critical Patch Update Released

As part of the October 2023 CPU, Oracle released OpenJDK 21.0.1, JDK 21.0.1=
, JDK 17.0.9 LTS, 11.0.21 LTS, 8u391, and 8u391-perf.


~

PS: Don't forget to update me about your plans related to Java 21.

Until next time!


--David

--_000_SA1PR10MB7699A2A5F5DC8BD81EAB9BA6FCDBASA1PR10MB7699namp_
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;
	font-family:"Calibri",sans-serif;
	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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JDK 21 has been released (General Availability) on September 19th=
 as planned. You can find &quot;The Arrival of Java 21&quot; announcement h=
ere [1], and some additional Java 21 materials
 in the &quot;Topics of Interest&quot; section below. On behalf of the enti=
re Java team, let me send our thanks to all of you. Through your active par=
ticipation in this program, you are helping shape the Java platform!<o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Needless to say, that Java 21 is an important release, so may I a=
sk you to send me a brief email with the Java 21 support status of your pro=
ject(s): Already supported - Plan to
 support short-term - Don't plan to support short-term ? <o:p></o:p></span>=
</p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">And now that JDK 21 is out, let's shift our attention to JDK 22 w=
hich will enter the Rampdown Phase in less than 50 days on December 7 [2].<=
o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">I want to conclude this update by briefly mentioning three differ=
ent initiatives to are relevant to this group as they are, in their own way=
 and at various levels, contributing
 to adopt newer Java releases more rapidly: the Class-File API, Oracle's Ja=
va Platform extension for VS Code, and the Java Playground.<o:p></o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">### The Class-File API<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">The Class-File API is a new standard API for parsing, generating,=
 and transforming Java class files. One of its unique aspects is that it wi=
ll co-evolve with the class-file format,
 which overtime will greatly reduce the friction of implementing new class-=
file features. With the fast-paced evolution of the Java platform, this was=
 much-needed. This API should soon be previewed and as it matures, we expec=
t the JDK to switch from using various
 custom class-file libraries to this standard API. We also expect that over=
time frameworks relying on bytecode manipulation will also benefit from usi=
ng this new JDK class-file library. For more information, please check this=
 recent Newscast [3] for an overview,
 Brian Goetz's JVMLS session [4] for more details and design considerations=
, and JEP 457: Class-File API (Preview) [5] for the technical details.<o:p>=
</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">### Oracle's Java Platform extension for Visual Studio Code<o:p><=
/o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Oracle has just announced [6] a new Visual Studio Code extension =
for Java developers. Unlike other VS Code extensions, this new extension is=
 using under the hood the `javac` compiler
 for code editing and compilation, and OpenJDK's debugger interface for deb=
ugging. This enables us to offer VS Code IDE support for new JDK features a=
s soon as they are introduced, even during JDK Early Access phases. To this=
 effect, this VS Code Extension
 will support the current JDK releases as well as the next upcoming JDK ver=
sion. For more information, please check the announcement [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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">### The Java Playground<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">The Java Playground [7] is an online sandbox that helps testing a=
nd exploring new Java language features. No setup required, just type your =
Java snippet in your browser and run
 it! Right now, the Playground is using Java 21 with Preview Features enabl=
ed, and it will switch to a new Java version as soon as there is a new Java=
 language features integrated in OpenJDK Early-Access builds. The Playgroun=
d is focusing mostly on Project
 Amber and is certainly not mean to be some sort of a lightweight online-ID=
E, it is instead a learning tool to play with new Java language feature sho=
rtly after they have been integrated into the platform.<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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://inside.java/2023/09/19/the-arrival-of-java-21/"><span st=
yle=3D"color:#0563C1">https://inside.java/2023/09/19/the-arrival-of-java-21=
/</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://mail.openjdk.org/pipermail/jdk-dev/2023-September/008269=
.html"><span style=3D"color:#0563C1">https://mail.openjdk.org/pipermail/jdk=
-dev/2023-September/008269.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">[3]
<a href=3D"https://www.youtube.com/watch?v=3DbQ2Rwpyj_Ks"><span style=3D"co=
lor:#0563C1">https://www.youtube.com/watch?v=3DbQ2Rwpyj_Ks</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://www.youtube.com/watch?v=3Dpcg-E_qyMOI"><span style=3D"co=
lor:#0563C1">https://www.youtube.com/watch?v=3Dpcg-E_qyMOI</span></a><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://openjdk.org/jeps/457"><span style=3D"color:#0563C1">http=
s://openjdk.org/jeps/457</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://inside.java/2023/10/18/announcing-vscode-extension/"><sp=
an style=3D"color:#0563C1">https://inside.java/2023/10/18/announcing-vscode=
-extension/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[7]
<a href=3D"https://dev.java/playground"><span style=3D"color:#0563C1">https=
://dev.java/playground</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## Heads-Up - JDK 22: Implicit Annotation Processing Behavior Cha=
nge<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">As discussed in the July 2023 Quality Outreach update [8], starti=
ng in JDK 21 javac emits a note if _implicit_ annotation processing is bein=
g used, that is, if one or more annotation
 processors are found and run from the class path when no explicit annotati=
on processing configuration options are used.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">The note is reported since, quoting from the note text: &quot;A f=
uture release of javac may disable annotation processing unless at least on=
e processor is specified by name (-processor),
 or a search path is specified (--processor-path, --processor-module-path),=
 or annotation processing is enabled explicitly (-proc:only, -proc:full).&q=
uot;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">That future version of javac has arrived in JDK 22 b19+ with JDK-=
8306819 (&quot;Consider disabling the compiler's default active annotation =
processing&quot;). In the situation where a note
 was emitted in JDK 21, in JDK 22 no note is emitted, and annotation proces=
sors are *not* run. To restore the previous behavior with respect to runnin=
g annotation processors, add the '-proc:full' javac option.<o:p></o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Feedback on the annotation processing policy change can be sent t=
o compiler-dev [9].<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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://mail.openjdk.org/pipermail/quality-discuss/2023-July/001=
122.html">
<span style=3D"color:#0563C1">https://mail.openjdk.org/pipermail/quality-di=
scuss/2023-July/001122.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">[9]
<a href=3D"https://mail.openjdk.org/mailman/listinfo/compiler-dev"><span st=
yle=3D"color:#0563C1">https://mail.openjdk.org/mailman/listinfo/compiler-de=
v</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## JDK 21 General Availability<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JDK 21, the reference implementation of Java 21, is now Generally=
 Available [10]. The OpenJDK GA 21.0.1 builds are available [11], and are p=
rovided under the GNU General Public
 License v2, with the Classpath Exception. The Release Notes [12] and the J=
avadocs [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>&nbsp;</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://mail.openjdk.org/pipermail/jdk-dev/2023-September/008267=
.html"><span style=3D"color:#0563C1">https://mail.openjdk.org/pipermail/jdk=
-dev/2023-September/008267.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">[11]
<a href=3D"https://jdk.java.net/21/"><span style=3D"color:#0563C1">https://=
jdk.java.net/21/</span></a><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/21/release-notes"><span style=3D"color:#056=
3C1">https://jdk.java.net/21/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">[13]
<a href=3D"https://docs.oracle.com/en/java/javase/21/docs/api/index.html"><=
span style=3D"color:#0563C1">https://docs.oracle.com/en/java/javase/21/docs=
/api/index.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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## JavaFX 21 GA Builds &amp; JavaFX 22 EA 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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Open-source builds of JavaFX 21 are now Generally Available [14],=
 under the GNU General Public License, version 2, with the Classpath Except=
ion. The Release Notes [15], and the
 JavaFX 21 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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">The JavaFX runtime is delivered as an SDK and as a set of jmods f=
or each platform. You can use the SDK to compile and run JavaFX application=
s. You can use the jmods with jlink
 to create a JDK that includes the JavaFX modules, and optionally, your mod=
ular application. JavaFX 21 is designed to work with JDK 21, but it is know=
n 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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">In addition, the early access builds of the JavaFX 22 Runtime (bu=
ilds 12) are also available [17]. They enable JavaFX application developers=
 to build and test their applications
 with JavaFX 22 on JDK 22 EA.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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://jdk.java.net/javafx21/"><span style=3D"color:#0563C1">ht=
tps://jdk.java.net/javafx21/</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://github.com/openjdk/jfx/blob/jfx21/doc-files/release-note=
s-21.md">
<span style=3D"color:#0563C1">https://github.com/openjdk/jfx/blob/jfx21/doc=
-files/release-notes-21.md</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/GA/javafx21/69ca518c413e4df09f6be=
747a2400cf6/docs/api/index.html">
<span style=3D"color:#0563C1">https://download.java.net/java/GA/javafx21/69=
ca518c413e4df09f6be747a2400cf6/docs/api/index.html</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">[17]
<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"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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>&nbsp;</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 20 (2023/10/19) are available [18]=
, and are provided under the GNU General Public License v2, with the Classp=
ath Exception. The Release Notes are
 available here [19].<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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 (b12-b20) 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">(Note that this is only a curated list of changes, make sure to c=
heck [20] for additional changes.)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8306819: Consider disabling the compiler's default active a=
nnotation =85<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316691: Heap dump: separate stack traces for mounted virtu=
al threads =85<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8317603: Improve exception messages thrown by sun.nio.ch.Ne=
t native m=85<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8312522: Implementation of Foreign Function &amp; Memory AP=
I
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8296581: Better system proxy support
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316994: Avoid modifying ClassLoader and Module objects dur=
ing -Xshar=85<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316970: Add internal annotation to mark restricted methods=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8301686: TLS 1.3 handshake fails if server_name doesn't mat=
ch resumin=85<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8268622: Performance issues in javac Name class<o:p></o:p><=
/span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8317246: Cleanup java.net.URLEncoder and URLDecoder use of =
file.encod=85<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8311084: Add typeSymbol() API for applicable constant pool =
entries<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316229: Enhance class initialization logging<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8315771: [JVMCI] Resolution of bootstrap methods with int[]=
 static arguments<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316681: Rewrite URLEncoder.encode to use small reusable bu=
ffers<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8315810: Reimplement sun.reflect.ReflectionFactory::newCons=
tructorForSerialization with method handles<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8296246: Update Unicode Data Files to Version 15.1.0<o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316160: Remove sun.misc.Unsafe.{shouldBeInitialized,ensure=
ClassInitialized}<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8313452: Improve Classfile API attributes handling safety<o=
:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8314774: Optimize URLEncoder<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8246280: Refine API to model sealed classes and interfaces =
in javax.lang.model<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8314960: Add Certigna Root CA<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8306632: Add a JDK Property for specifying DTD support<o:p>=
</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8315938: Deprecate for removal Unsafe methods that have sta=
ndard APIs for many releases<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8041488: Locale-Dependent List Patterns<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8311939: Excessive allocation of Matcher.groups array<o:p><=
/o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8314569: (fs) Improve normalization of UnixPath for input w=
ith trailing slashes<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8314611: Provide more explicative error message parsing Cur=
rencies<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8315117: Update Zlib Data Compression Library to Version 1.=
3<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8313804: JDWP support for -Djava.net.preferIPv6Addresses=3D=
system<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">- JDK-8316681: Rewrite URLEncoder.encode to use small reusable bu=
ffers<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[18]
<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">[19]
<a href=3D"https://jdk.java.net/22/release-notes"><span style=3D"color:#056=
3C1">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">[20]
<a href=3D"https://github.com/openjdk/jdk/compare/jdk-22%2B12...jdk-22%2B20=
"><span style=3D"color:#0563C1">https://github.com/openjdk/jdk/compare/jdk-=
22%2B12...jdk-22%2B20</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## New Jextract 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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Jextract mechanically generates Java bindings from native library=
 headers. New Jextract EA builds are now available (Build 21-jextract+1-2 (=
2023/9/25)) [21], those EA builds are
 based on JDK 21 and are intended for expert users.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">[21]
<a href=3D"https://jdk.java.net/jextract/"><span style=3D"color:#0563C1">ht=
tps://jdk.java.net/jextract/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java 21=85 and Beyond - Brian Goetz Devoxx 2023 Keynote<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/10/14/java-21-and-beyond/"><s=
pan style=3D"color:#0563C1">https://inside.java/2023/10/14/java-21-and-beyo=
nd/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JDK 21 Security Enhancements<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://seanjmullan.org/blog/2023/09/22/jdk21"><span s=
tyle=3D"color:#0563C1">https://seanjmullan.org/blog/2023/09/22/jdk21</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">With Java 21, Your Code Runs Even Faster but How is that Possible=
?<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/10/06/devoxx-your-code-runs-e=
ven-faster/"><span style=3D"color:#0563C1">https://inside.java/2023/10/06/d=
evoxx-your-code-runs-even-faster/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">My Favorite JDK 21 Feature: Javadoc Search URL<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://stuartmarks.wordpress.com/2023/09/22/my-favori=
te-jdk-21-feature-javadoc-search-url/"><span style=3D"color:#0563C1">https:=
//stuartmarks.wordpress.com/2023/09/22/my-favorite-jdk-21-feature-javadoc-s=
earch-url/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Upgrading from Java 17 to 21 #RoadTo21<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/08/27/roadto21-upgrade/"><spa=
n style=3D"color:#0563C1">https://inside.java/2023/08/27/roadto21-upgrade/<=
/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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java 21 API Changes #RoadTo21<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/09/10/roadto21-api/"><span st=
yle=3D"color:#0563C1">https://inside.java/2023/09/10/roadto21-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"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java 21 Security #RoadTo21<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/09/13/roadto21-security/"><sp=
an style=3D"color:#0563C1">https://inside.java/2023/09/13/roadto21-security=
/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java 21 Tool Enhancements: Better Across the Board #RoadTo21<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/09/06/roadto21-performance/">=
<span style=3D"color:#0563C1">https://inside.java/2023/09/06/roadto21-perfo=
rmance/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java 21 JVM and GC Improvements #RoadTo21<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/09/03/roadto21-performance/">=
<span style=3D"color:#0563C1">https://inside.java/2023/09/03/roadto21-perfo=
rmance/</span></a><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java 21 Brings Full Pattern Matching #RoadTo21<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/09/17/roadto21-pattern-matchi=
ng/"><span style=3D"color:#0563C1">https://inside.java/2023/09/17/roadto21-=
pattern-matching/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java 21 new feature: Virtual Threads #RoadTo21<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/08/30/roadto21-virtualthreads=
/"><span style=3D"color:#0563C1">https://inside.java/2023/08/30/roadto21-vi=
rtualthreads/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">G1: Java's Default Garbage Collector<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/10/15/g1/"><span style=3D"col=
or:#0563C1">https://inside.java/2023/10/15/g1/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">New candidate JEP: 457: Class-File API (Preview)<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://openjdk.org/jeps/457"><span style=3D"color:#05=
63C1">https://openjdk.org/jeps/457</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Using JAXB in Custom Ant Tasks on Recent Java Versions<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://jaitechwriteups.blogspot.com/2023/10/using-jax=
b-in-custom-ant-tasks-on.html"><span style=3D"color:#0563C1">https://jaitec=
hwriteups.blogspot.com/2023/10/using-jaxb-in-custom-ant-tasks-on.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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Java Records are &quot;Trusted&quot; and Consequently Faster<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"http://minborgsjavapot.blogspot.com/2023/09/java-recor=
ds-are-trusted-and.html"><span style=3D"color:#0563C1">http://minborgsjavap=
ot.blogspot.com/2023/09/java-records-are-trusted-and.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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JVMLS 2023 Keynote<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/09/14/jvmls-keynote/"><span s=
tyle=3D"color:#0563C1">https://inside.java/2023/09/14/jvmls-keynote/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JVMLS - Project Leyden<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/09/07/project-leyden/"><span =
style=3D"color:#0563C1">https://inside.java/2023/09/07/project-leyden/</spa=
n></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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">JVMLS - Value Objects in Valhalla<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/09/05/value-objects-in-valhal=
la/"><span style=3D"color:#0563C1">https://inside.java/2023/09/05/value-obj=
ects-in-valhalla/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Complete JVMLS 2023 playlist<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://www.youtube.com/playlist?list=3DPLX8CzqL3ArzW9=
0jKUCf4H6xCKpStxsOzp"><span style=3D"color:#0563C1">https://www.youtube.com=
/playlist?list=3DPLX8CzqL3ArzW90jKUCf4H6xCKpStxsOzp</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Teaching Old Streams New Tricks<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/10/11/devoxx-teaching-old-str=
eams-new-tricks/"><span style=3D"color:#0563C1">https://inside.java/2023/10=
/11/devoxx-teaching-old-streams-new-tricks/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Support Markdown in javadoc Comments<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://mail.openjdk.org/pipermail/javadoc-dev/2023-Oc=
tober/006455.html"><span style=3D"color:#0563C1">https://mail.openjdk.org/p=
ipermail/javadoc-dev/2023-October/006455.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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Brian Goetz Answers Your Java Questions<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/10/20/ama-brian/"><span style=
=3D"color:#0563C1">https://inside.java/2023/10/20/ama-brian/</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">## October 2023 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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">As part of the October 2023 CPU, Oracle released OpenJDK 21.0.1, =
JDK 21.0.1, JDK 17.0.9 LTS, 11.0.21 LTS, 8u391, and 8u391-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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">PS: Don't forget to update me about your plans related to Java 21=
.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB">Until next time!<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"mso-ligatures:none;mso-fareast-langua=
ge:EN-GB"><o:p>&nbsp;</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_SA1PR10MB7699A2A5F5DC8BD81EAB9BA6FCDBASA1PR10MB7699namp_--


--===============3177942839457830448==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============3177942839457830448==
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

--===============3177942839457830448==--