QCon San Francisco 2023 Day 3: Architecting the Cloud, Deep Tech, Frontend Trends, Org Resilience

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

Day Three of the 17th annual QCon San Francisco conference was held on October 4th, 2023, at the Hyatt Regency San Francisco in San Francisco, California. This five-day event, consisting of three days of presentations and two days of workshops, is organized by C4Media, a software media company focused on unbiased content and information in the enterprise development community and creators of InfoQ and QCon. It included a keynote address by Will Larson and presentations from these four tracks:

  • Architecting for the Cloud
    • Hosted by Khawaja Shams, Co-Founder and CEO at Momento
    • Offers attendees to share practitioner-driven insights on what works (and what doesn’t) as an inspiration to make the most out of a developer’s cloud computing journey.
  • Deep Tech: Pushing the Boundaries of Hardware+Software
    • Hosted by Allison Randal, Board Member at sfconservancy.org, openinfra.dev, and openusage.org
    • Offers attendees to explore the latest trends in deep tech, including artificial intelligence, machine learning, big data, IoT/Edge, security, quantum computing, and more.
  • Emerging Trends in the Frontend
    • Hosted by Jeff Wagner, Director of Engineering at Snowflake
    • Offers attendees to leverage new frameworks and capabilities to create more flexible, faster and engaging applications for users.
  • Lessons in Building Organization Resilience
    • Hosted by Courtney Hemphill, Partner and Head of Product, Engineering and Design (PXEL) at WestMonroe
    • Offers attendees to dive into approaches teams and engineering leaders have taken to improve the resiliency of their organization over time.

There was also one sponsored solutions track.

Wes Reisz, Technical Principal at Thoughtworks, Creator/Co-Host of The InfoQ Podcast and QCon San Francisco 2023 Program Committee Chair, and Danny Latimer, Content Product Manager at C4Media, kicked off the day three activities by welcoming the attendees and providing an overview from day two. There were 20 editorial presentations, four unconference sessions and six presentations from sponsors.

Reisz highlighted a list of recommended day two sessions based on attendee feedback, namely: How Netflix Ensures Highly-Reliable Online Stateful Systems presented by Joseph Lynch, Distributed Systems Engineer at Netflix; How to Get Tech-Debt on the Roadmap presented by Ben Hartshorne, Principal Engineer at Honeycomb; Building Guardrails for Enterprise AI Applications with LLMs presented by Shreya Rajpal, Founder at Guardrails AI; and Defensible Moats: Unlocking Enterprise Value with Large Language Models presented by Nischal HP, Vice President of Data Science at Scoutbee.

Latimer provided an overview of how QCon conferences are organized. The process starts with a program committee six to seven months in advance, the selection of tracks and track hosts, and how the track hosts select the speakers for their respective tracks. There is no call for papers as speakers are selected by invitation, and are typically senior software practitioners and real-world technical experts.

Including himself, Reisz introduced the program committee, namely: Monica Beckwith, Java Champion, First Lego League Coach, passionate about JVM Performance at Microsoft; Haley Tucker, Principal Software Engineer for Platform Engineering at Netflix; Sid Anand, Chief Architect at Datazoom, Committer/PMC Apache Airflow; Courtney Hemphill; and Justin Cormack, CTO at Docker.

Latimer acknowledged the many QCon San Francisco staff and volunteers, the exhibitors and sponsors.

The aforementioned track leads for Day Three introduced themselves and described the presentations in their respective tracks.

Courtney Hemphill introduced the keynote speaker, Will Larson.

Keynote Address: Use Engineering Strategy to Reduce Friction and Improve Developer Experience

Will Larson, CTO at Carta and Author of “An Elegant Puzzle” and “Staff Engineer”, presented his keynote address entitled, Use Engineering Strategy to Reduce Friction and Improve Developer Experience. Larson kicked off his keynote with the alternate title, “Solving the Engineering Strategy Crisis!” Referencing the Book, “Good Strategy/Bad Strategy” by Richard Rumelt, Larson enumerated the attributes for a good engineering strategy, namely: diagnosis, guiding policies and coherent actions. This is the basis for his equation:

Engineering strategy = honest diagnosis + practical approach

As an example, Larson provided a step-by-step engineering crisis scenario using a fictitious company called “Widget & Hammer Company.”

  • A software engineer joins Widget & Hammer Company
  • The engineer’s team works in a Python monolith to build the Widget product
  • The CTO hates monoliths and mandates a service migration
  • The engineer switches teams to build a brand new Hammer product in a new service
  • Two years later, the engineer’s old team and the Widget product are still in the monolith
  • The engineer has no idea how to share code between the Widget and Hammer products

Focusing on the honest diagnosis operand of the above equation, Larson asks, “How can engineering strategy help the Widget & Hammer company?” To start, he presented a number of dishonest diagnoses, namely: “We can migrate to services in three months;” “We have de-risked our approach by moving meaningful complex component out of our monolith;” We are willing to invest heavily in migrating our services, even if it means slowing down product velocity in the short term;” and “We are willing to expand out Developer Tools team to build new tools for services in addition to supporting our existing monolith.”

Interestingly, the list of honest diagnoses was exactly the same because it is quite possible that any one of them can be accomplished. Larson then defined honest diagnosis as “A reality-based assessment of your circumstances. Nothing is universally honest.”

Focusing on the practical approach operand of the above equation, Larson asks, “How can engineering strategy help the Widget & Hammer company?” He maintained that practical approaches acknowledge tradeoffs when documenting strategies. A small example showed the process of how an engineering strategy evolved from something that would most likely fail to something that would most likely succeed. Context and knowing the tradeoffs are essential.

Larson then asked, “Can something so simple be so useful?” To answer that question, he elaborated on some concrete strategy examples from Stripe (“We run a Ruby monolith”), Calm (“We are a product engineering company”) and Uber (“We run our own hardware”). For each company, he provided the diagnosis, the approach and the impact.

The engineering strategies for all three companies were successful because: many interesting properties are only available through universal adoption (“We run our own hardware”); concentrate on tooling investment (“We run a Ruby monolith”); reduce energy lost on conflict (“We are a product engineering company”); control your innovation budget (all three); and new hires, especially senior new hires, are forced to explicitly engage with strategy rather than having the option of ignoring it. (all three).

There is also an impact on missing engineering strategies with examples of: a good diagnosis, but highly impractical approach; a diagnosis reasoned back from an approach as that approach was determined to be built on a shaky foundation; and two reasonable, but conflicting diagnoses that culminated in a flawed approach.

Larson stated that every company has an engineering strategy, but it is rarely documented. With a written strategy, it’s easier: for new hires to find; to get feedback; to explain updates; to clarify confusion; and to hold employees accountable. If a strategy is struggling, it either due to a dishonest diagnosis or an impractical approach.

Highlighted Presentations: Streamlining Cloud Development with Deno, Unconference Sessions

Streamlining Cloud Development with Deno was presented by Ryan Dahl, Co-Founder & CEO at Deno and Software Engineer Best Known for Creating Node.js. Dahl kicked off his presentation by stating that the web has become the medium of human information and that JavaScript is inherently tied to the web.

As the creator of Node.js, his goal was to force developers to easily build fast servers by only exposing asynchronous I/O in JavaScript. However, building those fast servers requires more than just asynchronous I/O. Issues that need to be addressed include: managing complex cloud configurations; some sort of geographically replicated state; navigating a plethora of software, workflows and toolchains; and supply chain security. This was the inspiration behind Deno, an open source next-generation JavaScript runtime.

Dahl introduced Deno as: a browser for command-line scripts; a single executable file at 100MB; support for 14 different web standards; and secure by default. Deno offers native support for JavaScript and TypeScript and the language includes a standard library.

Dahl then provided a demo on how to quickly build an asynchronous compression stream application that would open a file, then compress it to a gzip file. Upon executing the application, Deno requested read access and write access to the file to be opened and the gzip file, respectively. Libraries from Node.js can be imported in Deno.

Deno Node Transform (DNT), a Deno-to-npm package build tool that can transpile JavaScript for distribution on npm. Deno tests can also be transpile and executed on Node.js. Dahl provided a demo on how to build an Express server.

Deno Deploy, the “easiest serverless platform,” as Dahl claimed, features: scaling to zero cost; support for npm packages; built-in storage and compute; low global latency in 35 regions; fast cold starts; and powers Netlify Edge functions. Dahl then provided a demo on how to take the aforementioned freshly-built Express server and deploy it.

Deno KV, a datastore anchored by ACID transactions and powered by FoundationDB. Features include: zero configuration; ACID transactions; scaling to zero cost; and built-in to Deno Deploy. Dahl stated that Deno KV doesn’t replace a real database, but it is useful for sharing state.

Unconference Sessions, facilitated by Danny Latimer, Content Product Manager at C4Media, are facilitated, bottom up and self-directing discussions among experts. They are designed as “by the people, for the people.” There were a total of seven unconference sessions spread over the first two days of presentations related to the conference tracks:

  • Languages of Infra
  • Beyond YAML
  • Architectures You’ve Always Wondered About
  • Staff+ Engineering
  • Platform Engineering Done Well
  • JVM Trends; Modern ML
  • Designing for Resilience

A typical unconference session featured a round of introductions followed by attendees writing down topics as candidates for discussion. Afterwards, attendees would then peruse through the submitted list of topics and select the ones that they felt were worthy of a more detailed discussion. Approximately eight topics were selected and areas for each topic were established in the conference room for attendees to participate in the conversation.

Summary

Day Three consisted of an opening keynote address, 20 editorial presentations, five presentations from sponsors and a closing keynote address, Mission, Culture, and Values: Using Them to Guide Your Company Through Good and Challenging Times, delivered by Heather McKelvey, Vice President of Engineering at LinkedIn.

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.


QCon San Francisco 2023 Day 1: Architectures, Data Engineering, Infra Languages, Staff+ Skills

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

Day One of the 17th annual QCon San Francisco conference was held on October 2nd, 2023, at the Hyatt Regency San Francisco in San Francisco, California. This five-day event, consisting of three days of presentations and two days of workshops, is organized by C4Media, a software media company focused on unbiased content and information in the enterprise development community and creators of InfoQ and QCon. It included a keynote address by Suhail Patel and presentations from these four tracks:

  • Architectures You’ve Always Wondered About
    • Hosted by Wes Reisz, Technical Principal at Thoughtworks, Creator/Co-Host of The InfoQ Podcast and QCon San Francisco 2023 Program Committee Chair
    • Offers attendees to learn what it takes to operate modern, high scale systems from the engineers and leaders who build them..
  • Modern Data Engineering & Architectures
    • Hosted by Sid Anand, Chief Architect at Datazoom, Committer/PMC Apache Airflow
    • Offers attendees to learn some fundamental, powerful yet versatile building blocks and their core engineering principles that developers can leverage to build a simple yet efficient and scalable data architecture.
  • Languages of Infra: Beyond YAML
    • Hosted by Justin Cormack, CTO at Docker
    • Offers attendees to explore a variety of tools that move away from YAML with talks both from practitioners and from those who have brought new tools and processes into creation because they have a strong vision beyond the status quo.
  • Staff+ Engineering Skills
    • Hosted by Krys Flores, Staff Engineer at Carta
    • Offers attendees to learn what it takes to be an effective and successful Staff+ Engineer.

There were also two sponsored solutions tracks.

Dio Synodinos, President of C4Media, kicked off the day one activities by welcoming the attendees and discussed: human progress through technology; the InfoQ core values; and highlighted that the speakers at QCon conferences reflect those values.

Wesley Reisz reaffirmed the InfoQ core values, discussed: how the editorial tracks and track hosts are selected; the concept of the unconference sessions that are facilitated, bottom up and self-directing discussions among experts; and highlighted the sponsored tracks.

Pia von Beren, QCon Product Manager and Diversity Lead at C4Media, introduced the new QCon features, namely: Attendee Lightning Talks; the 1:1s; the Women & Allies in Tech Breakfast; and defined the conference breaks where attendees can network as the “Hallway Track.”

The aforementioned track leads for Day One introduced themselves and described the presentations in their respective tracks.

Haley Tucker, Principal Software Engineer for Platform Engineering at Netflix and QCon San Francisco 2023 Program Committee Member, introduced the keynote speaker, Suhail Patel.

Keynote Address: From Mainframes to Microservices – the Journey of Building and Running Software

Suhail Patel, Staff Engineer at Monzo, presented his keynote address entitled, From Mainframes to Microservices – the Journey of Building and Running Software. On his opening slide, which Patel stated was also his conclusion, he asked why the following is true:

Many of our systems are built in the era of commodity computing. Our demands have surpassed the realms of commodity hardware and we’re in a world where only a few big players can satisfy our needs.

After showing a behind-the-scenes view of the required microservices for an application in which a Monzo customer uses their debit card, he provided a retrospective of the platforms and software patterns that made both mainframes and microservices so popular, such as: the oldest software system in continuous use by the IRS; the latest IBM mainframe; and warehouse scale computing, an example of how Amazon implements their Prime Day.

In a more humorous moment, Patel displayed a slide entitled, “Only Murders in the Building,” that contained an October 2015 tweet by Honest Update:

We replaced our monolith with microservices so that every outage could be more like a murder mystery.

Patel referenced The Tail at Scale, published in February 2013, in which software techniques that tolerate latency variability are vital to building responsive large-scale Web services.

Despite the advances in CPUs and networks, “The free lunch is over,” Patel said, referring to a March 2005 technical article by Herb Sutter, software architect at Microsoft and chair of the ISO C++ Standards Committee, that discussed the slowing down of Moore’s Law and how the drastic increases in CPU clock speed were coming to an end. Sutter maintained:

No matter how fast processors get, software consistently finds new ways to eat up the extra speed. Make a CPU ten times as fast, and software will usually find ten times as much to do (or, in some cases, will feel at liberty to do it ten times less efficiently).

Patel discussed the massive reduction in cost and complexity to get large scale software running on the web and how that trend might not continue forever, especially in the era of specialized offerings like custom datastores that cannot be individually hosted and edge computing.

Patel then introduced solutions to help developers in this area. These include: io_uring, an asynchronous interface to the Linux kernel that can potentially benefit networking; the emergence of programming languages, such as Java, “old language, new tricks,” as Patel characterized, due to its recent JDK 21 release; Rust and Zig; and simdjson, a library that uses commonly available SIMD instructions and micro-parallel algorithms to parse JSON for more efficient parsing of JSON.

Patel then showed the CNCF Cloud Native Interactive Landscape, to highlight the number of technologies that are available for cloud-native applications development.

The foundations in programming languages, software architecture, virtual machines and containers and even stateful systems have influenced how developers build and run software at scale today.

Highlighted Presentations: Pulumi, Pipelined Relational Query Language, Apache Hudi, Kubernetes without YAML

Pulumi Adventures: How Python Empowered My Infrastructure Beyond YAML was presented by Adora Nwodo, Founder at NexaScale, Senior Software Engineer and Author of “Cloud Engineering for Beginners.” Nwodo was once a full-stack developer until she discovered Pulumi, an open-source Infrastructure as Code platform, and how it interacts with languages such as Python to offer a familiar landscape for engineers who are interested in Infrastructure as Code (IaC).

Nwodo maintained that manual configurations “don’t cut it anymore” because: deployments are slower; developers rely on documentation; there is a larger risk of errors; and a manual effort is required for rollbacks. Managing resources has become more complex as cloud innovation has rapidly grown over the past few years. As a result, Nwodo switched to Pulumi as an alternative to ARM templates. This greatly impacted her workflow and she was able to more easily manage infrastructure while writing code.

IaC can solve these problems because: configurations are specified in code; infrastructure deployments can be automated; developers can test, version and rollback, if necessary; and transferable skills from programming can be utilized.

Using the pulumi command, Nwodo demonstrated how to create, build and execute a Pulumi application. Developers can reference a Pulumi example on GitHub.

PRQL: A Simple, Powerful, Pipelined SQL Replacement was presented by Aljaž Mur Eržen, Compiler Developer at EdgeDB and PRQL Maintainer. Before his formal introduction to Pipelined Relational Query Language (PRQL), Eržen presented a brief history of SQL that included acknowledgements to: Edgar F. Codd and his 1970 paper, “A Relational Model of Data for Large Shared Data Banks,” which described a new way of structuring data using ideas from set theory; and Donald D. Chamberlin and Raymond F. Boyce who developed SEQUEL, later renamed SQL for Structured Query Language.

Eržen then discussed the flaws of SQL demonstrating examples of how, despite the human friendly syntax, the order of providing traditional SQL statements isn’t all that natural. Also, while providing an alias in SQL statements, such as SELECT title AS title_alias, name resolution can be confusing because of the rules on when to reference the table name or alias name.

In his quest to provide an alternative to SQL, Eržen wanted to design a new language for relations that are more natural as demonstrated with a simple PRQL example. Requirements for this new design were: read from top to bottom; easy exploration; lazy evaluation; and more easily extract variables and functions. His data model for this new design included: basic data types (int, bool, etc.); tuples as described by tuple calculus; arrays; declarations; functions; transforms; and grouping. A relation can be defined as an array of tuples and transforms can be defined as a function on those relations. PRQL provides the set of 12 transforms that include names familiar to SQL developers such as: std.from, std.select, std.aggregate, std.join and std.sort.

Eržen mentioned other organizations that have provided an alternative to SQL, namely: EdgeDB with their motto that “we can do better than SQL;” LINQ, a pipelined language for the .NET framework; FunSQL.jl, a Julia library for compositional construction of SQL queries; Malloy, a modern open-source language for analyzing, transforming, and modeling data; and Ecto SQL, an Object-Relational Mapping (ORM) library for Elixir.

Eržen then introduced PRQL, a simple pipelined language that follows the aforementioned design principles, initially released in March 2022. It is fully open-sourced, adheres to the Apache License 2.0, and, as Eržen emphasized, will never be monetized.

The prqlc command is the PRQL compiler that targets SQL databases PostgreSQL, SQLite, DuckDB, MySQL and ClickHouse. Its bindings support C, Python, JS, Java, .NET and PHP. The compilation flow can be described as PRQL → Pipeline Language → Relational Query → SQL. PRQL is written in Rust and extensions for VScode are available. Developers can learn more about PRQL at this GitHub repository.

Incremental Data Processing with Apache Hudi was presented by Saketh Chintapalli, Software Engineer at Uber, and Bhavani Sudha Saktheeswaran, Distributed Systems Engineer at Onehouse and Apache Hudi PMC. Saktheeswaran kicked off the presentation with a discussion of the evolution of data infrastructure by comparing on-premise data warehouses (traditional business integration/reporting) and data lakes (search/social). In general, relative to data warehouses, data lakes are open-source and cheaper to scale. She then provided a graphical representation of a typical Lakehouse architecture.

Saktheeswaran then introduced Apache Hudi, a transactional data lake platform, and how THE platform interacts with data streams, databases, cloud storage, meta stores and various analytics tools.

Chintapalli introduced incremental data processing that combines the two modern processing models: batch and stream data processing. After comparing the two data processing models, he concluded that batch processes are slow and inefficient due to: slow batch ingestion; a rewrite of entire tables with overlaps; no smart way to recompute Extract, Transform and Load (ETL); and that late-arriving data can be a nightmare.

Chintapalli then provided two case studies. Case 1, Driver/Courier Earnings, in which he demonstrated the challenges with late-arriving data (relative to a 90-day window) and compared a traditional ETL load strategy with an improved incremental ETL load strategy. Case 2, Menu Updates for Uber Eats Merchants, described the challenges with modeled datasets for Uber Eats and the frequency of daily menu data changes.

Saktheeswaran demonstrated how Hudi unlocks incremental data processing for fast-changing data by introducing its various features along with the Hudi Table Types, Hudi Query Types and how it optimizes for large scale updates.

Hudi 0.14.0 is expected to be released very soon and plans for Hudi 1.0.0 will support non-blocking concurrency control. The Hudi Community consists of: five cloud providers with Hudi pre-installed; a diverse set of PMC and committers; and a rich community of participants.

Kubernetes without YAML presented by David Flanagan, Kubernetes Whisperer. Flanagan kicked off his presentation by engaging the audience with a Slido poll containing three questions:

  • What resources do you need to deploy an application to Kubernetes in production?
  • What tools have you used to deploy to Kubernetes?
  • Are you happy with the developer experience of deploying to Kubernetes?

After discussing the results of the poll, Flanangan demonstrated some of the challenges of deploying an application to Kubernetes by playing a small portion of a video from his Klustered Teams series with Red Hat and Talos Systems in which the participants encountered a permission denied error upon executing the kubectl get nodes command and spent a significant amount of time trying to fix it.

Flanagan described the number of resources for a typical Kubernetes deployment, namely: a service; a configuration map; a secret; HPA; PDB; a pod monitor; and network policy, all of which require roughly 120 lines of YAML code. And this didn’t include a number of other resources that could be utilized.

Flanagan then listed the attributes and associated tools that developers should require, namely: the Don’t Repeat Yourself (DRY) Principle; being shareable; being composable; documentation; and being testable.

Tools in the DRY attribute included: YAML Anchors to handle repeated sections in a YAML file; and Kustomize, a template-free native configuration management tool.

Tools in the Shareable attribute included: Helm, a package manager for Kubernetes. Flanagan maintained that the main problem with Helm is the composition of the values.yaml file, but despite this issue, Helm can still be useful.

Tools in the Composable attribute included the aforementioned Kustomize which is essentially a copy and paste.

Tools in the Testable attribute included: Rego, a tool designed to allow asynchronous workloads to be deployed over Kubernetes with minimal effort; and Common Expression Language (CEL), a tool offered by Google to implement common semantics for expression evaluation for improved interoperability among different applications. Flanagan maintained that it can be difficult to work with Rego.

Flanagan then stated that despite these attributes, developers are missing the Developer Experience is missing from these attributes. In 2020, he was quoted as saying:

A good developer experience is one where a developer can be successful with intuitive decisions, rather than informed decisions.

There are a number of developer experience tools available, namely, cdk8s; Pulumi; CUE/Timoni; Terraform; and Go. Pulumi is a good tool, Flanagan said, but he doesn’t recommend it for Kubernetes because it is based on the Terraform model. As recent as five years ago, most of the developers were primarily using Go, but that has evolved to languages such as Java, Rust and Zig.

Flanagan focused on cdk8s, an open-source software development framework for defining Kubernetes applications and reusable abstractions that supports the familiar programming languages Go, JavaScript, TypeScript and Python. cdk8s applications can synthesize into standard Kubernetes manifests which can be applied to any Kubernetes cluster.

He then provided a live coding demo using TypeScript to create a deployment along with options for continuous improvement within the source code.

Flanagan concluded his presentation with best practices that included: build internal pattern libraries, i.e., stop reinventing the wheel; share publicly with other developers; policies and tests; and hook into the existing tools as necessary.

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: New JEP Candidates, Spring Cloud, GlassFish, Helidon, Open Liberty, Apache Camel

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for September 25th, 2023 features news from OpenJDK, JDK 22, Eclipse GlassFish 7.0.9, Build 21-jextract+1-2, Spring Cloud 2023.0.0-M2, Helidon 4.0.0-RC1, Open Liberty 23.0.0.10-beta, Apache Camel 4.0.1 and 3.21.1, JHipster Lite 0.43.0, JDKMon 17.0.77 and 17.0.75, JobRunr 6.3.2, Yupiik Fusion 1.0.8 and Gradle 8.4.0-RC3.

OpenJDK

JEP 457, Class-File API (Preview), has been promoted from its Draft 8280389 to Candidate status. This JEP proposes to provide an API for parsing, generating, and transforming Java class files. This 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 456, Unnamed Variables and Patterns, has been promoted from its Draft 8311828 to Candidate status to finalize this feature from its previous round of preview: JEP 443, Unnamed Patterns and Variables (Preview), delivered in JDK 21. This JEP proposes to “enhance the language with unnamed patterns, which match a record component without stating the component’s name or type, and unnamed variables, which can be initialized but not used.” Both of these are denoted by the underscore character as in r instanceof _(int x, int y) and r instanceof _.

JEP 455, Primitive types in Patterns, instanceof, and switch (Preview), has been promoted from its Draft 8288476 to Candidate status. This JEP 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.”

Jim Laskey, Software Development Director at Oracle Corporation, has submitted JEP Draft 8314219, String Templates, to finalize this feature from its previous round of preview, JEP 430, String Templates (Preview), delivered in JDK 21. This JEP enhances 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.

JDK 22

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

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

Eclipse GlassFish

Eclipse GlassFish 7.0.9, the ninth maintenance release, features component updates and notable fixes such as: an IllegalArgumentException attempting to deploy an application with an EJB remote interfaces to Embedded GlassFish; the contextInitialized() method defined in the ServletContextListener interface is invoked multiple times when deployed; and the stop-local-instance command line parameter doesn’t stop the instance of the server. More details on this release may be found in the release notes.

Ondro Mihályi, Director at OmniFish, has been working on virtual thread support for GlassFish and has provided this working example.

Project Jextract

Build 21-jextract+1-2 of the Project Jextract early-access builds was made available to the Java community and is based on JDK 21. With this build, developers running on MacOS Catalina or higher will be required to remove the quarantine attribute from the bits before using the jextract binaries.

With most of the features under the Project Panama early-access builds having moved over to incubating JEPs, jextract, a tool that mechanically generates Java bindings from a native library headers, remains the only feature and will therefore be maintained in its own project.

Spring Framework

The second milestone release of Spring Cloud 2023.0.0, codenamed Leyton, ships with: a migration of all Spring Cloud project documentation to Antora, a multi-repository documentation site generator; and milestone upgrades to sub-projects such as Spring Cloud Commons 4.1.0-M2, Spring Cloud Starter Build 2023.0.0-M2 and Spring Cloud Kubernetes 3.1.0-M2. Further details on this release may be found in the release notes.

Helidon

The first release candidate of Helidon 4.0.0 delivers bug fixes, dependency upgrades and notable changes such as: a major refactoring and stabilization of APIs; support for HTTP/2; and the WebServer and WebClient components having been declared as feature-complete. More details on this release may be found in the release notes.

Open Liberty

IBM has released version 23.0.0.10-beta of Open Liberty featuring: support for JDK 21 and the upcoming release of MicroProfile 6.1; improved startup times of of Spring Boot applications using Spring Boot 3.0 and InstantOn with Coordinated Restore at Checkpoint (CRaC); a beta 3 implementation of the Jakarta Data specification; and automatic generation and rotation of Lightweight Third Party Authentication (LTPA) keys without disruption to the application’s user experience.

Apache Software Foundation

Versions 4.0.1 and 3.21.1 of Apache Camel both provide notable improvements such as: provide a tracing strategy to trace each processor for OpenTelemetry; environment variables with the name ‘secret’ are now masked in logs; and prevent the usage of proxy protocol in producer endpoint. Further details on these releases may be found in the release notes for version 4.0.1 and version 3.21.1.

JHipster

Version 0.43.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and new features/enhancements such as: Split the original LogsSpy class into LogsSpy and LogsSpyExtension classes to follow single-responsibility principle and avoid exposing JUnit5 related methods; and replace the use of the Sinon JavaScript framework with Vitest. More details on this release may be found in the release notes.

JDKMon

Versions 17.0.77 and 17.0.75 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, these new versions provide: updated documentation for the latest updates; and a link to the GitHub releases added to the About dialog box.

JobRunr

Version 6.3.2 of JobRunr, a library for background processing in Java that is distributed and backed by persistent storage, has been released featuring bug fixes, dependency upgrades and a new feature that adds support for GraalVM Native executable in Quarkus. Further details on this release may be found in the release notes.

Yupiik

The release of Yupiik Fusion 1.0.8 provides new features such as: ensure span tags are only strings since it would otherwise require a mapping step; support for enum types; improved template handling; and new classes, RateLimiter and RateLimitedClient, to support limiting rates. More details on this release may be found in the release notes.

Gradle

The third release candidate of Gradle 8.4 delivers: initial support for JDK 21 only to compile, test, and run Gradle projects since Kotlin does not yet support JDK 21; improved compilation on Windows OS; a simplified way to create role-focused instances of the Configuration interface using the ConfigurationContainer interface; and improved support for the Kotlin DSL. 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: JDK 21, GraalVM for JDK 21, Apache Pinot 1.0, Eclipse Epicyro 3.0

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for September 18th, 2023 features news from OpenJDK, JDK 22, JDK 21, GraalVM, Corretto, Liberica, Epicyro 3.0, Pinot 1.0, and releases for: Spring Boot; Spring Integration; Spring Batch; Spring Cloud Dataflow; Spring Security; Spring GraphQL; Spring Authorization Server; Spring Apache Pulsar; Spring Modulith; Quarkus; Open Liberty; Micronaut; Hibernate; OpenXava; Gradle.

OpenJDK

Daniel Smith, Programming Language Designer at Oracle, has submitted JEP 8316779, Value Object Storage Enhancements (Preview). Under the auspices of Project Valhalla, this JEP introduces null-restricted storage of value objects in fields and array components. “These variables are initialized to an initial instance of the class and reject attempts to write a null value. They can be optimized with compact, flattened object encodings.”

JDK 21

Oracle has released version 21 of the Java programming language and virtual machine, which ships with a final feature set of 15 JEPs. More details may be found in this InfoQ news story.

JDK 22

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

With no objections to the proposed JDK 22 release schedule, Mark Reinhold, chief architect, Java Platform Group at Oracle, has declared the following release schedule as final:

  • 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

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

GraalVM

In conjunction with the release of JDK 21, GraalVM for JDK 21 has also been released by Oracle Labs. new features include: full support for JDK 21; performance enhancements with Profile-Guided Optimizations; a new application levels policy for faster compilation time; and improved developer experience with a new CLI options, --parallelism and --color, for specifying the number of threads and output color during builds, respectively. More details on this release may be found in the release notes. InfoQ will follow up with a more detailed news story.

On the road to version 1.0, Oracle Labs has released version 0.9.27 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides bug fixes and improvements for GraalVM for JDK 21. Further details on this release may be found in the changelog.

Amazon Corretto

Amazon has released Amazon Corretto 21, their downstream distribution of OpenJDK 21, which is available on Linux, Windows, and macOS. Developers may download this latest version from this site.

BellSoft Liberica JDK

Similarly, BellSoft has released Liberica JDK 21, their downstream distribution of OpenJDK 21. Developers may download this latest version from this site.

Spring Framework

The third milestone release of Spring Boot 3.2.0 delivers bug fixes, dependency upgrades and new feature such as: add the ConnectionDetails interface and @ServiceConnection annotation to the configuration in Spring for Apache Pulsar; provide an instance of the RestClientBuilderConfigurer class to apply Spring Boot defaults to a custom RestClient.Builder interface; and remove the use of the deprecated ServerHttpObservationFilter class for WebFlux instrumentation. More details on this release may be found in the release notes.

Similarly, versions 3.1.4, 3.0.11 and 2.7.16 of Spring Boot provide improvements in documentation, dependency upgrades, a TWENTY_ONE enum constant to the JavaVersion enum class, and notable bug fixes such as: the Saml2RelyingPartyAutoConfiguration class ignores the value set in the sign-request property when using the metadata-url query; a leaking file descriptor and socket within DomainSocket class; and an invalid Accept request HTTP header produces an HTTP 500 Internal Server Error when using the WelcomePageHandlerMapping class. Further details on these releases may be found in the release notes for version 3.1.4, version 3.0.11 and version 2.7.16.

The third milestone release of Spring Integration 6.2.0 ships with dependency upgrades and notable changes such as: a refactor of the KafkaMessageDrivenChannelAdapter class for future maintenance to avoid code duplication; new overloaded executeLocked() methods added to the LockRegistry interface to follow best practice and well-known patterns with the JdbcTemplate, RestTemplate and JmsTemplate classes; and support for custom instances of the DefaultSftpSessionFactory class. More details on this release may be found in the release notes.

The third milestone release of Spring Batch 5.1.0 provides bug fixes, improvements in documentation and new features such as: auto-configure the JobRegistryBeanPostProcessor class with @EnableBatchProcessing annotation and the DefaultBatchConfiguration class for improved job registration with the JobRegistry interface; the ability to specify a database type via a new parameter in the @EnableBatchProcessing annotation; and the ability to provide a custom JobKeyGenerator interface in the JdbcJobInstanceDao class. Further details on this release may be found in the release notes.

The release of Spring Cloud Dataflow 2.11.0 delivers bug fixes, dependency upgrades and support for: Spring Boot 3.x-based stream applications; Spring Cloud Task 3.x-based task applications; and Spring Batch 5.x-based batch applications. There was also an upgrade to the Kubernetes batch/v1 cron job so that developers can now use Kubernetes 1.25.0 and above. More details on this release may be found in the release notes.

Versions 6.2.0-M1, 6.1.4, 6.0.7 and 5.8.7 of Spring Security have been released featuring fixes for CVE-2023-34042, Incorrect Permission Assignment for spring-security.xsd, a vulnerability in which the spring-security.xsd file, found inside the spring-security-config JAR archive, is world writable and could result in an exploit. Developers are encouraged to upgrades to these releases. Further details on these releases may be found in the release notes for version 6.2.0-M1, version 6.1.4, version 6.0.7 and version 5.8.7.

Versions 1.2.3, 1.1.6 and 1.0.5 of Spring for GraphQL have been released deliver bug fixes, improvements in documentation, dependency upgrades and new features such as: the ability to access object type extensions (to complement object types) using the ConnectionTypeDefinitionConfigurer class; raise a Spring Security AuthenticationCredentialsNotFoundException to require authentication when an instance of the Java Principal interface is not present and not declared as Optional; and enhancements to the GraphQL request body checks to prevent an HTTP 500 Internal Server Error. These releases may be consumed with Spring Boot versions 3.1.4, 3.0.11 and 2.7.16, respectively. More details on these releases may be found in the release notes for version 1.2.3, version 1.1.6 and version 1.0.5.

The first milestone release of Spring Authorization Server 1.2.0 ships with bug fixes, dependency upgrades and new features such as: the ability to inject custom metadata to improve client registration; new code challenge methods for OIDC provider configuration response; and improvements in logging with the CodeVerifierAuthenticator class. Further details on this release may be found in the release notes.

The second milestone release of Spring for Apache Pulsar 1.0.0 features notable changes such as: the ability to add multiple customizers to the PulsarAdministration, DefaultPulsarConsumerFactory, DefaultPulsarReaderFactory and DefaultReactivePulsarSenderFactory classes; and move the cache provider modules source files from the default spring.pulsar.core package to a package that is specific to the module name to avoid any confusion with the Java module system. More details on this release may be found in the release notes.

Versions 1.1.0-M1 and 1.0.1 of Spring Modulith have been released provide bug fixes, improvements in documentation, dependency upgrades and new features such as: support to externalize domain events into messaging middleware (Kafka, AMQP, JMS, etc.) by registering an @ApplicationEventListener; a new Neo4j event publication repository; and new interfaces – CompletedEventPublications, IncompleteEventPublications and EventPublicationRepository – for improved handling of completed and incomplete event publications. Further details on these releases may be found in the release notes for version 1.1.0-M1 and version 1.0.1.

Quarkus

The release of Quarkus 3.4.1 features support for Redis 7.2 and changes in support for the Flyway extension that include: the ability to disable the automatic setup of the Flyway extension by setting the quarkus.flyway.enabled property to false; and declare a datasource as inactive for a specific datasource and named datasource by setting the quarkus.flyway.active and quarkus.flyway..active properties, respectively, to false. More details on this release may be found in the changelog.

Open Liberty

IBM has released version 23.0.0.9 of Open Liberty that provides support for: Spring Boot 3.0 requiring Jakarta EE 10, Spring Security 6.x, and a new server template named springBoot3; support for Private Key JWT authentication with OpenID Connect token endpoints; and the ability to set the LTPA or JWT cookie path to the application context root to allow for different LTPA and JWT tokens for different applications.

Micronaut

The Micronaut Foundation has released version 4.1.2 of the Micronaut featuring Micronaut Core 4.1.6 and updates to the Micronaut Data module. Further details on this release may be found in the release notes.

Hibernate

Versions 6.3.1.Final and 6.2.9.Final of Hibernate ORM have been released that ship with bug fixes and improvements in query methods and finder methods. More details on these releases may be found in the release notes for version 6.3.1.Final and version 6.2.9.Final.

Eclipse Foundation

Shortly after it was introduced by OmniFishEE, Eclipse Epicyro 3.0 has formally been released as a standalone implementation of the Jakarta Authentication 3.0 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.

Apache Software Foundation

The release of Apache Pinot 1.0.0, a realtime distributed OLAP datastore, delivers bug fixes, enhancements and new features such as: initial support for Query runtime for Window Functions using ORDER BY clause within the OVER() clause; an early termination in the execution of the SortOperator class if the LIMIT clause is used; and support for partition-based leaf stage processing. Further details on this release may be found in the release notes. InfoQ will follow up with a more detailed news story.

OpenXava

The release of OpenXava 7.1.6 ships with notable fixes such as: improvements in the interactions between the @ElementCollection and @DescriptionsList annotations; grouping after filtering or sorting a list fails with the @Tab annotation if it contains a baseCondition parameter and an instance of the IFilter interface; and an instance of the IForwardAction interface does not work if the application is behind a proxy. More details on this release may be found in the release notes.

Gradle

The first release candidate of Gradle 8.4 delivers: initial support for JDK 21 only to compile, test, and run Gradle projects since Kotlin does not yet support JDK 21; improved compilation on Windows OS; a simplified way to create role-focused instances of the Configuration interface using the ConfigurationContainer interface; and improved support for the Kotlin DSL. 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: 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.