November 29, 2023


Step Into The Technology

JDK 19: The new features in Java 19

5 min read


Java Advancement Kit 19, owing this September, is now attribute-total, acquiring just achieved an preliminary rampdown period. Seven options goal the launch such as structured concurrency, report styles, a preview of a overseas operate and memory API, and help for the open supply Linux/RISC-V instruction established architecture (ISA).

With this newest milestone in the launch procedure for typical Java, other planned abilities such as common generics and price objects will have to hold out for a afterwards version of the platform. JDK 19 follows the March 22 arrival of JDK 18. Common Java is on a six-thirty day period launch cadence.

JDK 19 is slated to be formally launched for output use on September 20, preceded by a second rampdown period commencing July 21, and release candidates to be revealed August 11 and August 25. Early obtain builds of JDK 19 can be accessed from The JDK 19 options incorporate:

  • Structured concurrency, in an incubator section, is meant to simplify multithreaded programming through a structured concurrency library. This concurrency treats various jobs running in diverse threads as a single device of function, to streamline error managing and cancellation. Dependability and observability are enhanced.
  • A preview of document styles, to deconstruct file values. Record patterns and kind styles can be nested to enable a declarative, powerful, and composable variety of knowledge navigation and processing. Ambitions of the proposal consist of extending sample matching to convey a lot more complex, composable details queries whilst not transforming the syntax or semantics of sort patterns. This proposal builds on sample matching for instanceof, delivered in JDK 16  in March 2021. Long term strategies may perhaps phone for record patterns to be prolonged with capabilities these kinds of as array patterns and vararg styles. History patterns is component of Project Amber, an effort to check out and incubate scaled-down, productiveness-oriented Java functions.
  • A preview of a international operate and memory API, which would introduce an API by which Java programs can interoperate with code and information outside the house the Java runtime. By effectively invoking overseas functions (i.e., code outdoors the Java runtime) and safely and securely accessing foreign memory (i.e., memory not managed by the JVM) the API enables Java packages to simply call native libraries and process native facts without the risk and brittleness of the Java Indigenous Interface (JNI). The foreign perform and memory API combines two earlier incubating APIs: the foreign memory entry API and the international linker API. The foreign purpose and memory API was earlier incubated in JDK 17 and reincubated in JDK 18. The proposal’s plans consist of relieve of use, performance, generality, and security.
  • A preview of digital threads, which are lightweight threads that dramatically minimize the exertion of crafting, keeping, and observing superior-throughput, concurrent purposes. Plans include things like enabling server programs written in the very simple thread-for every-request model to scale with around-exceptional hardware utilization, enabling existing code that uses the java.lang Thread API to undertake digital threads with small adjust, and help troubleshooting, debugging, and profiling of digital threads with existing JDK applications. It is not a objective of this proposal to adjust the simple concurrency product in Java or offer a new information parallelism assemble in both the Java language or Java libraries. Nor is it a objective to remove the conventional implementation of threads or to silently migrate present apps to use virtual threads.
  • A 3rd preview of sample matching for switch expressions and statements, extending pattern matching to swap, to let an expression to be examined versus a amount of designs, just about every with a distinct action, so elaborate data-oriented queries can be expressed concisely and safely and securely. This capability formerly was previewed in JDK 17 and JDK 18. The third preview would insert refinements including the substitute of guarded styles with when clauses in change blocks. Also, the runtime semantics of a sample switch when the benefit of the selector expression is null are a lot more intently aligned with legacy change semantics. The plan’s aims include things like growing the expressiveness and applicability of switch expressions and statements by making it possible for designs to seem in case labels. Other objectives involve permitting builders to rest the historic null-hostility of switch when desired, expanding the protection of switch statements and ensuring that existing change expressions and statements continue on to compile with no adjustments and execute with identical semantics.
  • A fourth incubation of a vector API that would convey vector computations that reliably compile at runtime to exceptional vector guidance on supported CPU architectures, consequently accomplishing efficiency superior to equal scalar computations. Developers employing the API get a way to publish complex vector algorithms in Java, making use of the HotSpot vehicle-vectorizer but with a consumer product that makes vectorizations far more predictable and sturdy. The vector API formerly 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 Overseas Function and Memory API preview. JDK 19 would also increase two cross-lane vector operations, compress and develop, with each other with a complementary vector mask compress procedure. The compress vector operation maps lanes of a resource vector, picked by a mask, to a vacation spot vector in lane purchase, whilst the increase procedure does the inverse. The compress procedure is valuable in filtering query effects.
    In another addition to the vector API, bitwise integral lanewise functions would be expanded, together with operations these counting the number of a single bits, reversing the order of bits, and compressing and growing bits. Aims of the API provided being very clear and concise, platform-agnostic, having trustworthy runtime and compilation efficiency on x64 and AArch64 architectures, and enabling “graceful” degradation, for predicaments in which a vector computation can not be fully expressed at runtime as a sequence of vector functions.
  • With the Linux/RISC-V port, Java would attain aid for a components instruction established that is by now supported by a vast variety of language toolchains. RISC-V essentially is a loved ones of associated ISAs. The Linux/RISC-V port would only aid the RV64GV configuration of RISC-V, a common goal 64-bit ISA that includes vector directions. The builders of Java might contemplate other RISC-V configurations in the long term.

The port would assistance the subsequent HotSpot VM solutions: the template interpreter, C1 (customer) JIT compiler, C2 (server) JIT compiler, and all latest mainline rubbish collectors such as ZGC and Shenandoah. The true porting is just about complete the focus of the JDK Improvement Proposal (JEP) is integration of the port into the JDK mainline repository.

Like JDK 18, JDK 19 is due to be a limited-expression release, with only six months of top-degree, Premier help.

The preceding release, JDK 17, was a Long Expression Assist (LTS) release, with quite a few several years of assistance. It arrived September 14, 2021.

Copyright © 2022 IDG Communications, Inc.


Resource link | Newsphere by AF themes.