Re: [External] : Re: JDK 20 EAb22, ZenGC EA builds, JavaFX 20 EAb5 and several heads-ups!

2022-12-13 Thread David Delabassee

Thanks Jaikiran!

--David

On 11/12/2022 07:36, Jaikiran Pai wrote:

Hello David,

We have been a bit slow recently in running the Ant testsuite and 
responding to the EA releases. I found some time today and triggered a 
run against the latest JDK 20 EA available at 
https://urldefense.com/v3/__https://jdk.java.net/20/__;!!ACWV5N9M2RV99hQ!MwKgX2_Q0eX2thpLw1JMsqTcvx1iOj5NNJPHfaxIq50W-FEwQHCxtZOQsCjLWdAE497i3-UIQtHUDOery8aZ-QA$ 
which is (build 20-ea+27-2213). That has exposed a new failure in the 
javadoc generation against the Ant project. I've filed 
https://bugs.openjdk.org/browse/JDK-8298525 with the details.


-Jaikiran

On 07/11/22 1:47 pm, David Delabassee wrote:

Greetings,

With JavaOne in Las Vegas, last month was epically busy! It was great 
to finally have the ability to meet and discuss the Quality Outreach 
program with some of you... face-to-face!


This installment of the newsletter is packed as we have several 
heads-ups, including new Early-Access builds being made available. 
The JDK 20 schedule has been proposed [1]. The next major milestone 
is Rampdown Phase One which should happen in just a month on December 
8! The next few weeks will be particularly interesting as we will see 
which from the candidate JEPs recently announced (see 'Topics of 
Interest' section below) will be proposed to target JDK 20 [2]. And 
given that JDK 20 is getting closer, we are eagerly waiting for your 
test feedback on your projects running with the latest JDK 20 EA builds.


[1] https://mail.openjdk.org/pipermail/jdk-dev/2022-October/007108.html
[2] https://openjdk.org/projects/jdk/20/


### Heads-up - JDK 20: `java.net.URL` parsing fix & behavior change

Before JDK 20, some of the parsing/validation performed by the JDK 
built-in `URLStreamHander` implementations were delayed until 
`URL::openConnection` or `URLConnection::connect` was called. 
Starting JDK 20, some of these parsing/validations are now performed 
early, i.e. within URL constructors.


An exception caused by a malformed URL that would have been delayed 
until the connection was opened or connected may starting JDK 20, 
throw a `MalformedURLException` at URL construction time.


We suggest testing your project(s) against this change. And for those 
who want to rely on the old behavior, a new system property has been 
introduced to revert, on the command line, to the previous behavior.


For more details, please see JBS-8293590 [3] and the release notes [4].

[3] https://bugs.openjdk.org/browse/JDK-8293590
[4] https://bugs.openjdk.org/browse/JDK-8295750


### Heads-up - JDK 20: Thread.stop(), Thread.suspend() and 
Thread.resume() degradation


The ability to stop, suspend, or resume a thread with the 
corresponding Thread.stop(), Thread.suspend() or Thread.resume() 
methods have been removed in JDK 20. Those methods have been degraded 
to throw a UOE exception (UnsupportedOperationException).


Using those methods was inherently unsafe. That is also why they were 
deprecated since JDK 1.2 (1998!) and were flagged 'forRemoval' in 
previous features release.


We do not expect this behavior change to cause any issues on 
well-maintained codebase.


For more details please check JDK-8289610 [5], JDK-8249627 [6], and 
the Java Thread Primitive Deprecation FAQ [7].


[5] https://bugs.openjdk.org/browse/JDK-8289610
[6] https://bugs.openjdk.org/browse/JDK-8249627
[7] 
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/doc-files/threadPrimitiveDeprecation.html



### Heads-up - JDK 20: Deprecate and disable the legacy parallel 
class loading workaround for non-parallel-capable class loaders.


Prior to JDK 7, custom class loaders using non-hierarchical class 
delegation model were prone to deadlock. A workaround was added in 
the HotSpot VM (JDK 6) to allow parallel class loading for 
non-parallel-capable class loaders to avoid deadlocks.


Parallel-capable class loaders were introduced in Java SE 7 [8] to 
support parallel class loading to implement a deadlock-free class 
loader using a non-hierarchical class delegation model. [8] and [9] 
describe how to migrate those class loaders depending on this 
workaround to be multi-threaded parallel-capable class loaders.


This workaround was intended to allow those developers to migrate to 
the new mechanism. JDK 7 was released 11 years ago so it is now 
expected that those deadlock-prone custom class loaders have been 
migrated to the parallel-capable class loaders. As a consequence, 
this workaround is removed in JDK 20 as it impedes eliminating the 
object monitors from pinning for virtual threads.


We suggest confirming that your codebase is not relying on this 
legacy workaround. If it still is, you should migrate away from it 
ASAP. Please note that the legacy behavior can be temporary 
re-enabled using a special flag. For additional details, please check 
[10] and [11].


[8] 
https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html

[9] 

Re: JDK 20 EAb22, ZenGC EA builds, JavaFX 20 EAb5 and several heads-ups!

2022-12-10 Thread Jaikiran Pai

Hello David,

We have been a bit slow recently in running the Ant testsuite and 
responding to the EA releases. I found some time today and triggered a 
run against the latest JDK 20 EA available at https://jdk.java.net/20/ 
which is (build 20-ea+27-2213). That has exposed a new failure in the 
javadoc generation against the Ant project. I've filed 
https://bugs.openjdk.org/browse/JDK-8298525 with the details.


-Jaikiran

On 07/11/22 1:47 pm, David Delabassee wrote:

Greetings,

With JavaOne in Las Vegas, last month was epically busy! It was great 
to finally have the ability to meet and discuss the Quality Outreach 
program with some of you... face-to-face!


This installment of the newsletter is packed as we have several 
heads-ups, including new Early-Access builds being made available. The 
JDK 20 schedule has been proposed [1]. The next major milestone is 
Rampdown Phase One which should happen in just a month on December 8! 
The next few weeks will be particularly interesting as we will see 
which from the candidate JEPs recently announced (see 'Topics of 
Interest' section below) will be proposed to target JDK 20 [2]. And 
given that JDK 20 is getting closer, we are eagerly waiting for your 
test feedback on your projects running with the latest JDK 20 EA builds.


[1] https://mail.openjdk.org/pipermail/jdk-dev/2022-October/007108.html
[2] https://openjdk.org/projects/jdk/20/


### Heads-up - JDK 20: `java.net.URL` parsing fix & behavior change

Before JDK 20, some of the parsing/validation performed by the JDK 
built-in `URLStreamHander` implementations were delayed until 
`URL::openConnection` or `URLConnection::connect` was called. Starting 
JDK 20, some of these parsing/validations are now performed early, 
i.e. within URL constructors.


An exception caused by a malformed URL that would have been delayed 
until the connection was opened or connected may starting JDK 20, 
throw a `MalformedURLException` at URL construction time.


We suggest testing your project(s) against this change. And for those 
who want to rely on the old behavior, a new system property has been 
introduced to revert, on the command line, to the previous behavior.


For more details, please see JBS-8293590 [3] and the release notes [4].

[3] https://bugs.openjdk.org/browse/JDK-8293590
[4] https://bugs.openjdk.org/browse/JDK-8295750


### Heads-up - JDK 20: Thread.stop(), Thread.suspend() and 
Thread.resume() degradation


The ability to stop, suspend, or resume a thread with the 
corresponding Thread.stop(), Thread.suspend() or Thread.resume() 
methods have been removed in JDK 20. Those methods have been degraded 
to throw a UOE exception (UnsupportedOperationException).


Using those methods was inherently unsafe. That is also why they were 
deprecated since JDK 1.2 (1998!) and were flagged 'forRemoval' in 
previous features release.


We do not expect this behavior change to cause any issues on 
well-maintained codebase.


For more details please check JDK-8289610 [5], JDK-8249627 [6], and 
the Java Thread Primitive Deprecation FAQ [7].


[5] https://bugs.openjdk.org/browse/JDK-8289610
[6] https://bugs.openjdk.org/browse/JDK-8249627
[7] 
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/doc-files/threadPrimitiveDeprecation.html



### Heads-up - JDK 20: Deprecate and disable the legacy parallel class 
loading workaround for non-parallel-capable class loaders.


Prior to JDK 7, custom class loaders using non-hierarchical class 
delegation model were prone to deadlock. A workaround was added in the 
HotSpot VM (JDK 6) to allow parallel class loading for 
non-parallel-capable class loaders to avoid deadlocks.


Parallel-capable class loaders were introduced in Java SE 7 [8] to 
support parallel class loading to implement a deadlock-free class 
loader using a non-hierarchical class delegation model. [8] and [9] 
describe how to migrate those class loaders depending on this 
workaround to be multi-threaded parallel-capable class loaders.


This workaround was intended to allow those developers to migrate to 
the new mechanism. JDK 7 was released 11 years ago so it is now 
expected that those deadlock-prone custom class loaders have been 
migrated to the parallel-capable class loaders. As a consequence, this 
workaround is removed in JDK 20 as it impedes eliminating the object 
monitors from pinning for virtual threads.


We suggest confirming that your codebase is not relying on this legacy 
workaround. If it still is, you should migrate away from it ASAP. 
Please note that the legacy behavior can be temporary re-enabled using 
a special flag. For additional details, please check [10] and [11].


[8] 
https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html

[9] https://openjdk.org/groups/core-libs/ClassLoaderProposal.html
[10] https://bugs.openjdk.org/browse/JDK-8295848
[11] https://bugs.openjdk.org/browse/JDK-8296446


### Heads-up - JavaFX builds

Oracle is now publishing JavaFX 

JDK 20 EAb22, ZenGC EA builds, JavaFX 20 EAb5 and several heads-ups!

2022-11-07 Thread David Delabassee

Greetings,

With JavaOne in Las Vegas, last month was epically busy! It was great to 
finally have the ability to meet and discuss the Quality Outreach 
program with some of you... face-to-face!


This installment of the newsletter is packed as we have several 
heads-ups, including new Early-Access builds being made available. The 
JDK 20 schedule has been proposed [1]. The next major milestone is 
Rampdown Phase One which should happen in just a month on December 8! 
The next few weeks will be particularly interesting as we will see which 
from the candidate JEPs recently announced (see 'Topics of Interest' 
section below) will be proposed to target JDK 20 [2]. And given that JDK 
20 is getting closer, we are eagerly waiting for your test feedback on 
your projects running with the latest JDK 20 EA builds.


[1] https://mail.openjdk.org/pipermail/jdk-dev/2022-October/007108.html
[2] https://openjdk.org/projects/jdk/20/


### Heads-up - JDK 20: `java.net.URL` parsing fix & behavior change

Before JDK 20, some of the parsing/validation performed by the JDK 
built-in `URLStreamHander` implementations were delayed until 
`URL::openConnection` or `URLConnection::connect` was called. Starting 
JDK 20, some of these parsing/validations are now performed early, i.e. 
within URL constructors.


An exception caused by a malformed URL that would have been delayed 
until the connection was opened or connected may starting JDK 20, throw 
a `MalformedURLException` at URL construction time.


We suggest testing your project(s) against this change. And for those 
who want to rely on the old behavior, a new system property has been 
introduced to revert, on the command line, to the previous behavior.


For more details, please see JBS-8293590 [3] and the release notes [4].

[3] https://bugs.openjdk.org/browse/JDK-8293590
[4] https://bugs.openjdk.org/browse/JDK-8295750


### Heads-up - JDK 20: Thread.stop(), Thread.suspend() and 
Thread.resume() degradation


The ability to stop, suspend, or resume a thread with the corresponding 
Thread.stop(), Thread.suspend() or Thread.resume() methods have been 
removed in JDK 20. Those methods have been degraded to throw a UOE 
exception (UnsupportedOperationException).


Using those methods was inherently unsafe. That is also why they were 
deprecated since JDK 1.2 (1998!) and were flagged 'forRemoval' in 
previous features release.


We do not expect this behavior change to cause any issues on 
well-maintained codebase.


For more details please check JDK-8289610 [5], JDK-8249627 [6], and the 
Java Thread Primitive Deprecation FAQ [7].


[5] https://bugs.openjdk.org/browse/JDK-8289610
[6] https://bugs.openjdk.org/browse/JDK-8249627
[7] 
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/doc-files/threadPrimitiveDeprecation.html



### Heads-up - JDK 20: Deprecate and disable the legacy parallel class 
loading workaround for non-parallel-capable class loaders.


Prior to JDK 7, custom class loaders using non-hierarchical class 
delegation model were prone to deadlock. A workaround was added in the 
HotSpot VM (JDK 6) to allow parallel class loading for 
non-parallel-capable class loaders to avoid deadlocks.


Parallel-capable class loaders were introduced in Java SE 7 [8] to 
support parallel class loading to implement a deadlock-free class loader 
using a non-hierarchical class delegation model. [8] and [9] describe 
how to migrate those class loaders depending on this workaround to be 
multi-threaded parallel-capable class loaders.


This workaround was intended to allow those developers to migrate to the 
new mechanism. JDK 7 was released 11 years ago so it is now expected 
that those deadlock-prone custom class loaders have been migrated to the 
parallel-capable class loaders. As a consequence, this workaround is 
removed in JDK 20 as it impedes eliminating the object monitors from 
pinning for virtual threads.


We suggest confirming that your codebase is not relying on this legacy 
workaround. If it still is, you should migrate away from it ASAP. Please 
note that the legacy behavior can be temporary re-enabled using a 
special flag. For additional details, please check [10] and [11].


[8] https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html
[9] https://openjdk.org/groups/core-libs/ClassLoaderProposal.html
[10] https://bugs.openjdk.org/browse/JDK-8295848
[11] https://bugs.openjdk.org/browse/JDK-8296446


### Heads-up - JavaFX builds

Oracle is now publishing JavaFX builds, starting with early access 
builds of JavaFX 20, at jdk.java.net/javafx20 [12]. Developers are now 
able to download JavaFX and JDK builds from the same place, and use 
jlink to create a custom JDK that includes the JavaFX modules.


The latest JavaFX 20 EA builds (b5-2022/10/28) are now available [12] 
along with the related javadoc [13]. These early-access builds are 
provided under the GNU General Public License, version 2, with the 
Classpath Exception. Feedback