JDK 19: The new features in Java 19

ByPhyllis R. Edwards

Jun 2, 2022 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


Java Growth Package 19, due this September, has just had a seventh characteristic proposed for it: structured concurrency, to simplify multithreaded programming. Structured concurrency joins six former attributes which include report designs, a preview of a overseas purpose and memory API, and guidance for the open resource Linux/RISC-V instruction set architecture (ISA).

JDK 19, or simply just Java 19, perhaps could host a broad range of features, ranging from universal generics to benefit objects, according to strategies underway for enhancing Java. JDK 19 would stick to JDK 18, which arrived March 22. Typical Java is on a 6-thirty day period release cadence.

OpenJDK’s developers have posted an official release timetable for JDK 19, which has it arriving September 20 as a output release, preceded by rampdown phases June 9 and July 21, and release candidates to be revealed August 11 and August 25.

Early entry builds of JDK 19 can be accessed from jdk.java.web/19. Proposed JDK 19 characteristics contain:

  • Structured concurrency, in an incubator period, is intended to simplify multithreaded programming via a structured concurrency library. This concurrency treats several tasks working in various threads as a single device of get the job done, to streamline error dealing with and cancellation. Reliability and observability are improved.
  • A preview of document designs, to deconstruct file values. File patterns and style designs can be nested to allow a declarative, potent, and composable variety of information navigation and processing. Plans of the proposal contain extending sample matching to express much more subtle, composable details queries when not switching the syntax or semantics of type designs. This proposal builds on pattern matching for instanceof, delivered in JDK 16  in March 2021. Future strategies may perhaps simply call for file styles to be extended with abilities such as array patterns and vararg patterns. File patterns is section of Undertaking Amber, an exertion to examine and incubate scaled-down, efficiency-oriented Java features.
  • A preview of a foreign purpose and memory API, which would introduce an API by which Java courses can interoperate with code and info exterior the Java runtime. By proficiently invoking foreign features (i.e., code outside the house the Java runtime) and securely accessing overseas memory (i.e., memory not managed by the JVM) the API allows Java applications to contact indigenous libraries and course of action indigenous facts without the danger and brittleness of the Java Native Interface (JNI). The foreign functionality and memory API brings together two before incubating APIs: the overseas memory obtain API and the international linker API. The foreign purpose and memory API was previously incubated in JDK 17 and reincubated in JDK 18. The proposal’s aims contain ease of use, efficiency, generality, and protection.
  • A preview of virtual threads, which are light-weight threads that significantly lessen the energy of producing, preserving, and observing large-throughput, concurrent apps. Plans include things like enabling server apps published in the very simple thread-for every-request style to scale with around-ideal hardware utilization, enabling present code that works by using the java.lang Thread API to adopt virtual threads with nominal alter, and help troubleshooting, debugging, and profiling of virtual threads with current JDK tools. It is not a goal of this proposal to alter the basic concurrency model in Java or present a new info parallelism construct in both the Java language or Java libraries. Nor is it a objective to take out the classic implementation of threads or to silently migrate existing apps to use virtual threads.
  • A third preview of pattern matching for change expressions and statements, extending sample matching to swap, to let an expression to be analyzed versus a variety of patterns, just about every with a specific motion, so intricate details-oriented queries can be expressed concisely and safely. This capability earlier was previewed in JDK 17 and JDK 18. The third preview would insert refinements such as the alternative of guarded designs with when clauses in switch blocks. Also, the runtime semantics of a sample switch when the worth of the selector expression is null are extra intently aligned with legacy switch semantics. The plan’s goals consist of expanding the expressiveness and applicability of switch expressions and statements by making it possible for styles to look in scenario labels. Other plans involve permitting builders to rest the historic null-hostility of swap when desired, escalating the security of switch statements and ensuring that existing swap expressions and statements proceed to compile with no variations and execute with identical semantics.
  • A fourth incubation of a vector API that would express vector computations that reliably compile at runtime to ideal vector guidance on supported CPU architectures, so reaching overall performance superior to equal scalar computations. Builders employing the API get a way to write complex vector algorithms in Java, employing the HotSpot vehicle-vectorizer but with a user product that would make vectorizations far more predictable and strong. The vector API beforehand was incubated into JDK 16, JDK 17, and JDK 19.
    Improvements to the API proposed for JDK 19 consist of enhancements to load and keep vectors to and from MemorySegments, as outlined by the International Purpose and Memory API preview. JDK 19 would also add two cross-lane vector functions, compress and broaden, with each other with a complementary vector mask compress operation. The compress vector operation maps lanes of a resource vector, chosen by a mask, to a place vector in lane buy, even though the increase operation does the inverse. The compress operation is useful in filtering query effects.
    In yet another addition to the vector API, bitwise integral lanewise functions would be expanded, such as functions these types of counting the variety of one bits, reversing the buy of bits, and compressing and expanding bits. Aims of the API incorporated remaining apparent and concise, platform-agnostic, acquiring reliable runtime and compilation general performance on x64 and AArch64 architectures, and enabling “sleek” degradation, for conditions in which a vector computation simply cannot be completely expressed at runtime as a sequence of vector functions.
  • With the Linux/RISC-V port, Java would achieve guidance for a components instruction established that is presently supported by a wide range of language toolchains. RISC-V really is a spouse and children of related ISAs. The Linux/RISC-V port would only assist the RV64GV configuration of RISC-V, a normal function 64-bit ISA that contains vector guidance. The developers of Java may well look at other RISC-V configurations in the foreseeable future.

The port would support the adhering to HotSpot VM choices: the template interpreter, C1 (consumer) JIT compiler, C2 (server) JIT compiler, and all current mainline garbage collectors which includes ZGC and Shenandoah. The precise porting is virtually complete the aim of the JDK Improvement Proposal (JEP) is integration of the port into the JDK mainline repository.

Like JDK 18, JDK 19 is owing to be a limited-expression launch, with only 6 months of leading-amount, Premier assist.

The previous launch, JDK 17, was a Long Time period Support (LTS) release, with many yrs of assist. It arrived September 14, 2021.

Copyright © 2022 IDG Communications, Inc.


Supply url