June 25, 2024


Epicurean computer & technology

JDK 19: The new features in Java 19

5 min read


Java Enhancement Package 19, due this September, has just had a seventh feature proposed for it: structured concurrency, to simplify multithreaded programming. Structured concurrency joins 6 prior characteristics together with document styles, a preview of a overseas purpose and memory API, and assist for the open source Linux/RISC-V instruction established architecture (ISA).

JDK 19, or simply just Java 19, possibly could host a extensive number of functions, ranging from common generics to price objects, according to designs underway for maximizing Java. JDK 19 would adhere to JDK 18, which arrived March 22. Typical Java is on a 6-month release cadence.

OpenJDK’s builders have released an formal release plan for JDK 19, which has it arriving September 20 as a creation launch, preceded by rampdown phases June 9 and July 21, and launch candidates to be printed August 11 and August 25.

Early accessibility builds of JDK 19 can be accessed from jdk.java.web/19. Proposed JDK 19 options consist of:

  • Structured concurrency, in an incubator section, is supposed to simplify multithreaded programming by means of a structured concurrency library. This concurrency treats many jobs working in different threads as a solitary device of operate, to streamline error handling and cancellation. Reliability and observability are improved.
  • A preview of document patterns, to deconstruct record values. Report designs and style patterns can be nested to allow a declarative, powerful, and composable form of knowledge navigation and processing. Plans of the proposal contain extending sample matching to specific far more refined, composable knowledge queries although not transforming the syntax or semantics of type designs. This proposal builds on sample matching for instanceof, sent in JDK 16  in March 2021. Long run strategies may possibly contact for file designs to be extended with capabilities these kinds of as array designs and vararg designs. Record styles is part of Project Amber, an exertion to discover and incubate lesser, productivity-oriented Java functions.
  • A preview of a international perform and memory API, which would introduce an API by which Java courses can interoperate with code and knowledge outside the house the Java runtime. By efficiently invoking foreign functions (i.e., code outdoors the Java runtime) and safely and securely accessing overseas memory (i.e., memory not managed by the JVM) the API enables Java systems to connect with native libraries and course of action indigenous details with out the threat and brittleness of the Java Indigenous Interface (JNI). The overseas purpose and memory API combines two before incubating APIs: the international memory entry API and the overseas linker API. The foreign purpose and memory API was formerly incubated in JDK 17 and reincubated in JDK 18. The proposal’s objectives consist of simplicity of use, performance, generality, and basic safety.
  • A preview of virtual threads, which are light-weight threads that substantially minimize the work of crafting, maintaining, and observing substantial-throughput, concurrent programs. Ambitions consist of enabling server applications composed in the basic thread-per-ask for style to scale with around-optimal components utilization, enabling existing code that takes advantage of the java.lang Thread API to adopt virtual threads with nominal improve, and allow troubleshooting, debugging, and profiling of digital threads with existing JDK equipment. It is not a aim of this proposal to modify the essential concurrency design in Java or give a new info parallelism assemble in either the Java language or Java libraries. Nor is it a objective to eliminate the classic implementation of threads or to silently migrate current applications to use digital threads.
  • A third preview of pattern matching for switch expressions and statements, extending pattern matching to swap, to allow for an expression to be tested in opposition to a range of designs, every single with a specific motion, so advanced facts-oriented queries can be expressed concisely and safely. This capacity formerly was previewed in JDK 17 and JDK 18. The 3rd preview would add refinements including the replacement of guarded styles with when clauses in switch blocks. Also, the runtime semantics of a sample swap when the price of the selector expression is null are more intently aligned with legacy switch semantics. The plan’s aims contain increasing the expressiveness and applicability of switch expressions and statements by letting designs to surface in scenario labels. Other targets contain making it possible for developers to loosen up the historic null-hostility of switch when wanted, growing the basic safety of change statements and making certain that existing switch expressions and statements go on to compile with no changes and execute with identical semantics.
  • A fourth incubation of a vector API that would convey vector computations that reliably compile at runtime to optimum vector directions on supported CPU architectures, thus obtaining general performance exceptional to equal scalar computations. Developers making use of the API obtain a way to compose intricate vector algorithms in Java, making use of the HotSpot auto-vectorizer but with a consumer design that can make vectorizations much more predictable and robust. The vector API earlier was incubated into JDK 16, JDK 17, and JDK 19.
    Enhancements to the API proposed for JDK 19 include enhancements to load and retail store vectors to and from MemorySegments, as described by the International Perform and Memory API preview. JDK 19 would also increase two cross-lane vector functions, compress and expand, with each other with a complementary vector mask compress operation. The compress vector operation maps lanes of a supply vector, selected by a mask, to a place vector in lane buy, whilst the grow procedure does the inverse. The compress operation is helpful in filtering question final results.
    In yet another addition to the vector API, bitwise integral lanewise operations would be expanded, like functions these kinds of counting the selection of 1 bits, reversing the order of bits, and compressing and increasing bits. Goals of the API incorporated remaining obvious and concise, platform-agnostic, getting dependable runtime and compilation general performance on x64 and AArch64 architectures, and enabling “graceful” degradation, for cases in which a vector computation can’t be totally expressed at runtime as a sequence of vector operations.
  • With the Linux/RISC-V port, Java would achieve guidance for a components instruction established that is already supported by a extensive selection of language toolchains. RISC-V in fact is a family members of similar ISAs. The Linux/RISC-V port would only support the RV64GV configuration of RISC-V, a general intent 64-bit ISA that involves vector guidelines. The builders of Java may take into account other RISC-V configurations in the potential.

The port would guidance the pursuing HotSpot VM choices: the template interpreter, C1 (client) JIT compiler, C2 (server) JIT compiler, and all latest mainline garbage collectors together with ZGC and Shenandoah. The precise porting is almost comprehensive the target of the JDK Enhancement Proposal (JEP) is integration of the port into the JDK mainline repository.

Like JDK 18, JDK 19 is due to be a shorter-term release, with only six months of best-amount, Leading support.

The preceding launch, JDK 17, was a Lengthy Time period Help (LTS) release, with a number of yrs of support. It arrived September 14, 2021.

Copyright © 2022 IDG Communications, Inc.


Supply url