JDK 18 General Availability, and oracle-actions/setup-java
by David Delabassee
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
2 years, 8 months
JDK 18 Release Candidate builds & JDK 19 Early-Access builds
by David Delabassee
Sanne, Yoann,
The Release Candidates of JDK 18 have been released [1]. At this stage,
only P1 issues will be evaluated [2]. And with the JDK 18 General
Availability sets for March 22nd, it is now time to shift the focus to
JDK 19. I'd like to thank those of you who have already provided
feedback on the early Early Builds of JDK 19. Feedback is always
extremely useful, even more, when it comes early in the development cycle.
[1]
https://mail.openjdk.java.net/pipermail/jdk-dev/2022-February/006404.html
[2] https://openjdk.java.net/jeps/3
## JDK 18 Release Candidate
The Release Candidate builds of JDK 18 are now available [3], and are
provided under the GNU General Public License v2, with the Classpath
Exception. The Release Notes are available here [4].
[3] https://jdk.java.net/18/
[4] https://jdk.java.net/18/release-notes
## JDK 19 Early-Access builds
JDK 19 Early-Access builds 11 are now available [5], and are provided
under the GNU General Public License v2, with the Classpath Exception.
The Release Notes are available here [6].
[5] https://jdk.java.net/19/
[6] https://jdk.java.net/19/release-notes
Recent changes that maybe of interest:
* JDK-8278067: Make HttpURLConnection default keep alive timeout
configurable
* JDK-8281000: ClassLoader::registerAsParallelCapable throws NPE if
caller is null
* JDK-8282279: Interpret case-insensitive string locale independently
* JDK-8176706: Support CLDR's Additional (Skeleton) Date-Time Formats
* JDK-5041655: (ch) FileLock: negative param and overflow issues
* JDK-8255266: Update Public Suffix List to 3c213aa
* JDK-8280958: G1/Parallel: Unify marking code structure
* JDK-8072070: Improve interpreter stack banging
* JDK-8277175: Add a parallel multiply method to BigInteger
* JDK-8278947: Support for array constants in constant table
* JDK-8281462: Annotation toString output for enum not reusable for
source input
* JDK-8281175: Add a -providerPath option to jarsigner
* JDK-8277795: ldap connection timeout not honoured under contention
* JDK-8279842: HTTPS Channel Binding support for Java GSS/Kerberos
* JDK-8280744: Allow SuppressWarnings to be used in all declaration contexts
* JDK-8272984: javadoc support for reproducible builds
* JDK-8272317: jstatd has dependency on Security Manager which needs to
be removed
## New Project Loom Early-Access builds
Project Loom Early-Access builds19-loom+4-115 (2022/2/13) are available
[7] with the related Javadoc [8].
These EA builds are based on JDK 19 (jdk-19+9). In those builds, the
APIs for Structured Concurrency and Scope Locals have been moved into
the `jdk.incubator.concurrent` incubator module. Note that the module
name may change later. To use those APIs, simply use `--add-modules
jdk.incubator.concurrent` at compile and runtime.
Those EA builds are provided under the GNU General Public License,
version 2, with the Classpath Exception and are produced for the purpose
of gathering feedback. Use for any other purpose is at your own risk.
Proper feedback should be sent to the `loom-dev` mailing list [9].
[7] https://jdk.java.net/loom/
[8] https://download.java.net/java/early_access/loom/docs/api/
[9] https://mail.openjdk.java.net/mailman/listinfo/loom-dev
## Topics of Interest
* JDK 18 - Card Table Card Size Shenanigans
https://tschatzl.github.io/2022/02/15/card-table-card-size.html
* Compiled & Tested Code In Javadoc - Inside Java Newscast #20
https://inside.java/2022/02/10/insidejava-newscast-020/
* New candidate JEP: 423: Region Pinning for G1
https://mail.openjdk.java.net/pipermail/jdk-dev/2022-February/006368.html
* Refactoring Java 8 code with Java 17 new features - JEP Café #9
https://inside.java/2022/02/01/jepcafe9/
As always, let us know if you find any issues while testing your
projects on the latest JDK Early Access builds. Thanks for your support!
--David
2 years, 9 months