Re: [ant] branch master updated: add java.security.manager=allow while launching against Java 19

2022-02-06 Thread Stefan Bodewig
On 2022-02-07,  wrote:

> - if [ "$JAVA_SPEC_VERSION" = "java.specification.version=18" ]; then
> + if [ "$JAVA_SPEC_VERSION" = "java.specification.version=18" ] || [ 
> "$JAVA_SPEC_VERSION" = "java.specification.version=19" ]; then

Bourne shell's case may make this more
readable (not sure whether there is a Windows batch file equivalent)

case $JAVA_SPEC_VERSION in
 java.specification.version=18 | \
 java.specification.version=19 )
   ...
   ;;
esac

But I'm afraid this is not going to scale :-)

In the long run we probably are better off by enumerating the JDKs where
we don't want to set the property (ten from 8 to 17, but this is a fixed
list that doesn't need to change with every release).

Stefan

-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



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

2022-02-06 Thread Jaikiran Pai

Hello David,

I ran the Java 18 build 18-ea+34-2083 and Java 19 build 19-ea+8-441 
against our Ant testsuite on a Linux setup and we observed no 
regressions, except security manager exceptions. We had to do changes to 
our Ant launch command to get past the security manager runtime 
exceptions that are now thrown in Java 18 and 19, if security manager 
gets set at runtime (Ant does set it at runtime). I'll be proposing 
these changes to the Ant launch scripts to be part of a release soon, so 
that projects using Ant to build against Java 18+ can get past these issues.


The test run results are available at:

Java 18 - 
https://ci-builds.apache.org/job/Ant/job/Ant%20Master%20Linux%20(latest%20EA%20JDK)/16/


Java 19 - 
https://ci-builds.apache.org/job/Ant/job/Ant%20Master%20Linux%20(latest%20EA%20JDK)/17/



-Jaikiran

On 31/01/22 2:47 pm, 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)
- 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