Re: JDK 18 Rampdown Phase 2 & JDK 19 Early-Access Builds

2022-01-31 Thread Martin Grigorov
Hi David,

Apache Tomcat's build and tests pass successfully with JDK 18-ea+33-2077
and 19-ea+7-366 on both Linux x86_64 and aarch64!

Regards,
Martin

On Mon, Jan 31, 2022 at 11:33 AM David Delabassee <
david.delabas...@oracle.com> wrote:

> Greetings!
>
> First off, on behalf of Oracle’s Java Team, I’d like to wish you a happy
> and prosperous new year!
>
> In 2022, two Java releases will be made available:
> - JDK 18 (March 2022)
> - JDK 19 (September 2022)
>
> JDK 18[1] has entered Rampdown Phase Two (RDP2)[2]. Given that and to be
> better prepared for the future, it makes sense to begin testing your
> project(s) using early access (EA) builds of JDK 19[3]. Your feedback
> allows us to evaluate and address issues you find while testing EA builds.
>
> This time, we have two heads-up to share:
>
> ## Heads-Up: JDK 18 - JEP 421 Deprecate Finalization for Removal
>
> Finalization is an outdated and brittle resource cleaning mechanism
> present in the platform since, well, forever. Its use has been
> discouraged for quite some time in favor of better alternatives (i.e.,
> 'try with resources' and Cleaners). JEP 421 is another step towards the
> removal of finalizers as it offers tools to investigate if a codebase is
> still using finalization. To learn more, you should read JEP 421[4]. You
> should also listen to the latest episode of the Inside Java Podcast[5]
> dedicated to this topic. We encourage you to check if your project is
> still using finalizers. If so, you should start to think about removing
> them and rely instead on either 'try with resources' or Cleaners.
>
> ## Heads-Up: JVM does not flag constant class entries ending in '/'
>
> Prior to JDK 19, the JVM is loading classes (1) whose class file major
> version is <49, i.e., before JDK 1.5, and (2) the class's name ends with
> a '/'. This violates section 4.2.1 of the JVM specification [6] and is
> addressed in JDK 19. In JDK 19, the JVM is throwing, for such classes, a
> ClassFormatError exception as it already does with newer classes (JDK
> 1.5+). Given that this issue affects only pre-JDK 1.5 classes, we expect
> the compatibility risk to be very low.
>
> For more details, see JDK-8278448[7].
>
> [1] https://jdk.java.net/18/
> [2]
> https://mail.openjdk.java.net/pipermail/jdk-dev/2022-January/006361.html
> [3] https://jdk.java.net/19/
> [4] https://openjdk.java.net/jeps/421
> [5] https://inside.java/podcast/21
> [6]
> https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html#jvms-4.2.1
> [7] https://bugs.openjdk.java.net/browse/JDK-8278448
>
>
> ## JDK 18
>
> JDK 18 is now in RDP2 (Rampdown Phase Two) with its feature set frozen a
> few weeks back when it entered RDP1.
>
> ### JEPs integrated to JDK 18:
>
> - JEP 400: UTF-8 by Default
> - JEP 408: Simple Web Server
> - JEP 413: Code Snippets in Java API Documentation
> - JEP 416: Reimplement Core Reflection with Method Handles
> - JEP 417: Vector API (Third Incubator)
> - JEP 418: Internet-Address Resolution SPI
> - JEP 419: Foreign Function & Memory API (Second Incubator)
> - JEP 420: Pattern Matching for switch (Second Preview)
> - JEP 421: Deprecate Finalization for Removal
>
> JDK 18 Early-Access builds 33 are now available[8], and are provided
> under the GNU General Public License v2, with the Classpath Exception.
> Also available are the Release Notes[9].
>
> [8] https://jdk.java.net/18/
> [9] https://jdk.java.net/18/release-notes
>
> ### Changes in JDK 18 since Rampdown Phase One that are of interest:
>
> - JDK-8278373: Correcting References to Overloaded Methods in Javadoc
> Documentation
> - JDK-8279065: Deserialization filter and filter factory property error
> reporting under specified
> - JDK-8255409: SunPKCS11 Provider Now Supports Some PKCS#11 v3.0 APIs
> - JDK-8275610: C2: Object field load floats above its null check
> resulting in a segfault [Reported by Apache POI]
>
>
> ## JDK 19
>
> JDK 19 Early-Access builds 7 are now available[10], and are provided
> under the GNU General Public License v2, with the Classpath Exception.
> Also available are the Release Notes[11].
>
> [10] https://jdk.java.net/19/
> [11] https://jdk.java.net/19/release-notes
>
> ### Changes in recent JDK 19 EA builds that maybe of interest:
>
> - JDK-8279258: Auto-vectorization enhancement for two-dimensional array
> operations
> - JDK-8273914: Indy string concat changes order of operations
> - JDK-8268081: Upgrade Unicode Data Files to 14.0.0
> - JDK-8278087: Deserialization filter and filter factory property error
> reporting under specified
> - JDK-8276766: Enable jar and jmod to produce deterministic timestamped
> content
> - JDK-8274679: Remove unnecessary conversion to String in security code
> in java.base
> - JDK-8279833: Loop optimization issue in String.encodeUTF8_UTF16
> - JDK-8279064: New options for ktab to provide non-default salt
> - JDK-8280055: JFR: Improve ObjectContext implementation
> - JDK-8268831: Improve javadoc tool handling of streams
>
>
> ## Topics of Interest:
>
> - 

Re: JDK 18 Rampdown Phase 2 & JDK 19 Early-Access Builds

2022-01-31 Thread Rémy Maucherat
On Mon, Jan 31, 2022 at 10:33 AM David Delabassee
 wrote:
>
> Greetings!
>
> First off, on behalf of Oracle’s Java Team, I’d like to wish you a happy
> and prosperous new year!
>
> In 2022, two Java releases will be made available:
> - JDK 18 (March 2022)
> - JDK 19 (September 2022)
>
> JDK 18[1] has entered Rampdown Phase Two (RDP2)[2]. Given that and to be
> better prepared for the future, it makes sense to begin testing your
> project(s) using early access (EA) builds of JDK 19[3]. Your feedback
> allows us to evaluate and address issues you find while testing EA builds.
>
> This time, we have two heads-up to share:
>
> ## Heads-Up: JDK 18 - JEP 421 Deprecate Finalization for Removal
>
> Finalization is an outdated and brittle resource cleaning mechanism
> present in the platform since, well, forever. Its use has been
> discouraged for quite some time in favor of better alternatives (i.e.,
> 'try with resources' and Cleaners). JEP 421 is another step towards the
> removal of finalizers as it offers tools to investigate if a codebase is
> still using finalization. To learn more, you should read JEP 421[4]. You
> should also listen to the latest episode of the Inside Java Podcast[5]
> dedicated to this topic. We encourage you to check if your project is
> still using finalizers. If so, you should start to think about removing
> them and rely instead on either 'try with resources' or Cleaners.
>
> ## Heads-Up: JVM does not flag constant class entries ending in '/'
>
> Prior to JDK 19, the JVM is loading classes (1) whose class file major
> version is <49, i.e., before JDK 1.5, and (2) the class's name ends with
> a '/'. This violates section 4.2.1 of the JVM specification [6] and is
> addressed in JDK 19. In JDK 19, the JVM is throwing, for such classes, a
> ClassFormatError exception as it already does with newer classes (JDK
> 1.5+). Given that this issue affects only pre-JDK 1.5 classes, we expect
> the compatibility risk to be very low.
>
> For more details, see JDK-8278448[7].
>
> [1] https://jdk.java.net/18/
> [2] https://mail.openjdk.java.net/pipermail/jdk-dev/2022-January/006361.html
> [3] https://jdk.java.net/19/
> [4] https://openjdk.java.net/jeps/421
> [5] https://inside.java/podcast/21
> [6]
> https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html#jvms-4.2.1
> [7] https://bugs.openjdk.java.net/browse/JDK-8278448
>
>
> ## JDK 18
>
> JDK 18 is now in RDP2 (Rampdown Phase Two) with its feature set frozen a
> few weeks back when it entered RDP1.
>
> ### JEPs integrated to JDK 18:
>
> - JEP 400: UTF-8 by Default
> - JEP 408: Simple Web Server
> - JEP 413: Code Snippets in Java API Documentation
> - JEP 416: Reimplement Core Reflection with Method Handles
> - JEP 417: Vector API (Third Incubator)
> - JEP 418: Internet-Address Resolution SPI
> - JEP 419: Foreign Function & Memory API (Second Incubator)

This one was not super exciting, so moving on to the foreign preview
instead (for now it is java.lang.foreign).

> - JEP 420: Pattern Matching for switch (Second Preview)
> - JEP 421: Deprecate Finalization for Removal

Rémy

> JDK 18 Early-Access builds 33 are now available[8], and are provided
> under the GNU General Public License v2, with the Classpath Exception.
> Also available are the Release Notes[9].
>
> [8] https://jdk.java.net/18/
> [9] https://jdk.java.net/18/release-notes
>
> ### Changes in JDK 18 since Rampdown Phase One that are of interest:
>
> - JDK-8278373: Correcting References to Overloaded Methods in Javadoc
> Documentation
> - JDK-8279065: Deserialization filter and filter factory property error
> reporting under specified
> - JDK-8255409: SunPKCS11 Provider Now Supports Some PKCS#11 v3.0 APIs
> - JDK-8275610: C2: Object field load floats above its null check
> resulting in a segfault [Reported by Apache POI]
>
>
> ## JDK 19
>
> JDK 19 Early-Access builds 7 are now available[10], and are provided
> under the GNU General Public License v2, with the Classpath Exception.
> Also available are the Release Notes[11].
>
> [10] https://jdk.java.net/19/
> [11] https://jdk.java.net/19/release-notes
>
> ### Changes in recent JDK 19 EA builds that maybe of interest:
>
> - JDK-8279258: Auto-vectorization enhancement for two-dimensional array
> operations
> - JDK-8273914: Indy string concat changes order of operations
> - JDK-8268081: Upgrade Unicode Data Files to 14.0.0
> - JDK-8278087: Deserialization filter and filter factory property error
> reporting under specified
> - JDK-8276766: Enable jar and jmod to produce deterministic timestamped
> content
> - JDK-8274679: Remove unnecessary conversion to String in security code
> in java.base
> - JDK-8279833: Loop optimization issue in String.encodeUTF8_UTF16
> - JDK-8279064: New options for ktab to provide non-default salt
> - JDK-8280055: JFR: Improve ObjectContext implementation
> - JDK-8268831: Improve javadoc tool handling of streams
>
>
> ## Topics of Interest:
>
> - "State of Valhalla" update
> 

JDK 18 Rampdown Phase 2 & JDK 19 Early-Access Builds

2022-01-31 Thread David Delabassee

Greetings!

First off, on behalf of Oracle’s Java Team, I’d like to wish you a happy 
and prosperous new year!


In 2022, two Java releases will be made available:
- JDK 18 (March 2022)
- JDK 19 (September 2022)

JDK 18[1] has entered Rampdown Phase Two (RDP2)[2]. Given that and to be 
better prepared for the future, it makes sense to begin testing your 
project(s) using early access (EA) builds of JDK 19[3]. Your feedback 
allows us to evaluate and address issues you find while testing EA builds.


This time, we have two heads-up to share:

## Heads-Up: JDK 18 - JEP 421 Deprecate Finalization for Removal

Finalization is an outdated and brittle resource cleaning mechanism 
present in the platform since, well, forever. Its use has been 
discouraged for quite some time in favor of better alternatives (i.e., 
'try with resources' and Cleaners). JEP 421 is another step towards the 
removal of finalizers as it offers tools to investigate if a codebase is 
still using finalization. To learn more, you should read JEP 421[4]. You 
should also listen to the latest episode of the Inside Java Podcast[5] 
dedicated to this topic. We encourage you to check if your project is 
still using finalizers. If so, you should start to think about removing 
them and rely instead on either 'try with resources' or Cleaners.


## Heads-Up: JVM does not flag constant class entries ending in '/'

Prior to JDK 19, the JVM is loading classes (1) whose class file major 
version is <49, i.e., before JDK 1.5, and (2) the class's name ends with 
a '/'. This violates section 4.2.1 of the JVM specification [6] and is 
addressed in JDK 19. In JDK 19, the JVM is throwing, for such classes, a 
ClassFormatError exception as it already does with newer classes (JDK 
1.5+). Given that this issue affects only pre-JDK 1.5 classes, we expect 
the compatibility risk to be very low.


For more details, see JDK-8278448[7].

[1] https://jdk.java.net/18/
[2] https://mail.openjdk.java.net/pipermail/jdk-dev/2022-January/006361.html
[3] https://jdk.java.net/19/
[4] https://openjdk.java.net/jeps/421
[5] https://inside.java/podcast/21
[6] 
https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html#jvms-4.2.1

[7] https://bugs.openjdk.java.net/browse/JDK-8278448


## JDK 18

JDK 18 is now in RDP2 (Rampdown Phase Two) with its feature set frozen a 
few weeks back when it entered RDP1.


### JEPs integrated to JDK 18:

- JEP 400: UTF-8 by Default
- JEP 408: Simple Web Server
- JEP 413: Code Snippets in Java API Documentation
- JEP 416: Reimplement Core Reflection with Method Handles
- JEP 417: Vector API (Third Incubator)
- JEP 418: Internet-Address Resolution SPI
- JEP 419: Foreign Function & Memory API (Second Incubator)
- JEP 420: Pattern Matching for switch (Second Preview)
- JEP 421: Deprecate Finalization for Removal

JDK 18 Early-Access builds 33 are now available[8], and are provided 
under the GNU General Public License v2, with the Classpath Exception. 
Also available are the Release Notes[9].


[8] https://jdk.java.net/18/
[9] https://jdk.java.net/18/release-notes

### Changes in JDK 18 since Rampdown Phase One that are of interest:

- JDK-8278373: Correcting References to Overloaded Methods in Javadoc 
Documentation
- JDK-8279065: Deserialization filter and filter factory property error 
reporting under specified

- JDK-8255409: SunPKCS11 Provider Now Supports Some PKCS#11 v3.0 APIs
- JDK-8275610: C2: Object field load floats above its null check 
resulting in a segfault [Reported by Apache POI]



## JDK 19

JDK 19 Early-Access builds 7 are now available[10], and are provided 
under the GNU General Public License v2, with the Classpath Exception. 
Also available are the Release Notes[11].


[10] https://jdk.java.net/19/
[11] https://jdk.java.net/19/release-notes

### Changes in recent JDK 19 EA builds that maybe of interest:

- JDK-8279258: Auto-vectorization enhancement for two-dimensional array 
operations

- JDK-8273914: Indy string concat changes order of operations
- JDK-8268081: Upgrade Unicode Data Files to 14.0.0
- JDK-8278087: Deserialization filter and filter factory property error 
reporting under specified
- JDK-8276766: Enable jar and jmod to produce deterministic timestamped 
content
- JDK-8274679: Remove unnecessary conversion to String in security code 
in java.base

- JDK-8279833: Loop optimization issue in String.encodeUTF8_UTF16
- JDK-8279064: New options for ktab to provide non-default salt
- JDK-8280055: JFR: Improve ObjectContext implementation
- JDK-8268831: Improve javadoc tool handling of streams


## Topics of Interest:

- "State of Valhalla" update
https://mail.openjdk.java.net/pipermail/valhalla-spec-experts/2021-December/001747.html 



- Java's Plans for 2022 - Inside Java Newscast
https://inside.java/2022/01/13/insidejava-newscast-018/

- New Loom Early Access builds based on JDK 19 EAb2
https://mail.openjdk.java.net/pipermail/loom-dev/2021-December/003394.html

- New Panama Foreign Early-Access builds (including