Java News Roundup: Final JEP Drafts, Payara 2024 Roadmap, TornadoVM Plugin for IntelliJ
MMS • Michael Redlich
This week’s Java roundup for January 8th, 2024 features news highlighting: JEP drafts for final versions of OpenJDK features String Templates and Implicitly Declared Classes and Instance Main Methods; the Payara Platform 2024 roadmap; and a new TornadoVM plugin for IntelliJ IDEA.
Ron Pressler, Architect and Technical Lead for Project Loom at Oracle, and Jim Laskey, Software Development Director at Oracle, have submitted JEP Draft 8323335, Implicitly Declared Classes and Instance Main Methods (Final) to finalize this feature. Formerly known as Unnamed Classes and Instance Main Methods (Preview), Flexible Main Methods and Anonymous Main Classes (Preview) and Implicit Classes and Enhanced Main Methods (Preview), this JEP incorporates enhancements in response to feedback from the two previous rounds of preview, namely JEP 463, Implicit Classes and Instance Main Methods (Second Preview), to be delivered in the upcoming release of JDK 22, and JEP 445, Unnamed Classes and Instance Main Methods (Preview), delivered in JDK 21. This JEP proposes to “evolve the Java language so that students can write their first programs without needing to understand language features designed for large programs.” This JEP moves forward the September 2022 blog post, Paving the on-ramp, by Brian Goetz, Java Language Architect at Oracle. The latest draft of the specification document by Gavin Bierman, Consulting Member of Technical Staff at Oracle, is open for review by the Java community. More details on JEP 445 may be found in this InfoQ news story.
Laskey has also submitted JEP Draft 8323333, String Templates (Final), to finalize this feature after two rounds of preview, namely JEP 459, String Templates (Second Preview), to be delivered in the upcoming release of JDK 22, and JEP 430, String Templates (Preview), delivered in JDK 21. This JEP proposes to enhance the Java programming language with string templates, string literals containing embedded expressions, that are interpreted at runtime where the embedded expressions are evaluated and verified. Further details on JEP 430 may be found in this InfoQ news story.
Build 5 of the JDK 23 early-access builds was made available this past week featuring updates from Build 4 that include fixes for various issues. More details on this release may be found in the release notes.
Build 31 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 30 that include fixes to various issues. Further details on this build may be found in the release notes.
Versions 6.1.3 and 6.0.16 of Spring Framework have been released featuring bug fixes, improvements in documentation, dependency upgrades and new features such as: exclude full request URIs containing sensitive query parameters from remaining mono checkpoints while using the
WebClient interface; allow the
@CrossOrigin annotation to provide a
Access-Control-Allow-Private-Network header from an application to Google Chrome if the
Access-Control-Request-Private-Network header (Private Network Access) is sent in the preflight request; and avoid early resolution of the
getMostSpecificMethod() method defined in the
ClassUtils class from within the
CommonAnnotationBeanPostProcessor class due to it being called at an outer level before finding an annotation. These versions will be shipped with the upcoming releases of Spring Boot 3.2.2 and 3.1.8. More details on these releases may be found in the release notes for version 6.1.3 and version 6.0.16.
Versions 2023.1.2 and 2023.0.8 of Spring Data have been released providing bug fixes and respective dependency upgrades to sub-projects such as: Spring Data Commons 3.2.2 and 3.1.8; Spring Data MongoDB 4.2.2 and 4.1.8; Spring Data Elasticsearch 5.2.2 and 5.1.8; and Spring Data Neo4j 7.2.2 and 7.1.8. These versions may also be consumed by the upcoming releases of Spring Boot 3.2.2 and 3.1.8, respectively.
The release of Spring Web Services 4.0.10 ships with notable changes such as: support for
jar:nested, a URI scheme for resources within uber JARs as part of a new loader implementation in Spring Boot 3.2, within the
SchemaFactoryUtils class; removal of a duplicate dependency declaration for the Apache HttpComponents
HttpClient interface; and a dependency upgrade to Spring Framework 6.0.16. Further details on this release may be found in the release notes.
The release of Spring Cloud Dataflow 2.11.2 delivers notable changes such as: an upgrade to Logback 1.2.13 to resolve CVE-2023-6378, a serialization vulnerability in the Logback receiver component that allows an attacker to mount a denial-of-service attack by sending poisoned data; update the
BatchVersion enum and the
JdbcSearchableJobExecutionDao class to support use of the
JOB_CONFIGURATION_LOCATION field that was removed in Batch5-based schemas that broke some queries; and a resolution to the
getJobExecutionsWithStepCountFilteredByTaskExecutionId() method in the aforementioned
JdbcSearchableJobExecutionDao class does not support
BATCH_ task prefixes. More details on this release may be found in the release notes.
The Payara team has provided a retrospective on 2023 and a roadmap for the Payara Platform in 2024 and beyond. Highlights in 2023 included: the release of Payara Platform 6; support for JDK 21 and MicroProfile 6.1; and the introduction of Payara Starter. The comprehensive roadmap for 2024 includes: their vision for all Payara products through 2026; detailed individual roadmaps of Payara Server, Payara Micro, Payara Cloud and Payara Developer Tools; and support for Jakarta EE 11, scheduled for a GA release in June/July 2024. More details may be found in Empowering Enterprise Innovation with Jakarta EE, presented at the December 2023 Payara Virtual Conference by Louise Castens, Senior Product Manager at Payara, and Luqman Saeed, Contract Technical Writer at Payara.
TornadoInsight, an “open-source IntelliJ IDEA plugin for enhancing the developer experience when working with TornadoVM,” was introduced by the TornadoVM team this past week. Key features include: an on-the-fly static checker that scans TornadoVM code in real-time and reports any Java features that are not supported by TornadoVM; and a dynamic testing framework to simplify the testing process for individual TornadoVM tasks. InfoQ will follow up with a more detailed news story.
Versions 1.12.2 and 1.11.8 of Micrometer Metrics both deliver dependency upgrades and notable bug fixes such as: add the missing
version declarations in the
io.netty:netty-transport-native-epoll artifact in the POM file that yielded a compile error; a rename of the thread that polls meters in the
StepMeterRegistry class that shared the same name with a publishing thread; and a fix in the
unaryRpcAsync() method defined in the
GrpcObservationTest class for improved concurrency. Further details on these releases may be found in the release notes for version 1.12.2 and version 1.11.8.
Similarly, versions 1.2.2 and 1.1.9 of Micrometer Tracing both provide dependency upgrades and notable bug fixes such as: the
SimpleTraceContextBuilder class not overriding values from an implementation of the
TraceContext interface; and manually created baggage fields do not propagate across threads using the
ObservationAwareSpanThreadLocalAccessor class. More details on these releases may be found in the release notes for version 1.2.2 and version 1.1.9.
Project Reactor 2023.0.2, the second maintenance release, provides dependency upgrades to
reactor-netty 1.1.15 and
reactor-pool 1.0.5. There was also a realignment to version 2023.0.2 with the
reactor-addons 3.5.1 and
reactor-kotlin-extensions 1.2.2 artifacts that remain unchanged. Further details on this release may be found in the changelog.
Next, Project Reactor 2022.0.15, the fifteenth maintenance release, provides dependency upgrades to
reactor-netty 1.1.15 and
reactor-pool 1.0.5. There was also a realignment to version 2022.0.15 with the
reactor-addons 3.5.1 and
reactor-kotlin-extensions 1.2.2 artifacts that remain unchanged. More details on this release may be found in the changelog.
And finally, the release of Project Reactor 2020.0.40, codenamed Europium-SR40, provides dependency upgrades to
reactor-core 3.4.35 and
reactor-netty 1.0.41. There was also a realignment to version 2020.0.40 with the
reactor-kotlin-extensions 1.1.10 and
reactor-rabbitmq 1.5.6 artifacts that remain unchanged. Further details on this release may be found in the changelog.
Apache Software Foundation
Versions 11.0.0-M16, 10.1.18, 9.0.85 and 8.5.98 of Apache Tomcat all feature bug fixes and notable changes such as: refactor the
VirtualThreadExecutor class so that it can be used by the NIO2 connector which was using platform threads despite having been configured to use virtual threads; correct a regression in the fix for issue 67675 that broke TLS key file parsing for format keys typically generated by OpenSSL 1.0.2 that do not specify an explicit pseudo-random function and only rely on the default; and allow multiple operations with the same name on introspected MBeans, fixing a regression caused by the introduction of a second
addSslHostConfig() method. More details on these releases may be found in the release notes for version 11.0.0-M16, version 10.1.18, version 9.0.85 and version 8.5.98.
After the release of Apache Cocoon 2.3.0, the team has recently decided to retire the 2.1 and 3.0 branches of Cocoon. The 2.1 branch, initially released more than 20 years ago, is now considered obsolete. The 3.0 branch was an attempt to rewrite Cocoon from scratch, but was never finalized. Apache Cocoon, a Spring-based framework (since version 2.2), is built around the concepts of separation of concerns and component-based development.
The Grails Foundation has released versions 5.3.6 and 3.3.18 of the Grails Framework with notable changes such as: revert the recent upgrade to SnakeYAML, Micronaut, Spring and Spring Boot because they were not backward compatible; add a workflow to manually trigger a release to SDKMan; and update the NexusPublishing extension to increase the delay of retries from 2000 to 3000 milliseconds. Further details on these releases may be found in the release notes for version 5.3.6 and version 3.3.18.
The release of Piranha 23.12.0 delivers notable changes such as: a resolution to a Windows build failure by downgrading Eclipse WaSP, the compatible implementation for Jakarta Pages and Jakarta Standard Tag Library, from version 3.2.1 to 3.2.0; a new
UberPiranha class and corresponding
uber module to initialize Piranha on the command line; and the ability to set a temporary directory for Piranha Uber. More details on this release may be found in their documentation and issue tracker.
The release of OpenXava 7.2.2 provides dependency upgrades and notable bug fixes such as: multiple
@RowStyle annotations applied to the same row, but only one is considered; the
@ListProperties annotation does not support several properties when used in conjunction with the
@Editor("TreeView") annotations; and database connection leaks when using the calendar list format. Further details on this release may be found in the release notes.
The second release candidate of Gradle 8.6 provides continuous improvement in: support for custom encryption keys in the configuration cache via the
GRADLE_ENCRYPTION_KEY environment variable; improvements in error and warning reporting; improvements in the Build Init Plugin to support various types of projects; and enhanced build authoring for plugin authors and build engineers to develop custom build logic. More details on this release may be found in the release notes.