Java Advancement Kit 19, because of this September, is now function-total, having just arrived at an first rampdown section. 7 attributes concentrate on the launch such as structured concurrency, document styles, a preview of a overseas operate and memory API, and help for the open up resource Linux/RISC-V instruction set architecture (ISA).
With this most up-to-date milestone in the release system for conventional Java, other prepared abilities these as universal generics and value objects will have to wait for a later model of the system. JDK 19 follows the March 22 arrival of JDK 18. Conventional Java is on a six-thirty day period launch cadence.
JDK 19 is slated to be formally launched for generation use on September 20, preceded by a second rampdown phase commencing July 21, and release candidates to be published August 11 and August 25. Early entry builds of JDK 19 can be accessed from jdk.java.internet/19. The JDK 19 features incorporate:
- Structured concurrency, in an incubator phase, is intended to simplify multithreaded programming through a structured concurrency library. This concurrency treats several jobs running in various threads as a solitary device of function, to streamline error dealing with and cancellation. Trustworthiness and observability are improved.
- A preview of record designs, to deconstruct document values. Report designs and sort patterns can be nested to permit a declarative, highly effective, and composable type of details navigation and processing. Goals of the proposal include things like extending pattern matching to express extra subtle, composable facts queries while not transforming the syntax or semantics of kind designs. This proposal builds on sample matching for
instanceof, shipped in JDK 16 in March 2021. Long term plans may contact for report patterns to be extended with abilities these types of as array styles and
varargpatterns. Record designs is portion of Undertaking Amber, an energy to explore and incubate scaled-down, productivity-oriented Java options.
- A preview of a international function and memory API, which would introduce an API by which Java plans can interoperate with code and data outside the Java runtime. By proficiently invoking foreign functions (i.e., code exterior the Java runtime) and securely accessing foreign memory (i.e., memory not managed by the JVM) the API enables Java applications to contact indigenous libraries and system indigenous knowledge without having the danger and brittleness of the Java Indigenous Interface (JNI). The overseas purpose and memory API brings together two earlier incubating APIs: the foreign memory obtain API and the foreign linker API. The foreign operate and memory API was beforehand incubated in JDK 17 and reincubated in JDK 18. The proposal’s targets incorporate ease of use, performance, generality, and safety.
- A preview of digital threads, which are light-weight threads that radically reduce the work of crafting, retaining, and observing substantial-throughput, concurrent programs. Goals consist of enabling server applications prepared in the basic thread-per-request fashion to scale with in close proximity to-ideal components utilization, enabling existing code that takes advantage of the
java.langThread API to undertake virtual threads with minimal modify, and allow troubleshooting, debugging, and profiling of digital threads with present JDK instruments. It is not a goal of this proposal to improve the essential concurrency model in Java or give a new information parallelism build in both the Java language or Java libraries. Nor is it a purpose to remove the standard implementation of threads or to silently migrate current programs to use virtual threads.
- A third preview of sample matching for swap expressions and statements, extending sample matching to
swap, to enable an expression to be examined in opposition to a variety of styles, each with a specific motion, so sophisticated information-oriented queries can be expressed concisely and safely. This capacity beforehand was previewed in JDK 17 and JDK 18. The 3rd preview would add refinements such as the substitute of guarded patterns with
changeblocks. Also, the runtime semantics of a pattern change when the price of the selector expression is null are more closely aligned with legacy
changesemantics. The plan’s objectives incorporate expanding the expressiveness and applicability of
changeexpressions and statements by letting patterns to look in case labels. Other goals incorporate allowing for developers to chill out the historic null-hostility of
changewhen wished-for, raising the protection of
swapstatements and making sure that current
changeexpressions and statements carry on to compile with no modifications and execute with identical semantics.
- A fourth incubation of a vector API that would specific vector computations that reliably compile at runtime to optimal vector recommendations on supported CPU architectures, consequently accomplishing overall performance outstanding to equivalent scalar computations. Builders utilizing the API obtain a way to publish sophisticated vector algorithms in Java, applying the HotSpot vehicle-vectorizer but with a person product that makes vectorizations much more predictable and strong. The vector API earlier was incubated into JDK 16, JDK 17, and JDK 19.
Advancements to the API proposed for JDK 19 contain enhancements to load and retailer vectors to and from
MemorySegments, as defined by the International Function 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 procedure maps lanes of a supply vector, chosen by a mask, to a place vector in lane order, even though the grow procedure does the inverse. The compress procedure is practical in filtering question effects.
In another addition to the vector API, bitwise integral lanewise operations would be expanded, which include operations these kinds of counting the selection of one bits, reversing the order of bits, and compressing and expanding bits. Targets of the API incorporated being apparent and concise, platform-agnostic, possessing reliable runtime and compilation efficiency on x64 and AArch64 architectures, and enabling “graceful” degradation, for cases in which a vector computation are not able to be fully expressed at runtime as a sequence of vector functions.
- With the Linux/RISC-V port, Java would gain aid for a hardware instruction established that is by now supported by a broad array of language toolchains. RISC-V actually is a family of associated ISAs. The Linux/RISC-V port would only support the RV64GV configuration of RISC-V, a typical objective 64-bit ISA that includes vector guidance. The developers of Java may contemplate other RISC-V configurations in the foreseeable future.
The port would support the subsequent HotSpot VM options: the template interpreter, C1 (customer) JIT compiler, C2 (server) JIT compiler, and all existing mainline garbage collectors which includes ZGC and Shenandoah. The precise porting is practically entire the concentrate 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 limited-time period release, with only 6 months of leading-level, Premier aid.
The previous launch, JDK 17, was a Long Phrase Guidance (LTS) release, with numerous decades of support. It arrived September 14, 2021.