This week's Java roundup for May 22nd, 2023, features news from OpenJDK, JDK 21, Spring Cloud 2022.0.3, Spring Shell 3.1.0, 3.0.4 and 2.1.10, Spring Security Kerberos 2.0-RC2, Payara Platform, Quarkus 3.0.4 and 2.13.8, WildFly 28.0.1, Micronaut 4.0-M5, Helidon 2.6.1, MicroStream 8.1.0, Apache Camel 3.20.5, JDKMon 17.0.61, JHipster Lite 0.33.0, Java's 28th Birthday and Azul State of Java survey.
OpenJDK
JEP 451, Prepare to Disallow the Dynamic Loading of Agents, has been promoted from Candidate to Proposed to Target for JDK 21. Originally known as Disallow the Dynamic Loading of Agents by Default, and following the approach of JEP Draft 8305968, Integrity and Strong Encapsulation, this JEP has evolved from its original intent to disallow the dynamic loading of agents into a running JVM by default to issue warnings when agents are dynamically loaded into a running JVM. Goals of this JEP include: reassess the balance between serviceability and integrity; and ensure that a majority of tools, which do not need to dynamically load agents, are unaffected. The review is expected to conclude on May 31, 2023. InfoQ will follow up with a more detailed news story.
In response to numerous questions about the design philosophy of the exhaustiveness checking in pattern switch, Brian Goetz, Java language architect at Oracle, and Gavin Bierman, consulting member of technical staff at Oracle, have published a document detailing the connection between the properties of unconditionality, exhaustiveness and remainder.
JDK 21
Build 24 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 23 that include fixes to various issues. Further details on this build may be found in the release notes.
For JDK 21, developers are encouraged to report bugs via the Java Bug Database.
Spring Framework
The release of Spring Cloud 2022.0.3, codenamed Kilburn, delivers compatibility with Spring Boot 3.1 and updates to Spring Cloud sub-projects such as: Spring Cloud OpenFeign 4.0.3, Spring Cloud Commons 4.0.3, Spring Cloud Kubernetes 3.0.3 and Spring Cloud Starter Build 2022.0.3. There are, however, breaking changes with the removal of sub-projects: Spring Cloud CLI, Spring Cloud for Cloud Foundry and Spring Cloud Sleuth. More details on this release may be found in the release notes.
Versions 3.1.0, 3.0.4 and 2.1.10 of Spring Shell have been released featuring notable fixes such as: an instance of the ConfirmationInput
class does not show the option selected when typing; and having target method argument as a boolean argument fails if the @Option
or @ShellOption
annotations are not used. These versions build upon Spring Boot versions 3.1.0, 3.0.7 and 2.7.12, respectively. Further details on these releases may be found in the release notes for version 3.1.0, version 3.0.4 and version 2.1.10.
The second release candidate of Spring Security Kerberos 2.0.0 features a dependency upgrade to Spring Security 6.1.0. More details on this release may be found in the release notes.
Payara
Payara has released their May 2023 edition of the Payara Platform that includes Community Edition 6.2023.5, Enterprise Edition 6.2.0 and Enterprise Edition 5.51.0. All three versions feature resolutions to: address CVE-2023-1370, a vulnerability in which the unregulated recursive parsing of JSON nested arrays and objects in Json-smart, a JSON processor library, may lead to a stack overflow and crash the software; and the exception "JVM option${ } already exists in the configuration" upon creating JVM option using Web UI. There were also dependency upgrades to: Jackson 2.15.0, SnakeYAML 2.0, JSON Smart 2.4.10 and Docker Image for JDKs 8u372, 11.0.19, and 17.0.7. Further details on these versions may be found in the release notes for Community Edition 6.2023.5, Enterprise Edition 6.2.0 and Enterprise Edition 5.51.0.
Quarkus
Quarkus 3.0.4.Final, the third maintenance release (version 3.0.1 was the initial release), provides improvements in documentation and notable bug fixes such as: failed native image builds when the quarkus.package.output-directory
property is set; a "No current injection point found" error when using a @ConfigMapping
in conjunction with an onStartup()
method; and fix location and content location headers in RestEasy Reactive. More details on this release may be found in the changelog.
Similarly, Quarkus 2.13.8 was also released with notable bug fixes, many of them backports, such as: a fix for the warning message quarkus.oidc.application-type=service
; encrypt the OIDC session cookie value by default; filter out RESTEasy-related warning related to an Apache HTTP Client not being closed in the ProviderConfigInjectionWarningsTest
class; and a recent Netty version update that introduced warnings while building a native image of MongoDB Client. Further details on this release may be found in the release notes.
WildFly
WildFly 28.0.1 has been released featuring dependency upgrades and notable bug fixes such as: the testContextPropagation()
test defined in the ContextPropagationTestCase
class will occasionally fail when using Long Running Actions; a deployable, yet non-functional QS app on OpenShift resulting from an update to Helm Charts in todo-backend
, a quickstart for backend deployment on OpenShift; and the isExpired()
method defined in the ExpirationMetaData
interface does not conform to the logic in the LocalScheduler
class.
Micronaut
On the road to version 4.0, the Micronaut Foundation has released Micronaut 4.0.0-M5 featuring numerous dependency upgrades and improvements such as: add @BootstrapContextCompatible
, an annotation indicating that a bean can be loaded into the Bootstrap Context, to JSON message readers; the ability to disable SLF4J initialization when Micronaut environments are used in Micronaut OpenAPI; and use the bean definition type for unexpected duplicate beans in custom singleton-like scope based on the AbstractConcurrentCustomScope
class. More details on this release may be found in the release notes.
Helidon
Oracle has released Helidon 2.6.1 with dependency upgrades and notable changes such as: update the isReleased()
method defined in the ByteBufDataChunk
class to use an instance of the AtomicBoolean
class to prevent race conditions that may call the release callback more than once; add the @Target(ElementType.METHOD)
annotation for the @MPTest
annotation to specify a specific target; and fixes for the overloaded create()
methods defined in the WritableMultiPart
class. Further details on this release may be found in the release notes.
MicroStream
The release of MicroStream 8.1.0 delivers integration with Quarkus 3 and a fix for which the Stream API doesn't unload as expected when using the Lazy Collections API.
The Micronaut team has also introduced the Quarkus Extension for MicroStream that allows accessing the functionality of MicroStream in Quarkus applications through the use of annotations.
Apache Camel
Apache Camel 3.20.5 has been released featuring bug fixes, dependency upgrades and improvements, primarily in the camel-jbang
module, such as the ability to: load YAML
files that only define Java beans; use a filename to generate the ID of a route when creating a Camel file in the XML DSL with camel-jbang
; and run camel-jbang
from an empty folder and then reload when new files are added. More details on this release may be found in the release notes.
JDKMon
Version 17.0.61 of JDKMon, a tool that monitors and updates installed JDKs, has been made available this past week. Created by Gerrit Grunwald, principal engineer at Azul, this new version: adds a property to the jdkmon.properties
file to disable notifications; and provides fixes to issues related to detected CPU architectures and multiple builds of the same JDK version.
JHipster
The JHipster team has released version 0.33.0 of JHipster Lite with many dependency upgrades and notable changes such as: sharing module properties between landscape and patch screens; a fix on native hints for the integration of JGit; and the addition of the DestroyRef
provider. Further details on this release may be found in the release notes.
Happy 28th Birthday, Java!
Java turned 28 years old this past week as the language was introduced at the SunWorld 1995 conference on May 23, 1995. The Java developer relations team at Oracle celebrated with a 28 Hours of Java event hosted by Ana Maria Mihalceanu, Nicolai Parlog and Sharat Chander. Topics included: live coding and exploration, presentations, conversations with Java luminaries, and fun games. This was the agenda:
- An exploration on JUnit Pioneer with Nicolai.
- Data-Oriented Programming in Java (21) presented by Nicolai.
- A conversation with Gavin Bierman on pattern matching facilitated by Nicolai.
- Exploring JEP 451, Prepare to Disallow the Dynamic Loading of Agents, and JEP Draft 8305968, Integrity and Strong Encapsulation, with Nicolai.
- A conversation with Ron Pressler discussing platform integrity (JEP Draft 8305968), JEP 445, Unnamed Classes and Instance Main Methods (Preview), and JEP 453, Structured Concurrency (Preview), facilitated by Nicolai.
- Growing Up with Java presented by Ana.
- Playing Byte Legend with Ana.
- Java State of the Union and Why Community Matters presented by Sharat.
- A roundtable discussion with Pratik Patel, Mohammed Aboullaite, Venkat Subramaniam, Andres Almiray, Ixchel Ruiz and Vincent Mayers facilitated by Sharat.
- A conversation with Brian Goetz, facilitated by Nicolai, discussing Project Valhalla with a focus on how to surface value and primitive types and nullability in the language.
- A conversation with Gunnar Morling facilitated by Nicolai.
- Java Next presented by Nicolai.
- Playing Slay the Spire (written in Java) and exploring modding with Nicolai.
- Project Amber: The SolutionFactory To Java's Problems presented by Nicolai.
- From Idea to IDE presented by Nicolai.
- Ask Me Anything session with Nicolai.
- Closing remarks by Nicolai.
This special event was live-streamed on the Java YouTube channel.
Developer Surveys
Azul has launched their State of Java survey in which the areas of study include: OpenJDK distributions and Java versions developers are using; Java-based infrastructures and languages; and Java applications running in public clouds. The survey closes on June 15, 2023.