Java News Roundup: JCP 25th Anniversary, Foreign Function & Memory API, Eclipse Epicyro

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for September 11th, 2023 features news from OpenJDK, JCP, JDK 22, JDK 21, Payara Platform, Eclipse Epicyro, Grails Plugin Portal and milestone and point releases for: Spring Framework, Spring Data, Spring Tools, Quarkus, Micronaut, Helidon, MicroProfile Telemetry, Groovy, Camel Quarkus, Micrometer Metrics and Tracing, Piranha, JobRunr, JHipster Lite and Project Reactor.

OpenJDK

JEP 454, Foreign Function & Memory API, has been promoted from its JEP Draft 8310626 to Candidate status this past week. This JEP proposes to finalize this feature after two rounds of incubation and three rounds of preview: JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17; JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19; JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; and JEP 442, Foreign Function & Memory API (Third Preview), to be delivered in the upcoming GA release of JDK 21. Improvements since the last release include: a new Enable-Native-Access manifest attribute that allows code in executable JARs to call restricted methods without the use of the --enable-native-access flag; allow clients to programmatically build C function descriptors, avoiding platform-specific constants; improved support for variable-length arrays in native memory; and support for multiple charsets in native strings.

Java Community Process

At a special event hosted by the New York Java Special Interest Group and Garden State Java User Group on September 13, 2023 at the Bank of New York Mellon in New York City, industry experts from the Java Community Process (JCP) Executive Committee (EC) participated in a panel discussion to reveal their favorite JCP EC memory and their favorite features from the upcoming GA release of JDK 21. Included in the festivities was a JDK 21 presentation by Dmitry Chuyko, Performance Architect at Bellsoft, and a 25th anniversary celebration of the JCP. More details on this event may be found in this InfoQ news story.

JDK 21

Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.

JDK 22

Build 15 of the JDK 22 early-access builds was made available this past week featuring updates from Build 14 that include fixes to various issues. More details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

Spring Framework

After two quiet previous weeks over at Spring, the team has provided point and milestone releases for Spring Framework, Spring Data and Spring Tools.

The fifth milestone release of Spring Framework 6.1.0 ships with bug fixes, dependency upgrades and a host of new features such as: instrument the new RestClient interface for observability; reinstate support for the legacy @ManagedBean annotation defined in JSR-250, Common Annotations for the Java Platform, and the @Named annotation defined in JSR 330, Dependency Injection for Java, to complement their Jakarta Annotations versions for improved migration of projects to Spring 6.0 and beyond; and a revision of the method signatures defined in the JdbcTestUtils class to accept instances of the JdbcOperations interface instead of the JdbcTemplate class. Further details on this release may be found in the release notes.

Similarly, versions 6.0.12 and 5.3.30 and of Spring Framework have been released featuring bug fixes, dependency upgrades and new features such as: an optimization of the getMostSpecificMethod() method defined in the ClassUtils class; an optimization of whitespace checks in the StringUtils class; and an elimination of redundant lookups of classes and annotation causing performance bottlenecks while creating instances of scoped beans. More details on these releases may be found in the release notes for version 6.0.12 and version 5.3.30.

The third milestone release of Spring Data 2023.1.0, codenamed Vaughn, delivers notable changes such as: support for JDK 21; use of virtual threads via configuration of the Java Executor interface; support for Kotlin value classes; and single query loading for Spring Data JDBC. Further details on this release may be found in the release notes.

Similarly, versions 2023.0.4, 2022.0.10 and 2021.2.16, all service releases of Spring Data, feature bug fixes and dependency upgrades to sub-projects such as: Spring Data Commons 3.1.4, 3.0.10 and 2.7.14; Spring Data MongoDB 4.1.4, 4.0.10 and 3.4.16; Spring Data Elasticsearch 5.1.4, 5.0.10 and 4.4.16; and Spring Data Neo4j 7.1.4, 7.0.10 and 6.3.16.

The release of Spring Tools 4.20.0 for Eclipse, Visual Studio Code and Theia ships with: a number of bug fixes; support for Eclipse IDE 2023-09; and improved Java reconciling support to show Spring-specific validations, re-built from the ground up, tuned for high performance to work seamlessly in large code bases. More details on this release may be found in the release notes.

Payara

Payara has released their September 2023 edition of the Payara Platform that includes Community Edition 6.2023.9, Enterprise Edition 6.6.0 and Enterprise Edition 5.55.0 featuring security fixes to address: CVE-2017-12617, a vulnerability in various Apache Tomcat versions with HTTP PUT enabled, where an attacker could upload a specially-crafted requested JSP file to the server such that any code it contained would be executed by the server; and CVE-2023-1370, a vulnerability in Json-smart where parsing too many nested JSON structured arrays and objects, due to no defined limit, could cause a stack overflow and crash the software. Improvements included: a removal of the obsolete methods, getEnvironment(), getCallerIdentity() and isCallerInRole(Identity) from the Jakarta EJB EJBContext interface, that were implemented in the Payara EJBContextImpl class; and improved functionality with the Hazelcast CP Subsystem. Further details on these versions may be found in the release notes for Community Edition 6.2023.9, Enterprise Edition 6.6.0 and Enterprise Edition 5.55.0.

Quarkus

Red Hat has released versions 3.3.3, 3.2.6 and 2.6.11.Final of Quarkus to address CVE-2023-4853, a vulnerability by which an attacker can bypass the HTTP security policies due to those security policies not correctly sanitizing certain character permutations when accepting requests, resulting in an incorrect evaluation of permissions. This could provide unauthorized endpoint access and a possible denial of service. More details on these releases may be found in the changelogs for version 3.3.3, version 3.2.6 and version 2.16.11.

Micronaut

The Micronaut Foundation has released version 4.1.1 of the Micronaut featuring Micronaut Core 4.1.5 and updates to modules: Micronaut Oracle Cloud, Micronaut AOT, Micronaut Data, Micronaut Kafka, Micronaut Kotlin Integrations, Micronaut Test, Micronaut Validation and Micronaut Multitenancy. Further details on this release may be found in the release notes.

Helidon

Helidon 2.6.3, a bug fix release, provides notable changes such as: replace the use of the deprecated socket() method with the namedSocket() method defined in the ServerConfiguration interface; update the requestedUri() method defined in the ServerRequest interface to correctly handle the IPv6 address format; and change the access specifier from private to public in the beforeEach() method defined in the OciMetricsDataTest class due to the documentation in the JUnit @BeforeEach annotation explicitly stating the methods must not be private or static. More details on this release may be found in the release notes.

MicroProfile

On the road to MicroProfile 6.1, version 1.1-RC3 of the MicroProfile Telemetry specification ships with a fix for a deployment issue in the JaxRsServerAsyncTestEndpoint TCK test class. Further details on this release may be found in the release notes.

Eclipse Foundation

OmniFishEE has introduced a new Eclipse EE4J project, Epicyro, that will serve as a compatible implementation of the Jakarta Authentication specification. This new project will define a general low-level SPI for authentication mechanisms, controllers that interact with a caller and a container’s environment to obtain the caller’s credentials. These will be validated and pass an authenticated identity (such as name and groups) to a container. Currently a milestone release, Epicyro will start with version 3.0.0 to align with Jakarta Authentication 3.0.0.

Apache Software Foundation

The second alpha release of Apache Groovy 5.0.0 delivers bug fixes, dependency upgrades and improvement such as: remove the use of the MagicAccessorImpl class that was once defined in the sun.reflect package; the JsonOutput class should handle Java records like Plain Old Groovy Objects (POGOs); and mark the main/run methods in Groovy scripts as generated by the compiler with the @Generated annotation. More details on this release may be found in the release notes.

Similarly, Apache Groovy 4.0.15 has been released with bug fixes, dependency upgrades and an improvement with the JsonOutput class that should handle Java records like POGOs. Further details on this release may be found in the release notes.

To maintain alignment with Quarkus, Camel Quarkus 3.2.0 has been released with notable resolutions to issues such as: a failed compilation for gRPC applications in dev mode; an expansion of tests covering Splunk, Saxonica and the gRPC extension; and an InvocationTargetException upon executing sanity checks with the LDAP Realm extension. More details on this release may be found in the release notes.

Grails

The Grails Foundation has introduced a redesigned Grails Plugin Portal featuring: improved search functionality; a paginated list of all plugins; a list of top-rated plugins; and the latest plugin releases. The previous version of the portal was plagued by frequent downtime, high resource utilization and slow performance.

Micrometer

Versions 1.12.0-M3, 1.11.4, 1.10.11 and 1.9.15 of Micrometer Metrics all deliver dependency upgrades and a bug fix to ensure the LongTaskTimer and FunctionTimer interfaces produce consistent data. Version 1.12.0-M3 provides new features such as: a variant of the hasAnObservationWithAKeyValue() method for use in testing with the KeyValue interface; provide a way to make decisions on use of the /actuator endpoint in Spring Security based on the parent in the ObservationPredicate interface, namely the Java BiPredicate interface; and add a timestamp to the nested Event interface defined in the Observation interface. Further details on these releases may be found in the release notes for version 1.12.0-M3, version 1.11.4, version 1.10.11 and version 1.9.15.

Similarly, versions 1.2.0-M3, 1.1.5 and 1.0.10 of Micrometer Tracing all deliver dependency upgrades and bug fixes such as: the ObservationAwareSpanThreadLocalAccessor class does not release an instance of the nested SpanAction class when the thread has completed its task; and add the ThreadLocalAccessor interface to propagate an instance of the Baggage interface with Reactor. A new feature in version 1.2.0-M3 is to allow setting of a timestamp of an event on a span. More details on these releases may be found in the release notes for version 1.2.0-M3, version 1.1.5 and version 1.0.10.

Piranha

The release of Piranha 23.9.0 delivers notable changes such as: a new PidFeature class for improved handling of process IDs; fix a testing issue with SonarCloud; and a new IsolatedWebAppFeature class for improved handling of web applications. Further details on this release may be found in their documentation and issue tracker.

JobRunr

Version 6.3.1 of JobRunr, a library for background processing in Java that is distributed and backed by persistent storage, has been released featuring notable changes: a NullPointerException in a Quarkus extension if the quarkus.jobrunr.job-scheduler.enabled property is set to false; and add missing Spring AOT hints that caused exceptions for applications using JobRunr 6.3.0 and Spring Boot 3.1.3; and the @Job annotation is not registering instances of a JobFilter interface after upgrading to Spring Boot 3.1.2 and JobRunr 6.3.0. More details on this release may be found in the release notes.

JHipster

Version 0.42.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and new features/enhancements such as: a new StatisticsCriteria class to add criteria to the /stats endpoint; the removal of an unnecessary TestNG dependency; and a new checkstyle module to check for unused imports during build. Further details on this release may be found in the release notes.

Project Reactor

The third milestone release of Project Reactor 2023.0.0 provides dependency upgrades to reactor-core 3.6.0-M3, reactor-pool 1.0.2, reactor-netty 1.1.11 and reactor-kafka 1.3.21. There was also a realignment to version 2023.0.0-M3 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.

Similarly, Project Reactor 2022.0.11, the eleventh maintenance release, provides dependency upgrades to reactor-core 3.5.10, reactor-netty 1.1.11, reactor-kafka 1.3.21 and reactor-pool 1.0.2. There was also a realignment to version 2022.0.11 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.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: JDK 22 Release Schedule, Project Babylon, Helidon 4.0-RC2, MicroProfile 6.1-RC1

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for September 4th, 2023 features news from OpenJDK, JDK 22, JDK 21, GraalVM Native Build Tools 0.9.26, Quarkus 3.3.2, MicroProfile 6.1-RC1, MicroProfile Config 3.1-RC2, Helidon 4.0.0-M2, Open Liberty 23.0.0.9-beta, Hibernate Search 7.0.0.Beta1, Infinispan 14.0.17.Final, Eclipse Mojarra 4.0.4, JDKMon 17.0.71, JHipster 8.0.0-beta.3 and 7.9.4 and JavaZone 2023 Conference.

OpenJDK

Paul Sandoz, Java architect at Oracle, has initiated a proposal to start a new Java project named Babylon. The primary goal will be to “extend the reach of Java to foreign programming models such as SQL, differentiable programming, machine learning models, and GPUs.” Babylon can achieve Java’s reach to foreign programming models with code reflection, an enhancement to reflective programming in Java, to enable standard access, analysis, and transformation of Java code in a suitable form. Support for a foreign programming model can then be more easily implemented as a Java library.

Sandoz has offered to lead this new project with an initial reviewer list to include Maurizio Cimadamore, software architect at Oracle and Project Panama lead, Gary Frost, software architect at Oracle, and Sandhya Viswanathan, principal software engineer at Intel. Developers can learn more by watching this YouTube video from the recent JVM Language Summit.

Sandoz also introduced JEP Draft 8315945, Vector API (Seventh Incubator) this past week. This JEP, under the auspices of Project Panama, incorporates enhancements in response to feedback from the previous six rounds of incubation: JEP 448, Vector API (Sixth Incubator), to be delivered in the upcoming GA release of JDK 21; JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. The most significant change from JEP 448 includes an enhancement to the JVM Compiler Interface (JVMCI) to support Vector API values.

JDK 21

Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.

JDK 22

Build 14 of the JDK 22 early-access builds was made available this past week featuring updates from Build 13 that include fixes to various issues. More details on this build may be found in the release notes.

Mark Reinhold, chief architect, Java Platform Group at Oracle, formally proposed the release schedule for JDK 22 as follows:

  • Rampdown Phase One (fork from main line): December 7, 2023
  • Rampdown Phase Two: January 18, 2024
  • Initial Release Candidate: February 8, 2024
  • Final Release Candidate: February 22, 2024
  • General Availability: March 19, 2024

Comments on this proposal from JDK committers and reviewers are open for discussion until September 15, 2023 at 23:00 UTC. If there are no objections at that time, then as per the JEP 2.0 process proposal, this will be the schedule for JDK 22.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GraalVM

On the road to version 1.0, Oracle Labs has released version 0.9.26 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides notable changes such as: use of the AttributeProvider API to fix compatibility with Gradle 8.3; explicitly declare the dependencies for the Plexus-Xml and Plexus-Utils libraries to fix compatibility with Maven 3.9.x; and prepare Native Build Tools for the upcoming release of GraalVM for JDK 21. Further details on this release may be found in the changelog.

Spring Framework

In terms of releases, things have been quiet over at Spring these past two weeks, but that hasn’t stopped Josh Long, Spring developer advocate at VMware. Along with his weekly “This Week in Spring” blog posts, Long has published: a personal recap of SpringOne 2023; his latest blog post on how Spring Boot 3.2, GraalVM native images, Java 21 and virtual threads with Project Loom all work together; and “Bootiful” podcasts with Rob Winch, Spring Security lead at VMware, Daniel Garnier-Moiroux, senior member of technical staff, Spring Engineering at VMware, and Chris Richardson, founder and CEO at Eventuate and president at Chris Richardson Consulting.

Quarkus

The release of Quarkus 3.3.2 ships with dependency upgrades and notable changes such as: improvements to the OIDC Auth0 in the Dev UI; a removal of the imagePushSecret() method from the BuildConfig class that has been deemed invalid when using the internal registry; and a fix for a Quarkus build using the quarkus.container-image.builder=jib property that does not consider the auth.json file from Podman. More details on this release may be found in the changelog.

MicroProfile

The MicroProfile Working Group has provided the first release candidate of MicroProfile 6.1 featuring updates to the MicroProfile Config, MicroProfile Metrics and MicroProfile Telemetry specifications. Therefore, the final feature set of MicroProfile 6.1, scheduled for a GA release in early October, will include:

  • Jakarta EE 10 Core Profile
  • MicroProfile Config 3.1
  • MicroProfile Fault Tolerance 4.0
  • MicroProfile Metrics 5.1
  • MicroProfile Health 4.0
  • MicroProfile Telemetry 1.1
  • MicroProfile OpenAPI 3.1
  • MicroProfile JWT Authentication 2.1
  • MicroProfile Rest Client 3.0

It is important to note that four of the seven specifications contained within the Jakarta EE 10 Core Profile, namely: Jakarta Contexts and Dependency Injection (CDI) 4.0; Jakarta RESTful Web Services 3.1; Jakarta JSON Processing 2.1; and Jakarta JSON Binding 3.0, are the evolved JSR specifications from Java EE 7 and Java EE 8 from the early days of MicroProfile.

The second release candidate of MicroProfile Config 3.1 delivers notable changes such as: an update to the TCK to align with breaking changes in CDI 4.0 that include an empty beans.xml file and change in bean discovery mode from all to annotated; and the MissingValueOnObserverMethodInjectionTest class, that asserts a DeploymentException, fails a different reason due to the the ConfigObserver bean being defined as @ApplicationScoped (proxyable) and final (not proxyable). Further details on this release may be found in the list of issues.

Helidon

The second release candidate of Helidon 4.0.0 delivers: a baseline of JDK 21; full integration of the Helidon Níma web server; significantly refactored Helidon SE APIs to optimize imperative/blocking use cases; and numerous enhancements to the Web Server and Web Client components to achieve feature parity with Helidon 3.0. More details on this release may be found in the changelog.

Open Liberty

IBM has released version 23.0.0.9-beta of Open Liberty to provide continuous improvement: for Liberty Spring Boot Support 3.0 with capability to “thin” an application when they are created in containers; and the early preview of the Jakarta Data specification.

Hibernate

The first beta release of Hibernate Search 7.0.0 delivers a number of dependency upgrades, namely: JDK 11 as a baseline, a migration to Jakarta EE, Hibernate ORM 6.3.0.Final, Lucene 9.7.0, Elasticsearch 8.9.0 and OpenSearch 2.9.0.

Infinispan

Version 14.0.17.Final of Infinispan has been released featuring notable fixes such as: the cache created by ServerEventLogger class blocks the cache join with the potential for a deadlock; the DefaultExecutorFactory class creating unnecessary multiple instances of a Java ThreadGroup; and add missing cross-site metrics for the implementation of the RpcManager interface. Further details on this release may be found in the list of issues.

Eclipse Mojarra

The release of Eclipse Mojarra 4.0.4 delivers notable changes such as: a fix for Mojarra failing to initialize when the Bean Deployment Archive in Weld is empty; a more robust implementation of the RetargetedAjaxBehavior class; and return a static empty data model from the UIData class if its current value is null. More details on this release may be found in the release notes.

JDKMon

Version 17.0.71 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 provides additional information about the remaining days to the GA release of JDK 21 and the next OpenJDK update.

JHipster

The third beta release of JHipster release 8.0.0 with enhancements such as: support for JDK 20 and JDK 21; a cleanup of the JHipster Domain Language (JDL) to move file manipulation, configuration and validation to the JDL generator; and a fix for the H2 console not loading due to an incorrect path setting. Further details on this release may be found in the release notes.

Similarly, the release of JHipster 7.9.4 features bug fixes and support for Node.js 18. More details on this release may be found in the release notes.

JavaZone Conference

The JavaZone conference was held at the Oslo Spektrum in Oslo, Norway this past week featuring speakers from the Java community who presented talks and workshops on topics such as: garbage collection, quantum computing, Haskell, Kubernetes, application monitoring, micro frontends, JavaScript and Quarkus.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: Single Query Loading, GraalVM, GlassFish, JReleaser, Quarkus, Micronaut

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 28th, 2023 features news from OpenJDK, JDK 22, JDK 21, GraalVM Native Build Tools 0.9.25, Single Query Loading in Spring JDBC, Quarkus 3.3.1, 3.2.5.Final and 2.16.10.Final, Micronaut 4.1.0 and 4.0.6, Wildfly 29.0.1, Hibernate ORM 6.3.0 and 6.2.8, Hibernate Reactive 2.0.5, GlassFish 7.0.8, Eclipse Vert.x 4.4.5, JKube 1.14.0, JReleaser 1.8.0 and OpenXava 7.1.5.

OpenJDK

The Java Community Process (JCP) Executive Committee has voted to approve JSR 396, Java SE 21 Platform, to move forward with its final GA release scheduled for September 19, 2023.

JEP 442, Foreign Function & Memory API (Third Preview), delivered in the upcoming release of JDK 21, and JEP Draft 8310626, Foreign Function & Memory API, expected to be delivered in JDK 22, is one of the main features of Project Panama, a project that connects the JVM with well-defined, but “foreign” (non-Java) APIs that include many interfaces commonly used by C programmers.

Per-Åke Minborg, consulting member of technical staff at Oracle, has published this blog post in which he discussed the performance benefits of the Foreign Function & Memory API. Minborg provided a benchmark on string conversion using this API for JDK 21 and JDK 22 compared to using the old Java Native Interface (JNI) calls.

JDK 21

Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.

JDK 22

Build 13 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 12 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GraalVM

On the road to version 1.0, Oracle Labs has released version 0.9.25 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides a dependency upgrade to GraalVM Reachability Metadata Repository 0.3.4. More details on this release may be found in the changelog.

Spring Framework

In their quest to solve the N+1 problem, the Spring Data team has introduced Single Query Loading, a technique designed to load arbitrary aggregates with a single SELECT statement. Available with the release of Spring Data JDBC 3.2.0-M2, the team claims this new technique is the “beginning of the end for the N+1 problem.” A new method, setSingleQueryLoadingEnabled(true), has been added to the RelationalMappingContext class to enable Single Query Loading. At this time, this only works for simple aggregates, consisting of an aggregate root and a single collection of other entities, but the team promises that future releases will improve on this limitation.

Quarkus

Red Hat has released version 3.3.1 of Quarkus that ships with dependency upgrades and notable changes such as: a fix for a potential NullPointerException in the MicrometerRecorder class; a new counter, rejected, added to the VertxPoolMetrics class to count rejected requests; and a fix in which the VertxHttpExporter class incorrectly parses the /v1/traces endpoint. Further details on this release may be found in the changelog.

Similarly, Quarkus 3.2.5.Final has been released with notable changes such as: a fix for a potential NullPointerException in the Cross-Site Request Forgery extension when the CsrfRequestResponseReactiveFilter class is checking the media type; a disabling of the testMoreRepositoryFunctionalities() method in the ReactiveMongodbPanacheResourceTest class as it has been characterized as “flaky” according to the string passed-in to the @Disabled annotation; and a fix for a deadlock upon calling a write-locked method of a bean in multiple threads in which this method calls another write-locked method within the same bean. More details on this release may be found in the changelog.

And finally, the release of Quarkus 2.16.10.Final provides a dependency upgrade of Snappy Java from version 1.1.8.4 to version 1.1.10.1. Further details on this release may be found in the changelog.

Micronaut

The Micronaut Foundation has released version 4.1.0 of the Micronaut Framework delivering Micronaut Core 4.1.3 and new features such as: Bean Mappers to automatically create a mapping between one type and another; an Introspection Builder that utilizes the builder member of the @Introspected annotation to generate a dynamic builder ​​if a type can only be constructed via a builder pattern; and improvements for developers using Kotlin Symbol Processing (KSP) to build Micronaut applications. More details on this release may be found in the release notes.

Micronaut Framework 4.0.6, the sixth maintenance release provides updates to modules: Micronaut for Spring, Micronaut JAX-RS, Micronaut Servlet, Micronaut Validation, Micronaut Redis, Micronaut Tracing, Micronaut AWS and Micronaut Kafka. Further details on this release may be found in the release notes.

WildFly

The release of WildFly 29.0.1 ships with component upgrades, a migration of Quickstarts 29.x to BOMs and WildFly Server 29.0.1.Final, and notable bug fixes such as: WildFly 29.0.0 not starting on Eclipse Temurin 17.0.8 due to a new org.jboss.jts to jdk.jconsole dependency; an upgrade to Square Okio 3.4.0 to resolve CVE-2023-3635, a vulnerability that may lead to a denial of service of the Okio client when handling a crafted GZIP archive via the GzipSource class; and issues with the MicroProfile RestClient and Jakarta CDI specifications after upgrading to WildFly 29.0.0. More details on this release may be found in the release notes.

Hibernate

Versions 6.3.0 and 6.2.8 of Hibernate ORM have been released delivering notable changes such as: initial support for the Jakarta Persistence 3.2 specification for Jakarta EE 11 that includes clarification of numeric literal types in HQL/JPQL queries; a new introductory Hibernate 6 Guide; a new syntax and feature guide for the Hibernate Query Language; the ability to generate DAO-style methods for named queries as part of its JPA static metamodel generator; and the ability for arbitrary methods to be processed by the generator to create finder methods similar to query methods using the new @Find annotation.

The release of Hibernate Reactive 2.0.5.Final ships with compatibility with Hibernate ORM 6.2.8.Final and Vert.x SQL driver 4.4.5. Notable changes include: a change of the return type from Uni to Uni of the generate() method defined in the MutinyGenerator class; the addition of tests for the @TimeZoneStorage annotation; and a new ParametersProcessorTest class to fix escaping issues that were present in processing parameters for the OracleParameters, PostgresParameters and SQLServerParameters classes. Further details on this release may be found in the release notes.

Eclipse Foundation

Eclipse GlassFish 7.0.8, the eighth maintenance release, features initial support for JDK 21 and an optimization of CDI extensions to reduce the number of unnecessary handler calls to the ProcessAnnotatedType interface. Notable bug fixes include: a JDK 11 compatibility issue in RWLockDataStructureTest class; a multi-jar compatibility issue; and Admin Console behavior when an admin user changes password to be empty. More details on this release may be found in the release notes

The release of Eclipse Vert.x 4.4.5 delivers dependency upgrades and notable changes such as: improvements to the ForwardedParser class to support IPV6 addresses when they are not enclosed within square brackets; a decouple of the frame aggregator from the frame handler upon implementing the WebSocketBase interface; and a fix for HTTP/2 throwing an HttpClosedException instead of TimeoutException when a defined timeout has been exceeded. Further details on this release may be found in the release notes and deprecations and breaking changes.

Version 1.14.0 of Eclipse JKube, a Java tools and plugins utility for Kubernetes and OpenShift, has been released featuring bug fixes, improvements and support for Gradle 8, Helidon, the Spring Boot Layered Jar and Helm push charts for OCI registries. More details on this release may be found in the release notes.

JReleaser

Version 1.8.0 of JReleaser, a Java utility that streamlines creating project releases, has been released to deliver improvements in documentation, dependency upgrades and notable changes such as: the creation of default templates for missing announcers; an update to the latest SDKMan endpoints; and improved error handling for GitHub 422 error responses. Further details on this release may be found in the release notes.

It is important to note that the Supply Chain Levels for Software Artifacts (SLSA) has announced a partnership with JReleaser, Maven and Gradle with the release of SLSA 1.0. This validates the design of the Bring Your Own Builder (BYOB) framework and demonstrates its flexibility.

OpenXava

The release of OpenXava 7.1.5 ships with notable changes such as: a new CompositeFilter class that sums two instances of the IFilter interfaces to set with the setFilter() method defined in the Tab class or as base for an IFilter for a @Tab annotation; a new environment variable, XAVA_CALENDAR_VIEWEVENT_ACTION, to define the action on click in a calendar event; and a fix for passing-in the string, “ValidValuesRadioButton,” in the @Editor annotation for an enumeration that produced an IndexOutOfBoundsException in the log. More details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


JDK 21 and JDK 22: What We Know So Far

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

JDK 21, the next Long-Term Support (LTS) release since JDK 17, has reached its initial release candidate phase as declared by Mark Reinhold, chief architect, Java Platform Group at Oracle. The main-line source repository, forked to the JDK stabilization repository in early-June 2023 (Rampdown Phase One), defines the feature set for JDK 21. Critical bugs, such as regressions or serious functionality issues, may be addressed, but must be approved via the Fix-Request process. As per the release schedule, JDK 21 will be formally released on September 19, 2023.

The final set of 15 new features, in the form of JEPs, can be separated into four (4) categories: Core Java Library, Java Language Specification, HotSpot and Security Library.

Six (6) of these new features are categorized under Core Java Library:

Five (5) of these new features are categorized under Java Language Specification:

Three (3) of these new features are categorized under HotSpot:

And finally, one (1) of these new features is categorized under Security Library:

It is important to note that JEP 404, Generational Shenandoah (Experimental), originally targeted for JDK 21, was officially removed from the final feature set in JDK 21. This was due to the “risks identified during the review process and the lack of time available to perform the thorough review that such a large contribution of code requires.” The Shenandoah team has decided to “deliver the best Generational Shenandoah that they can” and will seek to target JDK 22.

We examine some of these new features and include where they fall under the auspices of the four major Java projects – Amber, Loom, Panama and Valhalla – designed to incubate a series of components for eventual inclusion in the JDK through a curated merge.

Project Amber

JEP 445, Unnamed Classes and Instance Main Methods (Preview), formerly known as Flexible Main Methods and Anonymous Main Classes (Preview) and Implicit Classes and Enhanced Main Methods (Preview), 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. Gavin Bierman, consulting member of technical staff at Oracle, has published the first draft of the specification document for review by the Java community. More details on JEP 445 may be found in this InfoQ news story.

JEP 440, Record Patterns, finalizes this feature and incorporates enhancements in response to feedback from the previous two rounds of preview: JEP 432, Record Patterns (Second Preview), delivered in JDK 20; and JEP 405, Record Patterns (Preview), delivered in JDK 19. This feature enhances the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to “enable a powerful, declarative, and composable form of data navigation and processing.” Type patterns were recently extended for use in switch case labels via: JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18, and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. The most significant change from JEP 432 removed support for record patterns appearing in the header of an enhanced for statement. Further details on JEP 440 may be found in this InfoQ news story.

JEP 430, String Templates (Preview), 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. More details on JEP 430 may be found in this InfoQ news story.

Project Loom

JEP 453, Structured Concurrency (Preview), incorporates enhancements in response to feedback from the previous two rounds of incubation: JEP 428, Structured Concurrency (Incubator), delivered in JDK 19; and JEP 437, Structured Concurrency (Second Incubator), delivered in JDK 20. Recent significant changes include: the TaskHandle interface has been renamed to Subtask a fix to correct the generic signature of the handleComplete() method; a change to the states and behavior of subtasks on cancellation; a new currentThreadEnclosingScopes() method defined in the Threads class that returns a string with the description of the current structured context; and the fork() method, defined in the StructuredTaskScope class, returns an instance of Subtask (formerly known as TaskHandle) rather than a Future since the get() method in the old TaskHandle interface was restructured to behave the same as the resultNow() method in the Future interface. Further details on JEP 453 may be found in this InfoQ news story.

JEP 446, Scoped Values (Preview), formerly known as Extent-Local Variables (Incubator), this JEP is now a preview feature following JEP 429, Scoped Values (Incubator), delivered in JDK 20. This JEP proposes to enable sharing of immutable data within and across threads. This is preferred to thread-local variables, especially when using large numbers of virtual threads.

JEP 444, Virtual Threads, proposes to finalize this feature based on feedback from the previous two rounds of preview: JEP 436, Virtual Threads (Second Preview), delivered in JDK 20; and JEP 425, Virtual Threads (Preview), delivered in JDK 19. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. The most significant change from JEP 436 is that virtual threads now fully support thread-local variables by eliminating the option to opt-out of using these variables. More details on JEP 444 may be found in this InfoQ news story and this JEP Café screen cast by José Paumard, Java developer advocate, Java Platform Group at Oracle.

Project Panama

JEP 448, Vector API (Sixth Incubator), incorporates enhancements in response to feedback from the previous five rounds of incubation: JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment as defined by the Foreign Function & Memory API.

JEP 442, Foreign Function & Memory API (Third Preview), incorporates refinements based on feedback and to provide a third preview from: JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 434 include: centralizing the management of the lifetimes of native segments in the Arena interface; enhanced layout paths with a new element to dereference address layouts; and removal of the VaList class.

Developers may be interested in learning about the performance benefits of the Foreign Function & Memory API that is planned to be a final feature in JDK 22. Per-Åke Minborg, consulting member of technical staff at Oracle, has published this blog post in which he provided a benchmark on string conversion using this API for JDK 21 (JEP 442) and JDK 22 (JEP Draft 8310626) compared to using the old Java Native Interface (JNI) calls.

HotSpot

JEP 439, Generational ZGC, proposes to “improve application performance by extending the Z Garbage Collector (ZGC) to maintain separate generations for young and old objects. This will allow ZGC to collect young objects, which tend to die young, more frequently.” Further details on JEP 439 may be found in this InfoQ news story.

JDK 22

Scheduled for a GA release in March 2024, there are no targeted JEPs for JDK 22 at this time. However, based on a number of JEP candidates and drafts, especially those that have been submitted, we can surmise which additional JEPs have the potential to be included in JDK 22.

JEP 447, Statements before super(), under the auspices of Project Amber, proposes to: allow statements that do not reference an instance being created to appear before the this() or super() calls in a constructor; and preserve existing safety and initialization guarantees for constructors. Gavin Bierman, consulting member of technical staff at Oracle, has provided an initial specification of this JEP for the Java community to review and provide feedback.

JEP 435, Asynchronous Stack Trace VM API, a feature JEP type, proposes to define an efficient API for obtaining asynchronous call traces for profiling from a signal handler with information on Java and native frames.

JEP 401, Null-Restricted Value Object Storage (Preview), formerly known as Primitive Classes (Preview), under the auspices of Project Valhalla, introduces developer-declared primitive classes – special kinds of value classes as defined by the Value Objects API – that define new primitive types.

JEP Draft 8307341, Prepare to Restrict The Use of JNI, proposes to restrict the use of the inherently unsafe Java Native Interface (JNI) in conjunction with the use of restricted methods in the Foreign Function & Memory (FFM) API that is expected to become a final feature in JDK 22. The alignment strategy, starting in JDK 22, will have the Java runtime display warnings about the use of JNI unless an FFM user enables unsafe native access on the command line. It is anticipated that in release after JDK 22, using JNI will throw exceptions instead of warnings.

JEP Draft 8310626, Foreign Function & Memory API, proposes to finalize this feature after two rounds of incubation and three rounds of preview: JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17; JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19; JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; and JEP 442, Foreign Function & Memory API (Third Preview), to be delivered in the upcoming release of JDK 21. Improvements since the last release include: a new Enable-Native-Access manifest attribute that allows code in executable JARs to call restricted methods without the use of the --enable-native-access flag; allow clients to programmatically build C function descriptors, avoiding platform-specific constants; improved support for variable-length arrays in native memory; and support for multiple charsets in native strings.

JEP Draft 8288476, Primitive types in patterns, instanceof, and switch (Preview), proposes to “enhance pattern matching by allowing primitive type patterns to be used in all pattern contexts, align the semantics of primitive type patterns with instanceof, and extend switch to allow primitive constants as case labels.”

JEP Draft 8277163, Value Objects (Preview), a feature JEP under the auspices of Project Valhalla, proposes the creation of value objects – identity-free value classes that specify the behavior of their instances. This draft is related to JEP 401, Primitive Classes (Preview), which is still in Candidate status.

JEP Draft 8313278, Ahead of Time Compilation for the Java Virtual Machine, proposes to “enhance the Java Virtual Machine with the ability to load Java applications and libraries compiled to native code for faster startup and baseline execution.”

JEP Draft 8312611, Computed Constants, introduces the concept of computed constants, defined as immutable value holders that are initialized at most once. This offers the performance and safety benefits of final fields, while offering greater flexibility as to the timing of initialization. This feature will debut as a preview API.

JEP Draft 8283227, JDK Source Structure, an informational JEP type, describes the overall layout and structure of the JDK source code and related files in the JDK repository. This JEP proposes to help developers adapt to the source code structure as described in JEP 201, Modular Source Code, delivered in JDK 9.

JEP Draft 8280389, ClassFile API, proposes to provide an API for parsing, generating, and transforming Java class files. This JEP will initially serve as an internal replacement for ASM, the Java bytecode manipulation and analysis framework, in the JDK with plans to have it opened as a public API. Brian Goetz, Java language architect at Oracle, characterized ASM as “an old codebase with plenty of legacy baggage” and provided background information on how this draft will evolve and ultimately replace ASM.

JEP Draft 8278252, JDK Packaging and Installation Guidelines, an informational JEP, proposed to provide guidelines for creating JDK installers on macOS, Linux and Windows to reduce the risks of collisions among JDK installations by different JDK providers. The intent is to promote a better experience when installing update releases of the JDK by formalizing installation directory names, package names, and other elements of installers that may lead to conflicts.

We anticipate that Oracle will start targeting JEPs for JDK 22 very soon.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: Introducing Spring AI, Spring Modulith 1.0, Testcontainers Desktop

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 21st, 2023 features news from OpenJDK, JDK 22, JDK 21, Jakarta EE, BellSoft, Spring Modulith 1.0, Spring Boot, Spring Authorization Server, Spring Batch, Spring AI, Testcontainers, Open Liberty, Quarkus, MicroProfile Metrics and Telemetry, Micronaut, Groovy, Tomcat, Grails, JHipster Lite, Vert.x Pinot Client, Yupiik Fusion and SpringOne conference.

OpenJDK

Ron Pressler, architect and technical lead for Project Loom at Oracle, has introduced JEP Draft 8307341, Prepare to Restrict The Use of JNI, proposes to restrict the use of the inherently unsafe Java Native Interface (JNI) in conjunction with the use of restricted methods in the Foreign Function & Memory (FFM) API that is expected to become a final feature in JDK 22. The alignment strategy, starting in JDK 22, will have the Java runtime display warnings about the use of JNI unless an FFM user enables unsafe native access on the command line. It is anticipated that in release after JDK 22, using JNI will throw exceptions instead of warnings.

Version 7.3.1 of the Regression Test Harness for the JDK, jtreg, has been released and ready for integration in the JDK that fixes a regression introduced in jtreg 7.3 that prevented correctly setting up the default environment variables on Windows. More details on this release may be found in the release notes.

JDK 21

Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.

JDK 22

Build 12 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 11 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

Jakarta EE

In his weekly Hashtag Jakarta EE blog, Ivar Grimstad, Jakarta EE developer advocate at the Eclipse Foundation, has provided the voting results on the motions to add the Jakarta Data, Jakarta MVC and Jakarta NoSQL specifications to the Jakarta EE 11 Platform. Only one of these specifications, Jakarta Data, has passed.

Some comments from those who voted against or abstained from including Jakarta MVC:

This is a mature spec with some adoption at the moment, but before making this mandatory, there should be more adoption from the vendor side. As mentioned before by others, it could be added on every Profile as standalone spec, so nobody is blocked in using it right now and create more demand to add it in a future version (or give a reason for an update on the next versions Release Plan).

I encourage this work and hope it will continue forward. I look forward to eventual adoption by the platform.

I think it’s an interesting addition to the platform, and we have already added it to GlassFish where it can be used out of the box. We however have several concerns. Among them is the fact that Jakarta MVC is based on Jakarta REST, while the existing MVC framework in Jakarta EE is based on Jakarta Servlet. Basing new APIs on REST makes it even more confusing which “HTTP handling API” in Jakarta EE is the core one. We’d love to see a common base being established between Jakarta Servlet and Jakarta REST first, before accepting anything into the platform that builds on Jakarta REST.

Some comments from those who voted against or abstained from including Jakarta NoSQL:

The current architectural design seems to have more frequent updates required than is planned to have for Jakarta Platform releases – this gives a strong argument to keep it outside the Platform now. Another requirement might be to have Jakarta Data and Jakarta Config added first. In general having support for NoSQL is a good idea – so this may change in the future.

It is useful and should be included in the near future. But, the specification is not ready for now, and the maturity is not clear in EE 11 timeframe.

No real feature compared to vendor API/runtime and even the opposite: you can’t use your NoSQL backend without using proprietary API so misses the goal IMHO. Only gain is what can be done in 10-15LoC so not enough to justify the maintenance burden IMHO.

BellSoft

BellSoft has provided patch releases of their Liberica JDK 17 and 11 downstream distributions of OpenJDK that include a critical bug fix as described by JDK-8313765, Invalid CEN header (invalid zip64 extra data field size), a regression in which a ZipException is thrown when opening APK, ZIP or JAR files with several third-party tools. This issue emerged when JDK-8302483, Improved ZIP64 Extra Field Validation, provided additional validation of ZIP64 extra fields when opening a ZIP file.

BellSoft has also introduced Alpaquita Containers for Spring Boot Applications, based on Alpaquita Linux, an operating system based on Alpine Linux tailored for the Java programming language, and Liberica JDK. The former was first introduced in September 2022. Inspiration was based on the discovery that small containers with Spring Boot applications can save cloud resources.

Spring Framework

The second milestone release of Spring Boot 3.2.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: use of jOOQ functionality to determine the SQL dialect; a new ThreadPoolTaskSchedulerBuilder class as a replacement for the deprecated TaskSchedulerBuilder class; and a new SimpleAsyncTaskExecutorBuilder class to build instances of the SimpleAsyncTaskExecutor class; More details on this release may be found in the release notes.

Versions 3.1.3, 3.0.10 and 2.7.15 of Spring Boot all feature improvements in documentation, dependency upgrades and notable bug fixes such as: logging configuration URLs with query parameters that are not detected in XML format; an instance of the JobLauncherApplicationRunner class returning a success exit code even when no jobs have been executed; and the addition of a missing test for RabbitMQ smoke tests. Further details on these releases may be found in the release notes for version 3.1.3, version 3.0.10 and version 2.7.15.

The release of Spring Modulith 1.0 features: a removal of the experimental declaration from the Scenario class; a removal of Spring Modulith Events parent POM from BOM; and upgrades to Spring Asciidoctor Backends 0.0.7 and jMolecules 2023.1.0. More details on this release may be found in the release notes. InfoQ will follow up with a more detailed news story.

The release of Spring Authorization Server 1.1.2 delivers dependency upgrades and notable bug fixes such as: add length validation to prevent an HTTP 500 Internal Server Error due to invalid usercode; the demo-authorizationserver samples test suite not being executed as part of build process; and an instance of the custom form login class, DefaultErrorController, that throws a NullPointerException with a missing error message attribute. Further details on this release may be found in the release notes.

Versions 5.1.0-M2, 5.0.3 and 4.3.9 of Spring Batch have been released that ship with bug fixes, improvements in documentation and enhancements such as: the addition of the Java ConcurrentHashMap and Date classes to the trusted list of classes in the Jackson2ExecutionContextStringSerializer class; and auto-detection of classes/interfaces to be mocked by replacing the mock(Class classToMock) method with the mock() method. New features in version 5.1.0-M2 include: support for bulk inserts and new accessors in the MongoItemWriter class to facilitate extensions. More details on these releases may be found in the release notes for version 5.1.0-M2, version 5.0.3 and version 4.3.9.

Spring AI, a “Spring-friendly API and abstractions for developing AI applications” was introduced at the SpringOne conference this past week. Developers can learn more by watching this YouTube video featuring Josh Long, Spring Developer Advocate at VMware, and Mark Pollack, Senior Staff Engineer at VMware, and this ACME Fitness Store application. InfoQ will follow up with a more detailed news story.

AtomicJar

AtomicJar, makers of Testcontainers, an “open source framework for providing throwaway, lightweight instances of databases, message brokers, web browsers, or just about anything that can run in a Docker container,” has introduced a new Testcontainers Desktop application that is free to the Java community. This release includes features that allow developers to set fixed ports for improved debugging and connecting to running containers and the ability to freeze containers to prevent their shutdown while debugging. This application also allows developers to easily switch their local container runtime that eliminates the need to manipulate the testcontainers.properties file when using Testcontainers with OrbStack/Colima/Rancher Desktop or Podman. InfoQ will follow up with a more detailed news story.

Testcontainers for Java 1.19.0 was also released this past week with notable changes such as: a new forListeningPort(port) convenience method in the Wait class to check on a specific port; use of the SelinuxContext.SHARED enumeration by default; and a new implementation of the ClickHouseContainer class that support the withUsername(), withPassword(), withDatabaseName() and withUrlParam() methods.

Open Liberty

IBM has released version 23.0.0.8 of Open Liberty featuring: support for Proof Key for Code Exchange (PKCE) for OpenID Connect clients that prevents authorization code interception attacks; a fix for CVE-2023-38737, a vulnerability in which an attacker can send a specially-crafted request in Open Liberty versions 22.0.0.13 through 23.0.0.7 causing the server to consume memory resources and lead to a denial of service; and ensure that sufficient amount of features are installed when using the featureUtility installFeature command that formerly didn’t guarantee the feature would work correctly.

Quarkus

Red Hat has released version 3.3.0 of Quarkus with notable changes such as: improvements to the OpenTelemetry extension; a new SmallRye Reactive Messaging Pulsar extension; and the ability to customize the Jackson ObjectMapper class in REST Client Reactive extension. It is important to note that, starting with this release, the .Final suffix in version names will be dropped due to the use of such versioning that is now outdated. Further details on this release may be found in the changelog.

MicroProfile

On the road to MicroProfile 6.1, the MicroProfile Working Group has provided the first release candidate of the MicroProfile Metrics 5.1 specification featuring notable changes such as: an introduction of MicroProfile Config properties that customize how Histogram and Timer metrics track and output statistics for percentiles and histogram buckets; the @RegistryScope annotation is now a qualifier; and a new mp.metrics.defaultAppName property as a requirement for consistent tag sets that previously caused problems in multi-app application server implementations. More details on this release may be found in the changelog.

Similarly, the second release candidate of the MicroProfile Telemetry 1.1 specification has also been released featuring an dependency upgrade to OpenTelemetry Java 1.29.0; a clarification of the behavior of Span and Baggage beans when the current span or baggage changes; and an implementation of tests in such a way that is not timestamp dependent. Further details on this release may be found in the release notes.

Micronaut

The Micronaut Foundation has provided Micronaut Framework 4.0.5, the fifth maintenance release with updates to modules: Micronaut Cassandra, Micronaut MicroStream, Micronaut Security, Micronaut Liquibase, Micronaut Flyway, Micronaut GCP, Micronaut AWS and Micronaut Servlet. More details on this release may be found in the release notes.

Version 2.0.0 of Micronaut Blueprint for JHipster was also released this past week. Based on JHipster 7.9.3, the latest stable version, this blueprint ​​generates a back-end server based on Micronaut Framework 3.10.1 for either monolith- or microservice-style JHipster applications.

Apache Software Foundation

The first alpha release of Apache Groovy 5.0.0 delivers many bug fixes, dependency upgrades, improvements and new features such as: a new asChecked() method in the DefaultGroovyMethods class for improved support for the checkedCollection(), checkedList(), checkedMap(), etc. defined in the Java Collections class; a new @OperatorRename annotation for improved AST transformations; and initial support for JEP 445, Unnamed Classes and Instance Main Methods (Preview). Further details on this release may be found in the changelog.

Similarly, versions 4.0.14 and 3.0.19 of Apache Groovy provide bug fixes, dependency upgrades and improvements such as support for: a null parameter in the collectEntries() method defined in the DefaultGroovyMethods class; and closure parameter type inference for tuples when static type checking. More details on these releases may be found in the release notes for version 4.0.14 and version 3.0.19.

Lastly, the release of Apache Groovy 2.5.23 delivers two bug fixes: improved behavior of variable resolution within the Closure class; and a NoSuchMethodError thrown when executing a Groovy script. Further details on this release may be found in the changelog.

Versions 11.0.0-M11, 10.1.13, 9.0.80 and 8.5.93 of Apache Tomcat were released this past week with all four versions providing notable changes such as: a fix for CVE-2023-41080, a URL redirection to an untrusted site vulnerability in the FORM authentication feature in Apache Tomcat; and use of the provided error code during error page processing rather than assuming an HTTP 500 Internal Server Error if an application or library sets both a non-HTTP 500 Internal Server Error and the jakarta.servlet.error.exception request attribute. Version 11.0.0-M11 also includes an update to the HTTP parameter handling to align with the changes in the Jakarta Servlet 6.1 API for the methods defined in the ServletRequest interface. More details on these releases may be found in the release notes for version 11.0.0-M11, version 10.1.13, version 9.0.80 and version 8.5.93.

Grails

The Grails Foundation has introduced version 6.0.0 of the Grails Spring Security Core Plugin featuring elevated security, support for Spring Security 5.8.6, compatibility with Grails 6.0.0, an enhanced command line interface, dependency upgrades and improved navigation of documentation.

JHipster

Version 0.41.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and improvements such as: a replacement on the use of the Java @Generated annotation with the JHipster @ExcludeFromGeneratedCodeCoverage annotation; a removal of the password() method from the OAuth2Configuration class; and an execution of integration tests with a configuration derived from an application configuration file. Further details on this release may be found in the release notes.

Eclipse Vert.x

The Eclipse Vert.x team has introduced a new Pinot Client for Apache Pinot, a re­al­time distributed datastore for analytical workloads, as a replacement for the Apache Pinot Java Client. This new client exposes a convenient API for Eclipse Vert.x applications to query Apache Pinot servers.

Yupiik

Version 1.0.6 of Yupiik Fusion has been released with notable changes such as support for: embeddable nested tables for cases with more than 255 columns; the ability of the PartialResponse class to customize the RESPONSE_HEADERS field in the JsonRpcHandler class; and the OffsetDateTime, ZoneOffset and LocalDate as root parameters on a JSON-RPC endpoint. More details on this release may be found in the release notes.

SpringOne

The SpringOne and VMware Explore conference was held at the Venetian Convention and Expo Center in Las Vegas, Nevada this past week featuring sessions designed for Application Developers, Platform Operators/DevOps/SREs and Application Architects. Spring Technologies included: Platforms and Tooling for Spring Applications; Spring Framework; Spring Boot; Spring Security; Spring Cloud; Spring Data/Stream; and the Spring Community.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: JDK 21 RC1, Apache Camel 4.0, Payara Platform, Apache Tomcat, Micronaut

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 14th, 2023 features news from OpenJDK, JDK 22, JDK 21, Apache Camel 4.0.0, Payara Platform and point and milestone releases of: Spring Framework, Spring Data, Spring Modulith, Apache Tomcat, Micronaut, Micrometer Metrics and Tracing, Project Reactor, Hibernate Search, Infinispan, JHipster React Native, JBang, Piranha, Byte Buddy, JobRunr, Arquillian and Gradle.

OpenJDK

Daniel Smith, Programming Language Designer at Oracle, has updated JEP 401, Null-Restricted Value Object Storage (Preview), to align with Oracle’s “latest design ideas for expressing flattenability in the language and in class files.” Originally named Primitive Classes (Preview), this JEP supports null-restricted storage of value objects, as specified in JEP Draft 8277163, Value Objects (Preview), in fields and array components that are initialized to an initial instance of the class and reject attempts to write a null value.

JDK 21

As per the JDK 21 release schedule, Mark Reinhold, chief architect, Java Platform Group at Oracle, formally declared that JDK 21 has entered its first release candidate as there are no unresolved P1 bugs in Build 35. The anticipated GA release is scheduled for September 19, 2023.

The final set of 15 features in JDK 21 will include:

Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.

JDK 22

Build 11 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 10 that include fixes to various issues. More details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

Spring Framework

The fourth milestone release of Spring Framework 6.1 delivers dependency upgrades and notable changes such as: support for resource patterns in the @TestPropertySource annotation; support for class-based mapping in the DatabaseClient interface; and a new RowMapper interface that provides automatic binding to database fields. Further details on this release may be found in the list of issues.

The second milestone release of Spring Data 2023.1.0, codenamed Vaughn, delivers: compatibility with JDK 21; support for Kotlin value classes; the use of virtual threads through the Executor interface; and an exploration for optimizations using Coordinated Restore at Checkpoint (CRaC). More details on this release may be found in the release notes.

Similarly, versions 2023.0.3, 2022.0.9 and 2021.2.15, service releases of Spring Data, ship with bug fixes and respective dependency upgrades to sub-projects such as: Spring Data MongoDB 4.1.3, 4.0.9 and 3.4.15; Spring Data Elasticsearch 5.1.3, 5.0.9, and 4.4.15; and Spring Data Neo4j 7.1.3, 7.0.9 and 6.3.15.

The second release candidate of Spring Modulith 1.0 ships with notable changes such as: consistent use of event_publication as a table name for the relational stores and as a collection name for MongoDB in the Event Publication Registry; a rename of the actuator to modulith that eliminates the previous use of dashes in actuator names; and explicit declaration of @ApplicationModule(allowedDependencies = {}) should disallow any outgoing dependencies. Further details on this release may be found in the release notes.

Apache Software Foundation

The release of Apache Camel 4.0.0 provides many bug fixes, dependency upgrades, improvements and new features such as support for: Spring Boot 3 AOT native compile with GraalVM; Micrometer Observation; and pagination in Camel JPA. More details on this release may be found in the release notes. InfoQ will follow up with a more detailed news story.

Versions 11.0.0-M10, 10.1.12, 9.0.79 and 8.5.92 of Apache Tomcat were released this past week with all four versions providing bug fixes and improvements such as: a refactor of the HTTP/2 implementation to reduce pinning when using virtual threads; the addition of pass-through ciphers referring to an OpenSSL profile, such as PROFILE=SYSTEM, instead of producing an error trying to parse it; and a dependency upgrade to Tomcat Native 2.0.5. Further details on these releases may be found in the release notes for version 11.0.0-M10, version 10.1.12, version 9.0.79 and version 8.5.92.

Payara

Payara has released their August 2023 edition of the Payara Platform that includes Community Edition 6.2023.8, Enterprise Edition 6.5.0 and Enterprise Edition 5.54.0 featuring notable bug fixes such as: the inability to instantiate the LdapCtxFactory class with JDK 17; cannot start Payara Server on JDK 11.0.20 or JDK 17.0.8 due to an error in the libpam4j-repackaged.jar dependency; and an exception when using the getConnection() method defined in the DataSource interface due to transactions displaying the wrong status. More details on these versions may be found in the release notes for Community Edition 6.2023.8 and Enterprise Edition 6.5.0.

Micronaut

The Micronaut Foundation has released versions 4.0.4, 3.10.1 and 3.9.6 of the Micronaut Framework. Version 4.0.4 provides updates to modules: Micronaut GraphQL, Micronaut Neo4J, Micronaut Reactor, Micronaut Servlet, Micronaut Cache and Micronaut CRaC modules. Versions 3.10.1 and 3.9.6 deliver a change in the SDKMan Gradle task in which the sdkMajorRelease property was replaced by sdkMinorRelease consisting of a combined release and announcement. Further details on these releases may be found in the release notes for version 4.0.4, version 3.10.1 and version 3.9.6.

Hibernate

The release of Hibernate Search 6.2.1.Final ships with notable changes such as: the ability to read Jandex indexes of repackaged Spring applications assuming the application runs on JDK 13 or greater; search queries with partial failures can now trigger an exception if the configuration property, hibernate.search.backend.query.shard_failure.ignore, is set to false; dependency upgrades to Hibernate ORM 6.2.7.Final and Elasticsearch client 8.9.0; and compatibility with OpenSearch 2.9.0.

Micrometer

Versions 1.12.0-M2, 1.11.3, 1.10.10 and 1.9.14 of Micrometer Metrics have been released featuring bug fixes, improvements in documentation, dependency upgrades and new features such as: removal of the requirement to set an instance of the ObservationRegistry interface on the ObservationThreadLocalAccessor class; and a new JmsInstrumentation class that instruments instances of a Jakarta Messaging Session interface with the Observation API. More details on these releases may be found in the release notes for version 1.12.0-M2, version 1.11.3, version 1.10.10 and version 1.9.14.

Similarly, versions 1.2.0-M2, 1.1.4 and 1.0.9 of Micrometer Tracing have been released featuring dependency upgrades and implementing the use of the CurrentTraceContext interface for the OpenTelemetry Tracer interface for more efficient use of merging scopes, baggages and checking for no-ops. Further details on these releases may be found in the release notes for version 1.2.0-M2, version 1.1.4 and version 1.0.9.

Infinispan

The release of Infinispan 14.0.14 provides notable changes such as: remove of any use of Hibernate Search 5 annotations in Infinispan tests; dependency upgrades to Netty 4.1.94.Final and Jackson 2.15.2 to address CVEs; and the ability for the InvalidatedNearRemoteCache to persist stale values in case of of concurrent access. More details on this release may be found in the changelog.

JHipster

Version 4.4.0 of JHipster React Native has been released featuring: an upgrade to Expo 49 SDK with React Native 0.72.3; update notice and license information in the LICENSE file; and update copyright headers. Further details on this release may be found in the changelog.

JBang

The release of JBang 0.110.1 ships with bug fixes: a NullPointerException when running in a container; and the use of the -g flag in the getCompileOptions() method defined in the JavaSource class to replace using the JAVAC_OPTIONS and COMPILE_OPTIONS environmental variables.

Piranha

The release of Piranha 23.8.0 delivers notable changes such as: the use of the PiranhaConfiguration interface for distributions; a new ExitOnStopFeature class that exits the JVM after all features have been requested to be stopped; and a new WebAppFeature class that provides the capability to host a single web application. More details on this release may be found in their documentation and issue tracker.

Project Reactor

The second milestone release of Project Reactor 2023.0.0 provides dependency upgrades to reactor-core 3.6.0-M2, reactor-netty 1.1.10 and reactor-kafka 1.3.20. There was also a realignment to version 2023.0.0-M2 with the reactor-pool 1.0.1, 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.

Similarly, Project Reactor 2022.0.10, the tenth maintenance release, provides dependency upgrades to reactor-core 3.5.9, reactor-netty 1.1.10 and reactor-kafka 1.3.20. There was also a realignment to version 2022.0.10 with the reactor-pool 1.0.1, 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.

Byte Buddy

The release of Byte Buddy 1.14.6 delivers notable changes such as: the addition of a SUBSTITUTE enum in the AgentBuilder.PatchMode enum and a Substitutable subinterface in the ResettableClassFileTransformer interface for in-order patching; allow for explicit specification of a differential matcher when patching an AgentBuilder interface; and create JAR files for Android read-only as newer versions require it. Further details on this release may be found in the release notes.

JobRunr

Version 6.3.0 of JobRunr, a library for background processing in Java that is distributed and backed by persistent storage, has been released that ships with bug fixes and new features such as: support for Micronaut 4.0 and Kotlin 1.9; performance improvements in the JobRunr dashboard resulting in less calls to the JobRunr REST API; stability improvements to minimize instances of a SevereJobRunrException class being thrown; and a new timeout to automatically interrupt an instance of a Job class, if necessary. More details on this release may be found in the release notes.

Arquillian

The release of Arquillian 1.7.1.Final provides: a fix for an artifact in arquillian-bom-1.7.0.Final throwing a checksum validation error when using Maven 3.6.3; and a dependency upgrade to RESTEasy 6.2.4.Final. Further details on this release may be found in the changelog.

Gradle

The release of Gradle 8.3 delivers: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. More details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: Payara Cloud, MicroProfile Telemetry, Foojay.io Calendar, JVM Language Summit

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 7th, 2023 features news from JDK 22, JDK 21, GraalVM Native Build Tools 0.9.24, Spring Cloud 2023.0.0-M1, Spring Modulith 1.0-RC1, Payara Cloud, Quarkus 3.2.4, MicroProfile Telemetry 1.1, OpenXava 7.1.4, Foojay.io calendar and JVM Language Summit 2023.

JDK 21

Build 35 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 34 that include fixes to various issues. Further details on this build may be found in the release notes.

JDK 22

Build 10 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 9 that include fixes to various issues. More details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GraalVM

On the road to version 1.0, Oracle Labs has released version 0.9.24 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides notable changes such as: support for Profile-Guided Optimization (PGO); migrate away from using ImageClassLoader in favor of ClassLoader for discovery of tests by JUnitPlatformFeature to eliminate the eager class initialization error during native image building time; and improved GraalVM installation instructions. Further details on this release may be found in the changelog.

Spring Framework

The first milestone release of Spring Cloud 2023.0.0-M1, codenamed Leyton, ships with: an implementation of Spring MVC and Jakarta Servlet; support for the Java HttpClient class; and milestone upgrades to sub-projects such as Spring Cloud Commons 4.1.0-M1 and Spring Cloud Task 3.1.0-M1. More details on this release may be found in the release notes.

The first release candidate of Spring Modulith 1.0.0 provides bug fixes, dependency upgrades and new features such as: avoid premature initialization of the SpringModulithRuntimeAutoConfiguration class to avoid a proxy warning; improve database interaction to mark event publications as completed; and allow the ApplicationModulesExporter class to write output to a file. Further details on this release may be found in the release notes. The GA release is scheduled to be announced at SpringOne at VMware Explore conference in late August 2023 and InfoQ will follow up with a more detailed news story.

Payara Cloud

Payara has announced a new 15-day free trial of their Payara Cloud cloud native runtime service for organizations considering their options for these kinds of services. Payara claims that use of Payara Cloud will shorten development cycles, improve operational efficiency and save money training developers in Kubernetes since Payara Cloud handles Kubernetes in the background.

Quarkus

Red Hat has released version 3.2.4.Final of Quarkus with notable changes such as: documentation of Maven configuration options that may be relevant when running tests; a fix for the @RouteFilter annotation that stopped working with WebSocket requests using Quarkus 3.2.0.Final; and a fix for the OpenTelemetry (OTEL) SDK autoconfiguration ignores the OTEL service name in favor of the Quarkus application name. More details on this release may be found in the changelog.

MicroProfile

On the road to MicroProfile 6.1, the MicroProfile Working Group has provided the first release candidate of the MicroProfile Telemetry 1.1 specification featuring notable changes such as: a clarification of which API classes must be available to users; an implementation of tests that is not timestamp dependent; and a clarification of the behavior of the Span and Baggage beans when the current span or baggage changes. Further details on this release may be found in the list of issues.

OpenXava

The release of OpenXava 7.1.4 features dependency upgrades and notable fixes such as: use of the @DisplaySize annotation with a value greater than 50 is ignored when used with @Column(length=255); files lost when uploading several files at same time on creating a new entity; and moving columns to customize a list does not work if the application name contains underscores. More details on this release may be found in the release notes.

Foojay.io

The Foojay.io community calendar now has the ability to automatically import individual Meetup pages maintained by Java Users Groups. This eliminates the need for JUGs to manually enter their Meetup events on the Foojay.io calendar. To get started, JUG leaders would need to register on the Foojay.io Slack channel and specify either daily or weekly basis for automatic updates.

JVM Language Summit

Sharat Chander, senior director, Java and Container Native Product Management and Developer Relations at Oracle, provided InfoQ with a summary of the 2023 JVM Language Summit that featured this agenda and OpenJDK Committers’ Workshop.

Last week represented the 15th edition of the JVM Language Summit. Taking place in Santa Clara, California, this three day summit hosted by Oracle’s Java language and JVM teams offered an open technical collaboration among language designers, compiler writers, tool builders, runtime engineers, and VM architects.

The summit welcomed the creators of both the JVM and programming languages for the JVM to share their experiences. It also included non-JVM developers of similar technologies to attend or speak on their runtime, VM, or language of choice. The attendee mix comprised participants from 15 companies, 30 countries, as well as 11 members of the Java Champions luminary program and 16 Java User Group leaders and organizers.

From sessions exploring dimensions from Project Leyden, Loom, Panama and Valhalla, the summit also offered insight into areas such as Generational ZGC, the Class-File API preview feature, and more.

Chander stated that “session recordings will be made available soon so keep an eye out for an update!”

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: Liberica JDK Performance Edition, GraalVM JDK 21 Builds, Open Liberty, Quarkus

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for July 31st, 2023 features news from OpenJDK, JDK 22, JDK 21, GlassFish 7.0.7, GraalVM JDK 21 Developer Builds, Liberica JDK Performance Edition, JNoSQL 1.0.1, Spring Tools 4.19.1, Open Liberty 23.0.0.8-beta and 23.0.0.7, Micronaut 4.0.3, Quarkus 3.2.3 and 2.16.9, Apache Camel 4.0.0-RC2, JHipster Lite 0.40, Ktor 2.3.3, Maven 3.9.4 and Gradle 8.3-RC3.

OpenJDK

David Delabassee, director of Java developer relations at Oracle, has announced a change in annotation processing. The OpenJDK team is considering disabling default implicit annotation processing in a future release of OpenJDK. This is due to implicit annotation proceeding when there are no annotation processing configuration options. As of JDK 21 Build 29 and JDK 22 Build 4, the javac utility will print a note (as shown below) if implicit annotation processing is being used.

    Annotation processing is enabled because one or more processors were
    found on the class path. A future release of javac may disable
    annotation processing unless at least one processor is specified by
    name (-processor), or a search path is specified (--processor-path,
    --processor-module-path), or annotation processing is enabled
    explicitly (-proc:only, -proc:full).

    Use -Xlint:-options to suppress this message.
    Use -proc:none to disable annotation processing.

JDK 21

Build 34 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 33 that include fixes to various issues. Further details on this build may be found in the release notes.

JDK 22

Build 9 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 8 that include fixes to various issues. More details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GlassFish

GlassFish 7.0.7, the seventh maintenance release, delivers refactoring and maintenance, component upgrades and notable bug fixes such as: creation of a new Admin Object Resource in the Admin Console; generation of Web Services Description Language (WSDL) for use with JDK 21; and a remote EJB access issue in the glassfish-naming package by updating the osgi.bundle files. More details on this release may be found in the release notes.

GraalVM

The GraalVM JDK 21 Developer Builds for GraalVM 23.1.0 Community Edition have been made available to the Java community. These builds include the JVM and developer tools for generating native images from Java applications. More details on this release may be found in the release notes.

BellSoft

BellSoft has introduced the Liberica JDK Performance Edition that delivers the performance of JDK 17 to enterprise workloads running on JDK 11 without the need to worry about migration to newer versions of the JDK. BellSoft claims that companies will “notice the instant performance boost up to 10–15% with little to no code adjustments.” Enhancements include: improved garbage collection using Shenandoah, ZGC and G1GC; and several runtime improvements. More details on the Liberica JDK Performance Edition may be found in the user’s guide.

JNoSQL

The release of JNoSQL 1.0.1 delivers notable fixes such as: logic in the getConstructors() method defined in the Reflections class to detect constructors with parameters annotated with @Id or @Column; lazy loading metadata in the EntityMetadata interface; and a redesign of the ParameterMedataData interface to not throw a NullPointException when it’s implementation with a JDK Parameter class that does not use the of the @Id or @Column annotations. More details on this release may be found in the release notes.

Spring Framework

Spring Tools 4.19.1 has been released featuring early-access builds for Eclipse 2023-09 IDE milestones and notable bug fixes such as: experimental validation support for Spring Modulith; Spring Boot language server interfering with the automatic project synchronization of Eclipse Gradle Buildship; and no classpath update after source code has been saved. More details on this release may be found in the release notes.

Open Liberty

IBM has released version 23.0.0.8-beta of Open Liberty that ships with: support for running a Spring Boot 3.0 application on Open Liberty; and a continued early preview support of Jakarta Data, a new specification that will officially be included in the upcoming release of Jakarta EE 11.

Similarly, Open Liberty 23.0.0.7 has been released featuring API and SPI Javadocs now available in the reference section of the Open Liberty documentation and notable changes such as: add missing public methods in the GlobalOpenTelemetry class; fix concurrency errors when using same JWT access token for inbound propagation; and a dependency upgrades to Apache MyFaces 4.0.1.

Micronaut

Micronaut 4.0.3, the third maintenance release, delivers a patch update to the Micronaut Core project and updates to modules: Micronaut Maven Plugin, Micronaut Data, Micronaut Multitenancy, Micronaut GCP, Micronaut RabbitMQ, and Micronaut Security.

The release of Micronaut Core 4.1.0 provides new features and improvements such as: support for Kotlin default parameters; replacement of the HttpStreamsHandler and HandlerPublisher for the client in favor of directly handling the incoming instances of the HttpRequest and HttpContent interfaces and transformed to the required types; a new builder() method in the BeanIntrospector interface to deal with all the different cases of instantiation.

Quarkus

Red Hat has released version 3.2.3.Final of Quarkus featuring notable changes such as: support for user methods with the @Transactional annotation in REST Data with the Panache ORM; the addition of a clear error message when Reactive REST Client used outside of Quarkus; and properly resolve use of the @TestProfile annotation with nested tests in base classes. More details on this release may be found in the changelog.

Similarly, Quarkus 2.16.9.Final has also been released providing notable changes such as: prevention of a ContextNotActiveException with an invalid configuration validation if the RESTEasy Reactive module is present; a fix for addressing CVE-2023-1428 and CVE-2023-32731, two gRPC Protocol Buffers-related CVEs; and a dependency upgrade to gRPC 1.53.0. More details on this release may be found in the changelog.

Apache Software Foundation

The second release candidate of Apache Camel 4.0.0 delivers bug fixes, dependency upgrades and new features such as: support for Kubernetes in Camel JBang; a new standalone Web Console available for all Camel applications; and limit the auto-conversion of all body types when stream caching is enabled due to issues when the body type is not a stream. More details on this release may be found in the release notes.

JHipster

Version 0.40.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and new features such as: add the AddDirectJavaDependency record for use in the Gradle dependency; change the logger in the CorsFilterConfiguration class to static; and an implementation of keyboard navigation for the Landscape screen. More details on this release may be found in the release notes.

JetBrains

JetBrains has released Ktor 2.3.3 that ships with notable changes such as: support for YAML configuration; a fix for Kotlin’s IllegalArgumentException upon using the UTF-8 charset after migrating from Xcode 14 to XCode 15; and a fix for a DataFormatException when WebSocket compression is enabled by default. More details on this release may be found in the what’s new page.

Maven

The release of Maven 3.9.4 features dependency upgrades and a fix for an endless loop in the getMessage() method defined in the DefaultExceptionHandler class.

Gradle

The third release candidate of Gradle 8.3 delivers continued improvements such as: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. Further details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: Grails 6.0, PrimeFaces 13.0, JUnit 5.10, GraalVM, TornadoVM, New JEP Drafts

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for July 24th, 2023 features news from OpenJDK, JDK 22, JDK 21, GraalVM Community Components 23.0.1, Spring Cloud 2022.0.4, Spring Security and Spring Shell point releases, Grails 6.0, TornadoVM 0.15.2, Liberica NIK 23.0.1, PrimeFaces 13.0, Quarkus 3.2.2, Hibernate Reactive 2.0.4, Micronaut 4.0.2, JBang 0.110, JHipster Lite 0.39, JUnit 5.10 and Gradle 8.3-RC2.

OpenJDK

Maurizio Cimadamore, software architect at Oracle, has submitted JEP Draft 8310626, Foreign Function & Memory API. This JEP proposes to finalize this feature after two rounds of incubation and three rounds of preview: JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17; JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19; JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; and JEP 442, Foreign Function & Memory API (Third Preview), to be delivered in the upcoming release of JDK 21. Improvements since the last release include: a new Enable-Native-Access manifest attribute that allows code in executable JARs to call restricted methods without the use of the --enable-native-access flag; allow clients to programmatically build C function descriptors, avoiding platform-specific constants; improved support for variable-length arrays in native memory; and support for multiple charsets in native strings.

Cimadamore and Per-Åke Minborg, consulting member of technical staff at Oracle, have submitted JEP Draft 8312611, Computed Constants. This JEP introduces the concept of computed constants, defined as immutable value holders that are initialized at most once. This offers the performance and safety benefits of final fields, while offering greater flexibility as to the timing of initialization. This feature will debut as a preview API.

Julian Waters, OpenJDK development team at Oracle, has submitted JEP Draft 8313278, Ahead of Time Compilation for the Java Virtual Machine. This JEP proposes to “enhance the Java Virtual Machine with the ability to load Java applications and libraries compiled to native code for faster startup and baseline execution.”

Version 7.3 of the Regression Test Harness for the JDK, jtreg, has been released and ready for integration in the JDK. Notable changes include: an updated set of default environment variables (DBUS_SESSION_BUS_ADDRESS, WAYLAND_DISPLAY, and XDG-*) set for tests on Unix-like platforms; a fix for a race-condition when running tests with a multi-module setup; and a fix in the log() method defined in the AgentServer class that did not flush the output. More details on this release may be found in the release notes.

JDK 21

Build 33 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 32 that include fixes to various issues. Further details on this build may be found in the release notes.

JDK 22

Build 8 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 7 that include fixes to various issues. More details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GraalVM

The release of GraalVM Community Components 23.0.1, comprised of GraalVM for JDK 20 Community 20.0.2 and GraalVM for JDK 17 Community 17.0.8, provides these Native Image fixes: jvmstat performance data initialization; JDK Flight Recorder (JFR) events constant pool IDs; user experience issues; and analysis results in build reports. There was also an update to the strip mining optimization for counted loops feature in which mine overflow loops are defined as “do not strip” in the Graal compiler. These new versions are built upon JDK versions 20.0.2+9 and 17.0.8+7, respectively. Further details on these releases may be found in the release notes for version 20.0.2 and version 17.0.8.

Similarly, GraalVM Community Edition 22.3.3 was also released to align with the April 2023 Critical Patch Update (CPU) for GraalVM Community Edition. This version is built upon JDK versions 17.0.7 and 11.0.19. More details on this release may be found in the release notes.

Further details on the latest release of GraalVM may be found in this detailed news story featuring Q&A with Alina Yurenko, developer advocate for GraalVM at Oracle Labs.

Spring Framework

The release of Spring Cloud 2022.0.4, codenamed Kilburn, delivers notable changes such as: support for retry-aware load-balancing for delegates of the ServiceInstanceListSupplier interface in Spring Cloud Commons; improved exception handling for loading shared beans in Spring Cloud Stream; and dependency upgrades to Feign 12.4 and Eureka 2.0.1 for Spring Cloud OpenFeign and Spring Cloud Netflix, respectively. This latest version builds upon Spring Boot 3.0.9. It is important to note that subprojects: Spring Cloud CLI, Spring Cloud for Cloud Foundry and Spring Cloud Sleuth, have been removed from the release train. More details on this release may be found in the release notes.

Versions 6.1.2, 6.0.5, 5.8.5, 5.7.10 and 5.6.12 of Spring Security have been released to address two Common Vulnerabilities and Exposures: CVE-2023-34034, WebFlux Security Bypass With Un-Prefixed Double Wildcard Pattern, is a vulnerability in which using the double wildcard (**) as a pattern in Spring Security configuration for Spring WebFlux creates a mismatch in pattern matching that may result in a security bypass; and CVE-2023-34035, Authorization Rules Can Be Misconfigured When Using Multiple Servlets, a vulnerability in which using the requestMatchers(String) method and multiple servlets, one of them being the Spring MVC DispatcherServlet class, may lead to an authorization rule misconfiguration. Further details on these releases may be found in the release notes for version 6.1.2, version 6.0.5, version 5.8.5, version 5.7.10, and version 5.6.12.

Versions 3.1.3, 3.0.7 and 2.1.12 of Spring Shell have been released featuring the addition of a complete() method in the CompletionProposal class to allow for completing a single argument with multiple tab clicks, such as file paths. These versions build upon Spring Boot versions 3.1.2, 3.0.9 and 2.7.14, respectively. More details on these releases may be found in the release notes for version 3.1.3, version 3.0.7 and version 2.1.12.

Grails

The Grails Foundation has released version 6.0 of Grails delivering: a minimal JDK 11 version; support for Spring Framework 5.3.28, Spring Boot 2.7.12 and Gradle 7.6.1; the debut of Grails Forge UI, a starter project similar to Spring Initializr and others; and enhanced integration of the Micronaut Framework. Further details on this release may be found in the release notes and InfoQ will follow up with a more detailed news story.

TornadoVM

TornadoVM, an open-source software technology company, has released version 0.15.2 of their virtual machine that ships with bug fixes and notable improvement such as: initial support for Multi-Tasks on Multiple Devices that enables the execution of multiple independent tasks on more than one hardware accelerator; support for trigonometric radian, cospi and sinpi functions for the OpenCL/PTX and SPIR-V backends; and initial integration with ComputeAorta (part of the Codeplay’s oneAPI construction kit for RISC-V) to run on RISC-V with vector instructions in emulation mode. More details on this release may be found in the release notes.

Juan Fumero, research associate, Advanced Processor Technologies Research Group at The University of Manchester, introduced TornadoVM at QCon London in March 2020 and has since contributed this more recent InfoQ technical article.

LibericaJDK

BellSoft has released version 23.0.1 of their Liberica Native Image Kit (NIK) for JDK 17.0.8 and 20.0.2 as part of Critical Patch Update (CPU) release cycle featuring: experimental support for ParallelGC on the Windows OS; a fix for the compilation of JavaFX FXML applications; and fixes for the following Common Vulnerabilities and Exposures: CVE-2023-22043; CVE-2023-22041; CVE-2023-25193; CVE-2023-22044; CVE-2023-22045; CVE-2023-22049; CVE-2023-22036; and CVE-2023-22006.

PrimeFaces

Version 13.0.0 of PrimeFaces has been released with bugs fixes, dependency upgrades and new features such as: support for columns and footer facet in the SelectCheckboxMenu class; the addition of selectOnFocus() and caretPositionOnFocus() methods in the InputNumber class; and the addition of a cache attribute in the OverlayPanel class. It is important to note that there are breaking changes. Further details on this release may be found in the release notes.

Quarkus

Red Hat has released version 3.2.2.Final of Quarkus to address two regressions from version 3.2.1 and improvements in documentation. Notable changes include: revert back to the openjdk-17-runtime:1.16 images due to the development branch having the version number bumped to 1.17 in anticipation of the next release scheduled for release in August 2023; remove the false positive warning about the quarkus.launch.rebuild property; and allow reauthentication if the OIDC state cookie is not matched. More details on this release may be found in the changelog.

Hibernate

The release of Hibernate Reactive 2.0.4.Final features: a dependency upgrade to Hibernate ORM 6.2.7.Final; start the Docker container only as requested to confirm that a remote database already started before executing the full build; and a fix for which the @SQLSelect annotation did not work on a primary entity. Further details on this release may be found in the release notes.

Micronaut

Micronaut Framework 4.0.2, the second maintenance release, provides bug fixes, improvements in documentation, dependency upgrades and improvements such as: add version number check to the BuildTestVerifier interface; and move Async validation to a processor module due to the AsyncTypeElementVisitor class defined as a compileOnly dependency. More details on this release may be found in the release notes.

The Micronaut Foundation has moved their chat community from Gitter to Discord effective immediately. The foundation states that Discord provides an improved desktop application experience, better-structured conversations and enhanced notifications. Developers on Gitter are encouraged to move to Discord, however the foundation will continue to monitor conversations on Gitter and provide links to Discord.

JBang

The release of JBang 0.110.0 ships with a change in its Maven Central ID from mavencentral to central for fetching dependencies to allow for better sharing of downloads between Maven- and JBang-based builds. There was also a fix for a regression in which Maven artifacts containing capital letters failed to download.

JHipster

Version 0.39.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and improvements such as: enhancements to the Logback dependency with improved configuration and the elimination of having to explicitly define the shutdown hook; add a getInstantOrDefault() method to the JHipsterModuleProperties class; and a switch to a non-parallel stream in REST pagination mapping to ensure sequential processing of the stream. Further details on this release may be found in the release notes.

JUnit

JUnit 5.10.0 has been released with new features such as: experimental APIs, such as ModuleSelector, EngineDiscoveryListener, EngineDiscoveryRequestResolver, LauncherSession and @Suite, have been promoted to stable; new selectors in the @SelectMethod annotation; and a new LauncherInterceptor interface for intercepting the creation of instances of the Launcher and LauncherSessionListener interfaces. More details on this release may be found in the release notes.

Gradle

The second release candidate of Gradle 8.3 delivers continued improvements such as: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. Further details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: WildFly 29, JDK 21 in RDP2, Helidon 4.0-M1, Oracle Critical Patch Updates

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for July 17th, 2023 features news from JDK 22, JDK 21, JDK 20, BellSoft, releases of: Spring Boot; Spring Framework; Spring for GraphQL; Spring Session; Spring Integration and Spring HATEOAS; WildFly 29, Quarkus 3.2.1, Helidon 4.0-M1, Micronaut 4.0.1, Hibernate 6.3-CR1, MicroProfile Config 3.1, Infinispan 14.0.13, PrimeFaces 12.0.5, OpenXava 7.1.3 and Gradle 8.3-RC1.

JDK 20

JDK 20.0.2, the second maintenance release of JDK 20, along with security updates for JDK 17.0.8, JDK 11.0.20 and JDK 8u381, were made available as part of Oracle’s Releases Critical Patch Update for July 2023.

JDK 21

As per the JDK 20 release schedule, Mark Reinhold, chief architect, Java Platform Group at Oracle, formally declared that JDK 21 has entered Rampdown Phase Two to signal continued stabilization for the GA release in September 2023. Critical bugs, such as regressions or serious functionality issues, may be addressed, but must be approved via the Fix-Request process.

The final set of 15 features in JDK 21 will include:

Build 32 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 31 that include fixes to various issues. Further details on this build may be found in the release notes.

JDK 22

Build 7 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 6 that include fixes to various issues. More details on this build may be found in the release notes.

For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

BellSoft

Also concurrent with Oracle’s Critical Patch Update (CPU) for July 2023, BellSoft has released CPU patches for versions 17.0.7.0.1, 11.0.19.0.1 and 8u381 of Liberica JDK, their downstream distribution of OpenJDK. In addition, Patch Set Update (PSU) versions 20.0.2, 17.0.8, 11.0.20 and 8u382, containing CPU and non-critical fixes, have also been released.

Spring Framework

The first milestone release of Spring Boot 3.2.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: support for the JDK HttpClient class and Jetty in the ClientHttpRequestFactories class; allow key password to be set for an instance of the PemSslStoreBundle class; and deprecation of the DelegatingApplicationContextInitializer and DelegatingApplicationListener classes in favor of registering each delegate programmatically or in the spring.factories property. Further details on this release may be found in the release notes.

Versions 3.1.2, 3.0.9 and 2.7.14 of Spring Boot have also been released with dependency upgrades, improvements in documentation and notable bug fixes such as: the ImportsContextCustomizer test class does not support the @AliasFor annotation; the equals() method defined in the ConfigurationPropertyName class is not symmetric when the element contains trailing dashes; and an auto-configuration failure with a NoSuchMethodError exception due to the removal of Oracle-related methods from the Flyway FluentConfiguration class. More details on these releases may be found in the release notes for version 3.1.2, version 3.0.9 and version 2.7.14.

The third milestone release of Spring Framework 6.1 delivers new features such as: new configuration options for virtual threads on JDK 21 with a dedicated VirtualThreadTaskExecutor class and a new setVirtualThreads() method added to the SimpleAsyncTaskExecutor class; Spring MVC now throws NoHandlerFoundException or NoResourceFoundException exceptions to allow for consistent handling of HTTP 404 errors that includes the RFC 7807, Problem Details for HTTP APIs, error response; and support for the BeanPropertyRowMapper and DataClassRowMapper classes in the R2DBC project. Further details on this release may be found in the what’s new page.

The release of Spring for GraphQL 1.2.2 released delivers bug fixes, improvements in documentation, dependency upgrades and these new features support for: Kotlin coroutines in the @GraphQlExceptionHandler annotation; and the ValueExtractor interface for the ArgumentValue class for improved bean validation. More details on this release may be found in the release notes.

The first milestone release of Spring Session 3.2.0 provides dependency upgrades and these new features: a new SessionIdGenerationStrategy interface that specifies a strategy for generating session identifiers; and eliminating multiple calls to the commitSession() method in the private SessionRepositoryRequestWrapper class defined in the SessionRepositoryFilter class upon calling the include() method defined in the RequestDispatcher interface. Further details on this release may be found in the release notes.

The first milestone release of Spring Integration 6.2 ships with notable changes such as: removal of the unused JDK ThreadLocal class from the RedisStoreMSource class; an optimization of the maybeIndex() method in the JsonPropertyAccessor class; and the addition of the @LogLevels annotation for the SftpRemoteFileTemplateTests class for tracing diagnostics. More details on this release may be found in the release notes.

Versions 2.2.0-M2, 2.1.2 and 2.0.6 of Spring HATEOAS have been released that feature a fix for a regression in the AOT reflection metadata generation so that applications building native images continue to work on the upcoming releases of Spring Boot. Further details on these releases may be found in the release notes for version 2.2-M2, version 2.1.2 and version 2.0.6.

WildFly

Red Hat has released version 29 of WildFly featuring bug fixes, internal housekeeping from the migration to Jakarta EE 10 and new features such as: the ability to secure the management console with WildFly’s native support for OpenID Connect; a new Keycloak SAML Adapter feature pack that uses Galleon Provisioning to add Keycloak’s SAML adapter to an installation of WildFly; and support for MyFaces 4.0, a compatible implementation of Jakarta Faces specification, using the new WildFly MyFaces 1.0.0.Beta1 feature pack.

Quarkus

Red Hat has also released version 3.2.1.Final of Quarkus featuring the addition of the OpenAPI schema and UI to be published when the management interface is enabled along with the ability to configure using the quarkus.smallrye-openapi.management.enabled property. Other notable changes include: support for serialization of class fields with Jackson in native mode; avoiding a race condition on adding a content-length header if it already exists resulting in the response never being sent; and the removal of a default token customizer from an OIDC Microsoft provider that breaks signature verification. More details on this release may be found in the release notes.

Helidon

The first milestone release of Helidon 4.0.0 delivers notable changes: removal of the Helidon Reactive WebServer and WebClient that were based on Netty as Helidon fully commits to Project Níma with new implementations based on virtual threads that have a blocking style API; conversion of other modules with reactive APIs to blocking style APIs; the introduction of Helidon Injection, a deterministic, source-code-first, compile time injection framework; support for MicroProfile 6 and Jakarta 10 Core Profile running on the Níma WebServer; and initial adoption of Helidon Builders, a builder code generation framework. It is important to note that this is a preview release and the new features are a work-in-progress. Further details on this release may be found in the release notes.

Micronaut

The Micronaut Foundation has provided version 4.0.1 of Micronaut Framework, the first maintenance release since the release of Micronaut 4.0, featuring: dependency upgrades; improvements in documentation; a fix for a constructor copy; and the addition of a propagated context to the reactive controller methods in the ReactorPropagation class. More details on this release may be found in the release notes.

Hibernate

Versions 6.3.0-CR1 and 6.2.7 of Hibernate ORM have been released that ships with: new documentation that adds an introductory Hibernate 6 guide and the Hibernate Query Language syntax and feature guide; the ability to generate DAO-style methods for named queries as part of the JPA static metamodel generator; and a new @Find annotation for which arbitrary methods may now be processed by the generator to create finder methods similar to query methods.

MicroProfile

On the road to MicroProfile 6.1, the MicroProfile Working Group has provided the first release candidate of MicroProfile Config 3.1 featuring notable changes such as: the MissingValueOnObserverMethodInjectionTest class fails due to the ConfigObserver bean, defined as @ApplicationScoped and final, which is beyond the scope of the DeploymentException the test was designed to throw; failing TCK tests due to empty beans being declared as all when they should be declared as annotated; and an upgrade of all tests to be compatible with Jakarta Contexts and Dependency Injection 4.0. Further details on this release may be found in the list of issues.

Infinispan

Versions 14.0.13 and 14.0.12 of Infinispan have been released with notable changes such as: a fix for the SearchException while rebuilding an index; filter out illegal characters found in memory pool names; and a fix for the RemoteStore class leaking Netty event loop client threads. More details on these releases may be found in the release notes for version 14.0.13 and 14.0.12.

PrimeFaces

Versions 12.0.5, 11.0.11, 10.0.18 and 8.0.23 of PrimeFaces have been released with notable fixes such as: the FullAjaxExceptionHandler class does not display an error page when an exception is thrown during an AJAX request; a NullPointerException from the encodeScript() method defined in the InputTextRenderer class due to an empty counter bypassing the conditional that checks for null; and fixes for the user interface. Further details on these releases may be found in the changelogs for version 12.0.5, version 11.0.11, version 10.0.18 and version 8.0.23.

OpenXava

The release of OpenXava 7.1.3 features dependency upgrades and notable fixes such as: one security vulnerability in the dependencies; the project does not start if the workspace is in a path with special characters or accents; and use of the @OnChange annotation on the first property of a collection view in an @OneToMany annotation with no cascade displays an error. More details on this release may be found in the release notes.

Gradle

The first release candidate of Gradle 8.3 delivers improvements such as: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. Further details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.