Greetings!
JDK 18 has been released (General Availability) on March 22nd as
planned, the release cadence is working like clockwork! As a small token
of gratitude, some of you have been specifically acknowledged in the
"The Arrival of Java 18" announcement [1]. On behalf of the entire team,
let me extend our thanks to all of you.
With JDK 18 released, the focus should now be on making sure your
project(s) compile and work on JDK 19. As always, if you face any issue
with early-access builds of JDK 19 please let us know. To help you in
this task, we have just released a GitHub action to install the OpenJDK
Early-Access builds. For more information, please check the heads-up below.
I'll conclude with a short teaser, i.e. JavaOne is Back! [2] Stay tuned
for more details.
[1]
https://inside.java/2022/03/22/the-arrival-of-java18/
[2]
https://www.oracle.com/cloudworld/javaone/
## Heads-Up: oracle-actions/setup-java
To help you test your project(s), we have released a GitHub Action [3]
to download and install various JDK builds produced by Oracle. In
addition to the latest OpenJDK GA builds (GPL v2 W/CPE) and the Oracle
JDK builds (NFTC license), this action can also download and install
OpenJDK early-access builds, and early-access builds of OpenJDK projects
(ex. Project Loom, Project Valhalla, etc.).
When doing tests using EA builds, it is key to always use the upstream
EA builds from
jdk.java.net as issues should be logged against those
upstream builds, and ideally against a specific build version. This
GitHub action is actively following the OpenJDK EA builds releases.
Please make sure to check the announcement [4] for more details, and
short FAQ.
To help you isolate regression between different EA builds, we are
working to add support for archived builds. If you have feedback, please
either issue the Issue tracker [5] or just send me a mail.
[3]
https://github.com/marketplace/actions/setup-java-development-kits-built-...
[4]
https://inside.java/2022/03/11/setup-java/
[5]
https://github.com/oracle-actions/setup-java/issues
## General Availability of Java 18 / JDK 18
JDK 18 is now Generally Available [6]. The OpenJDK builds which are
provided under the GNU General Public License v2, with the Classpath
Exception are available [7], the JDK 18 Release Notes are also available
[8].
[6]
https://mail.openjdk.java.net/pipermail/jdk-dev/2022-March/006458.html
[7]
https://jdk.java.net/18/
[8]
https://jdk.java.net/18/release-notes
Along with hundreds of smaller enhancements and over a thousand bug
fixes, JDK 18 includes following JEPs:
- 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
Thanks to everyone who contributed to JDK 18, whether by designing and
implementing features or enhancements, by fixing bugs, or by downloading
and testing the early-access builds.
## JDK 19 Early-Access builds
JDK 19 Early-Access builds 15 are now available [9], and are provided
under the GNU General Public License v2, with the Classpath Exception.
The Release Notes are also available [10].
[9]
https://jdk.java.net/19/
[10]
https://jdk.java.net/19/release-notes
### JEPs targeted to JDK 19, so far:
- JEP 422: Linux/RISC-V Port
https://openjdk.java.net/jeps/422
### Recent changes that maybe of interest:
- JDK-8283415: Update java.lang.ref to use sealed classes
- JDK-8280494: (D)TLS signature schemes
- JDK-8282081: java.time.DateTimeFormatter: wrong definition of symbol F
- JDK-8281181: Do not use CPU Shares to compute active processor count
- JDK-7192189: Support endpoint identification algorithm in RFC 6125
- JDK-8277474: jarsigner does not check if algorithm parameters are disabled
- JDK-8280357: If the users home directory is invalid, system property
user.home is set to $HOME
- JDK-8277204: Implement PAC-RET branch protection on Linux/AArch64
- JDK-8282411: Add useful predicates to ElementKind
- JDK-8282131: java.time.ZoneId should be a sealed abstract class
- JDK-8281375: Accelerate bitCount operation for AVX2 and AVX512 target
## Topics of Interest:
- “Java 18 is Here!” - Inside Java Podcast
https://inside.java/2022/03/22/podcast-023/
- “The Simple Web Server” - Inside Java Podcast
https://inside.java/2022/03/04/podcast-022/
- “Finalization Deprecation” - Inside Java Podcast
https://inside.java/2022/01/12/podcast-021/
- All About JDK 18 - Inside Java Newscast
https://inside.java/2022/03/10/insidejava-newscast-021/
- JDK 18 - Security Enhancements
https://seanjmullan.org/blog/2022/03/23/jdk18
- JDK 18 - Programmer's Guide to Snippets
https://docs.oracle.com/en/java/javase/18/code-snippet/index.html
- JDK 18 - G1/Parallel/Serial GC improvements
https://tschatzl.github.io/2022/03/14/jdk18-g1-parallel-gc-changes.html
- “Java Language Futures: Spring 2022 Edition” (video)
https://www.youtube.com/watch?v=m7Ypbw-xVRo
- Project Panama : `jextract` Standalone Repository
https://mail.openjdk.java.net/pipermail/panama-dev/2022-March/016632.html
Again, 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