You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by David Delabassee <da...@oracle.com> on 2022/05/16 07:53:47 UTC
JDK 19 - Virtual Threads Testing!
Welcome to a new OpenJDK Quality Outreach update!
This time, we have one update but a major one: JEP 425 (Virtual Threads
preview) has been integrated into the OpenJDK mainline! JDK 19
Early-Access builds 22 are the first mainline builds with Virtual
Threads (preview) support. So, Project Loom is now getting closer and
closer!
Please make sure to check the Heads-up below even if you don’t intend to
use virtual threads in the short future.
## Heads-up - JEP 425 Virtual Threads (preview) testing
The goal of Project Loom is to introduce in the Java platform an
easy-to-use, high-throughput lightweight concurrency model, and a
related new concurrent programming model.
Developed in Project Loom, JEP 425 introduces virtual threads to the
Java Platform. Virtual threads are lightweight threads that dramatically
reduce the effort of writing, maintaining, and observing high-throughput
concurrent applications. Note that virtual threads are a preview API in
JDK 19. Please make sure to read 'JEP 425: Virtual Threads (Preview)'
for a detailed explanation.
A lot of testing has already been done but we are asking, once again,
your help to test your project(s) with the latest JDK 19 Early-Access
builds, even if you don’t intend to use virtual threads any time soon.
There are two approaches to test your project:
1. Update your code to use virtual threads …or
2. Simply test your existing unchanged code with the preview feature
enabled.
Both approaches should yield valuable feedback.
If you choose to adapt your application to use virtual threads (cf.
JavaDoc [2]), be aware that in some cases it’s not just about updating
your code to use virtual threads instead of platform threads; there are
some additional considerations. For example, virtual threads shouldn’t
be pooled [3], code that relies heavily on thread locals [4] will
require some work to move to a world where there is a new thread for
each task, etc.
Given that are some minor behavior changes and that `ThreadGroup` has
been degraded, testing your code as-is, i.e., without using virtual
threads but with the preview feature enabled at runtime, will also be
useful. For more details, please check 'JEP 425 - Risks and Assumptions'
[5].
One difference between to the EA builds published by Project Loom and
the latest JDK 19 EA builds is that the `--enable-preview` flag is
required at run-time to use the new APIs. It’s not possible to use the
APIs with core reflection to avoid the need for `--enable-preview`.
Finally, some tools especially tools relying on JVM TI agents might not
be fully ready for virtual threads.
Your help testing this important update is greatly appreciated, all
feedback should be sent to the 'loom-dev' mailing list [6].
[1] https://openjdk.java.net/jeps/425
[2]
https://download.java.net/java/early_access/jdk19/docs/api/java.base/java/lang/Thread.html
[3] https://openjdk.java.net/jeps/425#Do-not-pool-virtual-threads
[4] https://openjdk.java.net/jeps/425#Thread-local-variables
[5] https://openjdk.java.net/jeps/425#Risks-and-Assumptions
[6] https://mail.openjdk.java.net/pipermail/loom-dev/
## JDK 19 Early-Access builds
JDK 19 Early-Access builds 22 are now available [7], and are provided
under the GNU General Public License v2, with the Classpath Exception.
Make sure to check the Release Notes [8] and the JavaDoc [9].
[7] https://jdk.java.net/19/
[8] https://jdk.java.net/19/release-notes
[9] https://download.java.net/java/early_access/jdk19/docs/
### Current JDK 19 JEPs
- 405: Record Patterns (Preview) - Proposed to target
- 422: Linux/RISC-V Port - Integrated
- 424: Foreign Function & Memory API (Preview) - Integrated
- 425: Virtual Threads (Preview) - Integrated
- 426: Vector API (4th Incubator) - Targeted
- 427: Pattern Matching for switch (3rd Preview) - Targeted
### Recent changes that may be of interest:
Build 22:
- JDK-8284161: Implementation of Virtual Threads (Preview)
- JDK-8285947: Avoid redundant HashMap.containsKey calls in ZoneName
- JDK-8212136: Remove finalizer implementation in SSLSocketImpl
- JDK-8285872: JFR: Remove finalize() methods
- JDK-8285914: AppCDS crash when using shared archive with old class file
- JDK-8286163: micro-optimize Instant.plusSeconds
- JDK-8282420: JFR: Remove event handlers
- JDK-8282559: Allow multiple search terms in javadoc search
Build 21:
- JDK-8255552: Add DES/3DES/MD5 to jdk.security.legacyAlgorithms
- JDK-8278370: [win] Disable side-by-side installations of multiple JDK
updates in Windows JDK installers
- JDK-8281010: [macos] Disable side-by-side installations of multiple
JDK updates in macOS JDK installers
- JDK-8236128: Allow jpackage create installers for services
- JDK-8279598: provide adapter from RandomGenerator to Random
Build 20:
- JDK-8284553: Deprecate the DEFAULT static field of OAEPParameterSpec
- JDK-8283620: System.out does not use the encoding/charset specified in
the Javadoc
- JDK-8285445: Enable Windows Alternate Data Streams by default
- JDK-8284930: Re-examine FilterInputStream mark/reset
- JDK-8284890: Support for Do not fragment IP socket options
- JDK-8282823: javac should constrain more uses of preview APIs
- JDK-8285477: Add a PRECISION public static field to j.l.Float and
j.l.Double
Build 19:
- JDK-8186958: New Methods to Create Preallocated HashMaps
- JDK-8284775: Simplify String.substring(_, length()) calls
- JDK-8283892: Compress and expand bits
- JDK-8280915: Better parallelization for AbstractSpliterator and IteratorS…
- JDK-8284681: compiler/c2/aarch64/TestFarJump.java fails with "RuntimeExce…
- JDK-8283790: G1: Remove redundant card/heap-address transition
- JDK-8285001: Simplify StringLatin1.regionMatches
- JDK-8284880: Re-examine sun.invoke.util.Wrapper hash tables
- JDK-8278356: Improve file creation
## Topics of Interest
- Java Cryptographic Roadmap update
https://java.com/en/jre-jdk-cryptoroadmap.html
- Virtual Thread Deep Dive
https://inside.java/2022/04/07/insidejava-newscast-023/
- Why Write an Empty finalize() Method?
https://stuartmarks.wordpress.com/2022/04/27/why-write-an-empty-finalize-method/
- WHEN and NULL In Pattern Matching
https://inside.java/2022/05/05/insidejava-newscast-024/
- JDK 8 to JDK 18 in GC: 10 Releases, 2000+ Enhancements
https://inside.java/2022/05/02/odl-jdk8-to-jdk18-gc/
- ZGC - What's new in JDK 18 https://malloc.se/blog/zgc-jdk18
- Java Next - From Amber to Loom, from Panama to Valhalla
https://inside.java/2022/05/09/java-next/
## JDK Update Patch Release
As announced with the April 2022 CPU release, we have produced update
patch releases for all Java SE supported versions. The new versions are
JDK 18.0.1.1 (publicly available), 17.0.3.1 (publicly available),
11.0.15.1, 8u333, 7u343, and OpenJDK 18.0.1.1 (publicly available).
As usual, let us know if you find any issues while testing your
project(s) on the latest JDK early-access builds. Thanks for your support!
--David
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: JDK 19 - Virtual Threads Testing!
Posted by Martin Grigorov <mg...@apache.org>.
Hi Mark,
I confirm that all tests pass now!
Thank you!
Martin
On Wed, May 18, 2022 at 1:40 PM Mark Thomas <ma...@apache.org> wrote:
> On 18/05/2022 10:25, Mark Thomas wrote:
> > Hi all,
> >
> > So of the three issues Martin identified, I've fixed 1 & 3 which were
> > the simple ones.
> >
> > For 1, the import handler needed updating to add the new classes added
> > to java.lang in Java 19.
> >
> > For 3, the memory leak protection code that stops executor threads
> > needed to be updated for some changes to Thread internals.
> >
> > The tricky one is 2.
> >
> > Prior to Java 19, the character -> byte encoders used an 8k buffer for
> > character data. This aligned with Tomcat's internals. This meant that
> > the new HEAD handling in the Servlet API had the same buffering
> > behaviour as Tomact's internals so GET and HEAD behaved the same way.
> >
> > In Java 19, the character -> byte encoders start with a 512 byte buffer
> > that may grow up to 8192 bytes. This means the buffering for HEAD
> > handling is different to the buffering for GET handling which in turn
> > means GET and HEAD see different headers (even accounting for allowed
> > differences).
> >
> > The issue is when responses are committed (and headers are fixed). The
> > HEAD tests examine the behaviour at the buffer boundaries including
> > reset behaviour. GET and HEAD effectively having different buffer sizes
> > triggers different behaviour for some of these resets which is why some
> > fail.
> >
> > I'm currently thinking about ways to tackle this but I don't yet have a
> > solution I'm completely happy with. Suggestions welcome.
>
> I found a solution. Since the issue was only with the legacy handling
> mode for HEAD requests, adjusting the response buffer size to compensate
> for the smaller char -> byte buffer addresses the issue.
>
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
Re: JDK 19 - Virtual Threads Testing!
Posted by Mark Thomas <ma...@apache.org>.
On 18/05/2022 10:25, Mark Thomas wrote:
> Hi all,
>
> So of the three issues Martin identified, I've fixed 1 & 3 which were
> the simple ones.
>
> For 1, the import handler needed updating to add the new classes added
> to java.lang in Java 19.
>
> For 3, the memory leak protection code that stops executor threads
> needed to be updated for some changes to Thread internals.
>
> The tricky one is 2.
>
> Prior to Java 19, the character -> byte encoders used an 8k buffer for
> character data. This aligned with Tomcat's internals. This meant that
> the new HEAD handling in the Servlet API had the same buffering
> behaviour as Tomact's internals so GET and HEAD behaved the same way.
>
> In Java 19, the character -> byte encoders start with a 512 byte buffer
> that may grow up to 8192 bytes. This means the buffering for HEAD
> handling is different to the buffering for GET handling which in turn
> means GET and HEAD see different headers (even accounting for allowed
> differences).
>
> The issue is when responses are committed (and headers are fixed). The
> HEAD tests examine the behaviour at the buffer boundaries including
> reset behaviour. GET and HEAD effectively having different buffer sizes
> triggers different behaviour for some of these resets which is why some
> fail.
>
> I'm currently thinking about ways to tackle this but I don't yet have a
> solution I'm completely happy with. Suggestions welcome.
I found a solution. Since the issue was only with the legacy handling
mode for HEAD requests, adjusting the response buffer size to compensate
for the smaller char -> byte buffer addresses the issue.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: JDK 19 - Virtual Threads Testing!
Posted by Mark Thomas <ma...@apache.org>.
Hi all,
So of the three issues Martin identified, I've fixed 1 & 3 which were
the simple ones.
For 1, the import handler needed updating to add the new classes added
to java.lang in Java 19.
For 3, the memory leak protection code that stops executor threads
needed to be updated for some changes to Thread internals.
The tricky one is 2.
Prior to Java 19, the character -> byte encoders used an 8k buffer for
character data. This aligned with Tomcat's internals. This meant that
the new HEAD handling in the Servlet API had the same buffering
behaviour as Tomact's internals so GET and HEAD behaved the same way.
In Java 19, the character -> byte encoders start with a 512 byte buffer
that may grow up to 8192 bytes. This means the buffering for HEAD
handling is different to the buffering for GET handling which in turn
means GET and HEAD see different headers (even accounting for allowed
differences).
The issue is when responses are committed (and headers are fixed). The
HEAD tests examine the behaviour at the buffer boundaries including
reset behaviour. GET and HEAD effectively having different buffer sizes
triggers different behaviour for some of these resets which is why some
fail.
I'm currently thinking about ways to tackle this but I don't yet have a
solution I'm completely happy with. Suggestions welcome.
Mark
On 17/05/2022 11:27, Mark Thomas wrote:
> On 16/05/2022 14:14, Martin Grigorov wrote:
>> Hello Tomcat devs,
>>
>> Some tests fail with JDK 19-ea+22-1598:
>
> <snip/>
>
>> [concat] Testsuites with failed tests:
>> [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
>> [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
>
> <snip/>
>
>> Here are the error types:
>>
>>
>> 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
>> Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec
>>
>> Testcase: testClassListsAreComplete took 0.444 sec
>> FAILED
>> java.lang.Thread.Builder.OfPlatform
>> junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
>> at
>> jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
>>
>> at
>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
>>
>> at
>> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
>>
>> at
>> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
>>
>
> I've fixed this one. Looking at the others.
>
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: JDK 19 - Virtual Threads Testing!
Posted by Rémy Maucherat <re...@apache.org>.
On Fri, May 20, 2022 at 9:35 AM Martin Grigorov <mg...@apache.org> wrote:
>
> On Tue, May 17, 2022 at 4:23 PM Rémy Maucherat <re...@apache.org> wrote:
>
> > On Tue, May 17, 2022 at 12:27 PM Mark Thomas <ma...@apache.org> wrote:
> > >
> > > On 16/05/2022 14:14, Martin Grigorov wrote:
> > > > Hello Tomcat devs,
> > > >
> > > > Some tests fail with JDK 19-ea+22-1598:
> > >
> > > <snip/>
> > >
> > > > [concat] Testsuites with failed tests:
> > > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> > > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
> > >
> > > <snip/>
> > >
> > > > Here are the error types:
> > > >
> > > >
> > > > 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> > > > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463
> > sec
> > > >
> > > > Testcase: testClassListsAreComplete took 0.444 sec
> > > > FAILED
> > > > java.lang.Thread.Builder.OfPlatform
> > > > junit.framework.AssertionFailedError:
> > java.lang.Thread.Builder.OfPlatform
> > > > at
> > > >
> > jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> > > > at
> > > >
> > java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> > > > at
> > > >
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> > > > at
> > > >
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> > >
> > > I've fixed this one. Looking at the others.
> >
> > Ok, so since we're now adding support for Java 19 and the current
> > trunk has the Panama preview API, I'll add a new "openssl-foreign"
> > module that targets it.
> >
>
> According to
> https://github.com/openjdk/jdk/commit/2c5d136260fa717afa374db8b923b7c886d069b7
> the FF & Memory API is added in b23.
> Above we were using b22.
>
> https://jdk.java.net/19/ has been just updated to b23.
>
> Do you want me to update JDK 19 at Buildbot (& Jenkins) to b23 ?
That's good news if you want to test the OpenSSL support with a more
final version. I don't really know what kind of API changes can be
expected following the preview, so we'll see how that goes. The API
itself is a lot cleaner than the one from Java 17.
One feature remaining that could be interesting depending on how it's
done is: https://bugs.openjdk.java.net/browse/JDK-8254693
Allowing to pass heap byte buffers (as long as this capability remains
flexible enough, if there's a surprise like "you can never deallocate
it" then it's not going to be useful ...) would be very significant
for Tomcat allowing to get rid of ugly memory copies and direct BB
allocations.
The full foreign task list is:
https://bugs.openjdk.java.net/Dashboard.jspa?selectPageId=18412
Rémy
>
>
> >
> > Rémy
> >
> > > Mark
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > > For additional commands, e-mail: dev-help@tomcat.apache.org
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: dev-help@tomcat.apache.org
> >
> >
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: JDK 19 - Virtual Threads Testing!
Posted by Martin Grigorov <mg...@apache.org>.
On Tue, May 17, 2022 at 4:23 PM Rémy Maucherat <re...@apache.org> wrote:
> On Tue, May 17, 2022 at 12:27 PM Mark Thomas <ma...@apache.org> wrote:
> >
> > On 16/05/2022 14:14, Martin Grigorov wrote:
> > > Hello Tomcat devs,
> > >
> > > Some tests fail with JDK 19-ea+22-1598:
> >
> > <snip/>
> >
> > > [concat] Testsuites with failed tests:
> > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
> >
> > <snip/>
> >
> > > Here are the error types:
> > >
> > >
> > > 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> > > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463
> sec
> > >
> > > Testcase: testClassListsAreComplete took 0.444 sec
> > > FAILED
> > > java.lang.Thread.Builder.OfPlatform
> > > junit.framework.AssertionFailedError:
> java.lang.Thread.Builder.OfPlatform
> > > at
> > >
> jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> > > at
> > >
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> > > at
> > >
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> > > at
> > >
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> >
> > I've fixed this one. Looking at the others.
>
> Ok, so since we're now adding support for Java 19 and the current
> trunk has the Panama preview API, I'll add a new "openssl-foreign"
> module that targets it.
>
According to
https://github.com/openjdk/jdk/commit/2c5d136260fa717afa374db8b923b7c886d069b7
the FF & Memory API is added in b23.
Above we were using b22.
https://jdk.java.net/19/ has been just updated to b23.
Do you want me to update JDK 19 at Buildbot (& Jenkins) to b23 ?
>
> Rémy
>
> > Mark
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: dev-help@tomcat.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
Re: JDK 19 - Virtual Threads Testing!
Posted by Rémy Maucherat <re...@apache.org>.
On Tue, May 17, 2022 at 12:27 PM Mark Thomas <ma...@apache.org> wrote:
>
> On 16/05/2022 14:14, Martin Grigorov wrote:
> > Hello Tomcat devs,
> >
> > Some tests fail with JDK 19-ea+22-1598:
>
> <snip/>
>
> > [concat] Testsuites with failed tests:
> > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
>
> <snip/>
>
> > Here are the error types:
> >
> >
> > 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec
> >
> > Testcase: testClassListsAreComplete took 0.444 sec
> > FAILED
> > java.lang.Thread.Builder.OfPlatform
> > junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
> > at
> > jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> > at
> > java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> > at
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> > at
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
>
> I've fixed this one. Looking at the others.
Ok, so since we're now adding support for Java 19 and the current
trunk has the Panama preview API, I'll add a new "openssl-foreign"
module that targets it.
Rémy
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: JDK 19 - Virtual Threads Testing!
Posted by Mark Thomas <ma...@apache.org>.
On 16/05/2022 14:14, Martin Grigorov wrote:
> Hello Tomcat devs,
>
> Some tests fail with JDK 19-ea+22-1598:
<snip/>
> [concat] Testsuites with failed tests:
> [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
<snip/>
> Here are the error types:
>
>
> 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec
>
> Testcase: testClassListsAreComplete took 0.444 sec
> FAILED
> java.lang.Thread.Builder.OfPlatform
> junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
> at
> jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> at
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
I've fixed this one. Looking at the others.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: JDK 19 - Virtual Threads Testing!
Posted by Martin Grigorov <mg...@apache.org>.
Hi David,
The issues in Apache Tomcat have been fixed and now everything is OK with
JDK 19-ea+22-1598!
Regards,
Martin
On Mon, May 16, 2022 at 4:14 PM Martin Grigorov <mg...@apache.org>
wrote:
> Hello Tomcat devs,
>
> Some tests fail with JDK 19-ea+22-1598:
>
> [concat] Testsuites with failed tests:
> [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO2.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO.txt
> [concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO2.txt
> [concat]
> TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO.txt
> [concat]
> TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO2.txt
>
>
> Here are the error types:
>
>
> 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec
>
> Testcase: testClassListsAreComplete took 0.444 sec
> FAILED
> java.lang.Thread.Builder.OfPlatform
> junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
> at
> jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> at
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
>
>
> 2. TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt
>
> 5-EndOfStream
> expected:<-Header-[content-[length]-[0]]> but
> was:<-Header-[content-[type]-[text/plain;charset=UTF-8]]>
> at
> jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>
> Testcase: testDoHead[467: true 8,192 true 1,023 FULL 0 true] took 2.129 sec
> FAILED
> expected:<4> but was:<5>
> junit.framework.AssertionFailedError: expected:<4> but was:<5>
> at
> jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHead(HttpServletDoHeadBaseTest.java:94)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>
> Testcase: testDoHeadHttp2[467: true 8,192 true 1,023 FULL 0 true] took
> 1.07 sec
> FAILED
> 3-HeadersStart
> 3-Header-[:status]-[200]
> 3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 3-HeadersEnd
> 5-HeadersStart
> 5-Header-[:status]-[200]
> 5-Header-[content-type]-[text/plain;charset=UTF-8]
> 5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 5-HeadersEnd
> 5-EndOfStream
> expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
> was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
> junit.framework.AssertionFailedError: 3-HeadersStart
> 3-Header-[:status]-[200]
> 3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 3-HeadersEnd
> 5-HeadersStart
> 5-Header-[:status]-[200]
> 5-Header-[content-type]-[text/plain;charset=UTF-8]
> 5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 5-HeadersEnd
> 5-EndOfStream
> expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
> was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
> at
> jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>
>
>
> 3. Testcase: testTimerThreadLeak took 2.609 sec
> FAILED
> null
> junit.framework.AssertionFailedError
> at
> org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.testTimerThreadLeak(TestWebappClassLoaderExecutorMemoryLeak.java:63)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>
>
> Regards,
> Martin
>
>
> On Mon, May 16, 2022 at 10:54 AM David Delabassee <
> david.delabassee@oracle.com> wrote:
>
>> Welcome to a new OpenJDK Quality Outreach update!
>>
>> This time, we have one update but a major one: JEP 425 (Virtual Threads
>> preview) has been integrated into the OpenJDK mainline! JDK 19
>> Early-Access builds 22 are the first mainline builds with Virtual
>> Threads (preview) support. So, Project Loom is now getting closer and
>> closer!
>>
>> Please make sure to check the Heads-up below even if you don’t intend to
>> use virtual threads in the short future.
>>
>>
>> ## Heads-up - JEP 425 Virtual Threads (preview) testing
>>
>> The goal of Project Loom is to introduce in the Java platform an
>> easy-to-use, high-throughput lightweight concurrency model, and a
>> related new concurrent programming model.
>>
>> Developed in Project Loom, JEP 425 introduces virtual threads to the
>> Java Platform. Virtual threads are lightweight threads that dramatically
>> reduce the effort of writing, maintaining, and observing high-throughput
>> concurrent applications. Note that virtual threads are a preview API in
>> JDK 19. Please make sure to read 'JEP 425: Virtual Threads (Preview)'
>> for a detailed explanation.
>>
>> A lot of testing has already been done but we are asking, once again,
>> your help to test your project(s) with the latest JDK 19 Early-Access
>> builds, even if you don’t intend to use virtual threads any time soon.
>>
>> There are two approaches to test your project:
>> 1. Update your code to use virtual threads …or
>> 2. Simply test your existing unchanged code with the preview feature
>> enabled.
>>
>> Both approaches should yield valuable feedback.
>>
>> If you choose to adapt your application to use virtual threads (cf.
>> JavaDoc [2]), be aware that in some cases it’s not just about updating
>> your code to use virtual threads instead of platform threads; there are
>> some additional considerations. For example, virtual threads shouldn’t
>> be pooled [3], code that relies heavily on thread locals [4] will
>> require some work to move to a world where there is a new thread for
>> each task, etc.
>>
>> Given that are some minor behavior changes and that `ThreadGroup` has
>> been degraded, testing your code as-is, i.e., without using virtual
>> threads but with the preview feature enabled at runtime, will also be
>> useful. For more details, please check 'JEP 425 - Risks and Assumptions'
>> [5].
>>
>> One difference between to the EA builds published by Project Loom and
>> the latest JDK 19 EA builds is that the `--enable-preview` flag is
>> required at run-time to use the new APIs. It’s not possible to use the
>> APIs with core reflection to avoid the need for `--enable-preview`.
>>
>> Finally, some tools especially tools relying on JVM TI agents might not
>> be fully ready for virtual threads.
>>
>> Your help testing this important update is greatly appreciated, all
>> feedback should be sent to the 'loom-dev' mailing list [6].
>>
>> [1] https://openjdk.java.net/jeps/425
>> [2]
>>
>> https://download.java.net/java/early_access/jdk19/docs/api/java.base/java/lang/Thread.html
>> [3] https://openjdk.java.net/jeps/425#Do-not-pool-virtual-threads
>> [4] https://openjdk.java.net/jeps/425#Thread-local-variables
>> [5] https://openjdk.java.net/jeps/425#Risks-and-Assumptions
>> [6] https://mail.openjdk.java.net/pipermail/loom-dev/
>>
>>
>> ## JDK 19 Early-Access builds
>>
>> JDK 19 Early-Access builds 22 are now available [7], and are provided
>> under the GNU General Public License v2, with the Classpath Exception.
>> Make sure to check the Release Notes [8] and the JavaDoc [9].
>>
>> [7] https://jdk.java.net/19/
>> [8] https://jdk.java.net/19/release-notes
>> [9] https://download.java.net/java/early_access/jdk19/docs/
>>
>> ### Current JDK 19 JEPs
>> - 405: Record Patterns (Preview) - Proposed to target
>> - 422: Linux/RISC-V Port - Integrated
>> - 424: Foreign Function & Memory API (Preview) - Integrated
>> - 425: Virtual Threads (Preview) - Integrated
>> - 426: Vector API (4th Incubator) - Targeted
>> - 427: Pattern Matching for switch (3rd Preview) - Targeted
>>
>> ### Recent changes that may be of interest:
>>
>> Build 22:
>> - JDK-8284161: Implementation of Virtual Threads (Preview)
>> - JDK-8285947: Avoid redundant HashMap.containsKey calls in ZoneName
>> - JDK-8212136: Remove finalizer implementation in SSLSocketImpl
>> - JDK-8285872: JFR: Remove finalize() methods
>> - JDK-8285914: AppCDS crash when using shared archive with old class file
>> - JDK-8286163: micro-optimize Instant.plusSeconds
>> - JDK-8282420: JFR: Remove event handlers
>> - JDK-8282559: Allow multiple search terms in javadoc search
>>
>> Build 21:
>> - JDK-8255552: Add DES/3DES/MD5 to jdk.security.legacyAlgorithms
>> - JDK-8278370: [win] Disable side-by-side installations of multiple JDK
>> updates in Windows JDK installers
>> - JDK-8281010: [macos] Disable side-by-side installations of multiple
>> JDK updates in macOS JDK installers
>> - JDK-8236128: Allow jpackage create installers for services
>> - JDK-8279598: provide adapter from RandomGenerator to Random
>>
>> Build 20:
>> - JDK-8284553: Deprecate the DEFAULT static field of OAEPParameterSpec
>> - JDK-8283620: System.out does not use the encoding/charset specified in
>> the Javadoc
>> - JDK-8285445: Enable Windows Alternate Data Streams by default
>> - JDK-8284930: Re-examine FilterInputStream mark/reset
>> - JDK-8284890: Support for Do not fragment IP socket options
>> - JDK-8282823: javac should constrain more uses of preview APIs
>> - JDK-8285477: Add a PRECISION public static field to j.l.Float and
>> j.l.Double
>>
>> Build 19:
>> - JDK-8186958: New Methods to Create Preallocated HashMaps
>> - JDK-8284775: Simplify String.substring(_, length()) calls
>> - JDK-8283892: Compress and expand bits
>> - JDK-8280915: Better parallelization for AbstractSpliterator and
>> IteratorS…
>> - JDK-8284681: compiler/c2/aarch64/TestFarJump.java fails with
>> "RuntimeExce…
>> - JDK-8283790: G1: Remove redundant card/heap-address transition
>> - JDK-8285001: Simplify StringLatin1.regionMatches
>> - JDK-8284880: Re-examine sun.invoke.util.Wrapper hash tables
>> - JDK-8278356: Improve file creation
>>
>>
>> ## Topics of Interest
>>
>> - Java Cryptographic Roadmap update
>> https://java.com/en/jre-jdk-cryptoroadmap.html
>> - Virtual Thread Deep Dive
>> https://inside.java/2022/04/07/insidejava-newscast-023/
>> - Why Write an Empty finalize() Method?
>>
>> https://stuartmarks.wordpress.com/2022/04/27/why-write-an-empty-finalize-method/
>> - WHEN and NULL In Pattern Matching
>> https://inside.java/2022/05/05/insidejava-newscast-024/
>> - JDK 8 to JDK 18 in GC: 10 Releases, 2000+ Enhancements
>> https://inside.java/2022/05/02/odl-jdk8-to-jdk18-gc/
>> - ZGC - What's new in JDK 18 https://malloc.se/blog/zgc-jdk18
>> - Java Next - From Amber to Loom, from Panama to Valhalla
>> https://inside.java/2022/05/09/java-next/
>>
>>
>> ## JDK Update Patch Release
>>
>> As announced with the April 2022 CPU release, we have produced update
>> patch releases for all Java SE supported versions. The new versions are
>> JDK 18.0.1.1 (publicly available), 17.0.3.1 (publicly available),
>> 11.0.15.1, 8u333, 7u343, and OpenJDK 18.0.1.1 (publicly available).
>>
>>
>> As usual, let us know if you find any issues while testing your
>> project(s) on the latest JDK early-access builds. Thanks for your support!
>>
>> --David
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: dev-help@tomcat.apache.org
>>
>>
Re: JDK 19 - Virtual Threads Testing!
Posted by Martin Grigorov <mg...@apache.org>.
Hello Tomcat devs,
Some tests fail with JDK 19-ea+22-1598:
[concat] Testsuites with failed tests:
[concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
[concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO2.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO.txt
[concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO2.txt
[concat]
TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO.txt
[concat]
TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO2.txt
Here are the error types:
1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec
Testcase: testClassListsAreComplete took 0.444 sec
FAILED
java.lang.Thread.Builder.OfPlatform
junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
at
jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
2. TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt
5-EndOfStream
expected:<-Header-[content-[length]-[0]]> but
was:<-Header-[content-[type]-[text/plain;charset=UTF-8]]>
at
jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
Testcase: testDoHead[467: true 8,192 true 1,023 FULL 0 true] took 2.129 sec
FAILED
expected:<4> but was:<5>
junit.framework.AssertionFailedError: expected:<4> but was:<5>
at
jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHead(HttpServletDoHeadBaseTest.java:94)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
Testcase: testDoHeadHttp2[467: true 8,192 true 1,023 FULL 0 true] took 1.07
sec
FAILED
3-HeadersStart
3-Header-[:status]-[200]
3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
3-HeadersEnd
5-HeadersStart
5-Header-[:status]-[200]
5-Header-[content-type]-[text/plain;charset=UTF-8]
5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
5-HeadersEnd
5-EndOfStream
expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
junit.framework.AssertionFailedError: 3-HeadersStart
3-Header-[:status]-[200]
3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
3-HeadersEnd
5-HeadersStart
5-Header-[:status]-[200]
5-Header-[content-type]-[text/plain;charset=UTF-8]
5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
5-HeadersEnd
5-EndOfStream
expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
at
jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
3. Testcase: testTimerThreadLeak took 2.609 sec
FAILED
null
junit.framework.AssertionFailedError
at
org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.testTimerThreadLeak(TestWebappClassLoaderExecutorMemoryLeak.java:63)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
Regards,
Martin
On Mon, May 16, 2022 at 10:54 AM David Delabassee <
david.delabassee@oracle.com> wrote:
> Welcome to a new OpenJDK Quality Outreach update!
>
> This time, we have one update but a major one: JEP 425 (Virtual Threads
> preview) has been integrated into the OpenJDK mainline! JDK 19
> Early-Access builds 22 are the first mainline builds with Virtual
> Threads (preview) support. So, Project Loom is now getting closer and
> closer!
>
> Please make sure to check the Heads-up below even if you don’t intend to
> use virtual threads in the short future.
>
>
> ## Heads-up - JEP 425 Virtual Threads (preview) testing
>
> The goal of Project Loom is to introduce in the Java platform an
> easy-to-use, high-throughput lightweight concurrency model, and a
> related new concurrent programming model.
>
> Developed in Project Loom, JEP 425 introduces virtual threads to the
> Java Platform. Virtual threads are lightweight threads that dramatically
> reduce the effort of writing, maintaining, and observing high-throughput
> concurrent applications. Note that virtual threads are a preview API in
> JDK 19. Please make sure to read 'JEP 425: Virtual Threads (Preview)'
> for a detailed explanation.
>
> A lot of testing has already been done but we are asking, once again,
> your help to test your project(s) with the latest JDK 19 Early-Access
> builds, even if you don’t intend to use virtual threads any time soon.
>
> There are two approaches to test your project:
> 1. Update your code to use virtual threads …or
> 2. Simply test your existing unchanged code with the preview feature
> enabled.
>
> Both approaches should yield valuable feedback.
>
> If you choose to adapt your application to use virtual threads (cf.
> JavaDoc [2]), be aware that in some cases it’s not just about updating
> your code to use virtual threads instead of platform threads; there are
> some additional considerations. For example, virtual threads shouldn’t
> be pooled [3], code that relies heavily on thread locals [4] will
> require some work to move to a world where there is a new thread for
> each task, etc.
>
> Given that are some minor behavior changes and that `ThreadGroup` has
> been degraded, testing your code as-is, i.e., without using virtual
> threads but with the preview feature enabled at runtime, will also be
> useful. For more details, please check 'JEP 425 - Risks and Assumptions'
> [5].
>
> One difference between to the EA builds published by Project Loom and
> the latest JDK 19 EA builds is that the `--enable-preview` flag is
> required at run-time to use the new APIs. It’s not possible to use the
> APIs with core reflection to avoid the need for `--enable-preview`.
>
> Finally, some tools especially tools relying on JVM TI agents might not
> be fully ready for virtual threads.
>
> Your help testing this important update is greatly appreciated, all
> feedback should be sent to the 'loom-dev' mailing list [6].
>
> [1] https://openjdk.java.net/jeps/425
> [2]
>
> https://download.java.net/java/early_access/jdk19/docs/api/java.base/java/lang/Thread.html
> [3] https://openjdk.java.net/jeps/425#Do-not-pool-virtual-threads
> [4] https://openjdk.java.net/jeps/425#Thread-local-variables
> [5] https://openjdk.java.net/jeps/425#Risks-and-Assumptions
> [6] https://mail.openjdk.java.net/pipermail/loom-dev/
>
>
> ## JDK 19 Early-Access builds
>
> JDK 19 Early-Access builds 22 are now available [7], and are provided
> under the GNU General Public License v2, with the Classpath Exception.
> Make sure to check the Release Notes [8] and the JavaDoc [9].
>
> [7] https://jdk.java.net/19/
> [8] https://jdk.java.net/19/release-notes
> [9] https://download.java.net/java/early_access/jdk19/docs/
>
> ### Current JDK 19 JEPs
> - 405: Record Patterns (Preview) - Proposed to target
> - 422: Linux/RISC-V Port - Integrated
> - 424: Foreign Function & Memory API (Preview) - Integrated
> - 425: Virtual Threads (Preview) - Integrated
> - 426: Vector API (4th Incubator) - Targeted
> - 427: Pattern Matching for switch (3rd Preview) - Targeted
>
> ### Recent changes that may be of interest:
>
> Build 22:
> - JDK-8284161: Implementation of Virtual Threads (Preview)
> - JDK-8285947: Avoid redundant HashMap.containsKey calls in ZoneName
> - JDK-8212136: Remove finalizer implementation in SSLSocketImpl
> - JDK-8285872: JFR: Remove finalize() methods
> - JDK-8285914: AppCDS crash when using shared archive with old class file
> - JDK-8286163: micro-optimize Instant.plusSeconds
> - JDK-8282420: JFR: Remove event handlers
> - JDK-8282559: Allow multiple search terms in javadoc search
>
> Build 21:
> - JDK-8255552: Add DES/3DES/MD5 to jdk.security.legacyAlgorithms
> - JDK-8278370: [win] Disable side-by-side installations of multiple JDK
> updates in Windows JDK installers
> - JDK-8281010: [macos] Disable side-by-side installations of multiple
> JDK updates in macOS JDK installers
> - JDK-8236128: Allow jpackage create installers for services
> - JDK-8279598: provide adapter from RandomGenerator to Random
>
> Build 20:
> - JDK-8284553: Deprecate the DEFAULT static field of OAEPParameterSpec
> - JDK-8283620: System.out does not use the encoding/charset specified in
> the Javadoc
> - JDK-8285445: Enable Windows Alternate Data Streams by default
> - JDK-8284930: Re-examine FilterInputStream mark/reset
> - JDK-8284890: Support for Do not fragment IP socket options
> - JDK-8282823: javac should constrain more uses of preview APIs
> - JDK-8285477: Add a PRECISION public static field to j.l.Float and
> j.l.Double
>
> Build 19:
> - JDK-8186958: New Methods to Create Preallocated HashMaps
> - JDK-8284775: Simplify String.substring(_, length()) calls
> - JDK-8283892: Compress and expand bits
> - JDK-8280915: Better parallelization for AbstractSpliterator and
> IteratorS…
> - JDK-8284681: compiler/c2/aarch64/TestFarJump.java fails with
> "RuntimeExce…
> - JDK-8283790: G1: Remove redundant card/heap-address transition
> - JDK-8285001: Simplify StringLatin1.regionMatches
> - JDK-8284880: Re-examine sun.invoke.util.Wrapper hash tables
> - JDK-8278356: Improve file creation
>
>
> ## Topics of Interest
>
> - Java Cryptographic Roadmap update
> https://java.com/en/jre-jdk-cryptoroadmap.html
> - Virtual Thread Deep Dive
> https://inside.java/2022/04/07/insidejava-newscast-023/
> - Why Write an Empty finalize() Method?
>
> https://stuartmarks.wordpress.com/2022/04/27/why-write-an-empty-finalize-method/
> - WHEN and NULL In Pattern Matching
> https://inside.java/2022/05/05/insidejava-newscast-024/
> - JDK 8 to JDK 18 in GC: 10 Releases, 2000+ Enhancements
> https://inside.java/2022/05/02/odl-jdk8-to-jdk18-gc/
> - ZGC - What's new in JDK 18 https://malloc.se/blog/zgc-jdk18
> - Java Next - From Amber to Loom, from Panama to Valhalla
> https://inside.java/2022/05/09/java-next/
>
>
> ## JDK Update Patch Release
>
> As announced with the April 2022 CPU release, we have produced update
> patch releases for all Java SE supported versions. The new versions are
> JDK 18.0.1.1 (publicly available), 17.0.3.1 (publicly available),
> 11.0.15.1, 8u333, 7u343, and OpenJDK 18.0.1.1 (publicly available).
>
>
> As usual, let us know if you find any issues while testing your
> project(s) on the latest JDK early-access builds. Thanks for your support!
>
> --David
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>