JDK 19: The new features in Java 19
Java Growth Package 19, due this September, has just experienced a seventh aspect proposed for it: structured concurrency, to simplify multithreaded programming. Structured concurrency joins 6 earlier capabilities such as document designs, a preview of a international operate and memory API, and assist for the open supply Linux/RISC-V instruction set architecture (ISA).
JDK 19, or merely Java 19, probably could host a vast variety of features, ranging from universal generics to benefit objects, according to programs underway for boosting Java. JDK 19 would adhere to JDK 18, which arrived March 22. Regular Java is on a 6-thirty day period release cadence.
OpenJDK’s builders have printed an official release schedule for JDK 19, which has it arriving September 20 as a production launch, preceded by rampdown phases June 9 and July 21, and release candidates to be printed August 11 and August 25.
Early obtain builds of JDK 19 can be accessed from jdk.java.internet/19. Proposed JDK 19 options include things like:
- Structured concurrency, in an incubator period, is meant to simplify multithreaded programming by a structured concurrency library. This concurrency treats various responsibilities operating in diverse threads as a single unit of operate, to streamline mistake managing and cancellation. Reliability and observability are enhanced.
- A preview of file styles, to deconstruct history values. Record designs and sort patterns can be nested to allow a declarative, highly effective, and composable form of details navigation and processing. Ambitions of the proposal include things like extending sample matching to specific more subtle, composable information queries although not changing the syntax or semantics of sort styles. This proposal builds on pattern matching for
instanceof, delivered in JDK 16 in March 2021. Foreseeable future strategies may well contact for report patterns to be extended with capabilities this sort of as array designs and
varargpatterns. Report styles is aspect of Undertaking Amber, an hard work to check out and incubate lesser, productiveness-oriented Java characteristics.
- A preview of a overseas purpose and memory API, which would introduce an API by which Java programs can interoperate with code and knowledge outside the Java runtime. By efficiently invoking international capabilities (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 phone native libraries and system native information devoid of the danger and brittleness of the Java Native Interface (JNI). The foreign functionality and memory API combines two earlier incubating APIs: the international memory entry API and the foreign linker API. The foreign functionality and memory API was previously incubated in JDK 17 and reincubated in JDK 18. The proposal’s targets incorporate simplicity of use, overall performance, generality, and security.
- A preview of digital threads, which are lightweight threads that dramatically lessen the exertion of producing, retaining, and observing superior-throughput, concurrent applications. Ambitions incorporate enabling server programs prepared in the uncomplicated thread-per-ask for model to scale with in close proximity to-optimum hardware utilization, enabling present code that works by using the
java.langThread API to undertake digital threads with minimal change, and empower troubleshooting, debugging, and profiling of virtual threads with present JDK equipment. It is not a target of this proposal to transform the primary concurrency model in Java or offer a new info parallelism build in possibly the Java language or Java libraries. Nor is it a intention to clear away the classic implementation of threads or to silently migrate present apps to use digital threads.
- A third preview of pattern matching for change expressions and statements, extending sample matching to
change, to make it possible for an expression to be examined from a range of styles, each and every with a distinct action, so elaborate info-oriented queries can be expressed concisely and securely. This capacity beforehand was previewed in JDK 17 and JDK 18. The 3rd preview would insert refinements like the substitution of guarded designs with
changeblocks. Also, the runtime semantics of a sample swap when the value of the selector expression is null are a lot more closely aligned with legacy
swapsemantics. The plan’s goals consist of increasing the expressiveness and applicability of
changeexpressions and statements by allowing for styles to surface in circumstance labels. Other objectives involve enabling builders to rest the historic null-hostility of
changewhen wished-for, increasing the basic safety of
changestatements and making sure that present
changeexpressions and statements carry on to compile with no adjustments and execute with identical semantics.
- A fourth incubation of a vector API that would categorical vector computations that reliably compile at runtime to exceptional vector recommendations on supported CPU architectures, therefore achieving efficiency outstanding to equal scalar computations. Developers utilizing the API acquire a way to produce complex vector algorithms in Java, employing the HotSpot automobile-vectorizer but with a person design that would make vectorizations a lot more predictable and sturdy. The vector API previously was incubated into JDK 16, JDK 17, and JDK 19.
Advancements to the API proposed for JDK 19 include things like enhancements to load and store vectors to and from
MemorySegments, as defined by the Overseas Purpose and Memory API preview. JDK 19 would also increase two cross-lane vector operations, compress and broaden, jointly with a complementary vector mask compress operation. The compress vector procedure maps lanes of a source vector, selected by a mask, to a place vector in lane order, even though the broaden procedure does the inverse. The compress operation is valuable in filtering question effects.
In a different addition to the vector API, bitwise integral lanewise operations would be expanded, like functions such counting the variety of one bits, reversing the get of bits, and compressing and increasing bits. Targets of the API provided being crystal clear and concise, platform-agnostic, getting reputable runtime and compilation functionality on x64 and AArch64 architectures, and enabling “swish” degradation, for circumstances in which a vector computation can not be totally expressed at runtime as a sequence of vector functions.
- With the Linux/RISC-V port, Java would gain assist for a components instruction established that is now supported by a extensive range of language toolchains. RISC-V essentially is a spouse and children of associated ISAs. The Linux/RISC-V port would only aid the RV64GV configuration of RISC-V, a general reason 64-little bit ISA that consists of vector recommendations. The developers of Java could think about other RISC-V configurations in the long run.
The port would aid the subsequent HotSpot VM possibilities: the template interpreter, C1 (client) JIT compiler, C2 (server) JIT compiler, and all existing mainline rubbish collectors which include ZGC and Shenandoah. The genuine porting is practically full the focus of the JDK Improvement Proposal (JEP) is integration of the port into the JDK mainline repository.
Like JDK 18, JDK 19 is thanks to be a short-phrase launch, with only six months of prime-level, Leading help.
The previous launch, JDK 17, was a Long Time period Help (LTS) release, with various yrs of assist. It arrived September 14, 2021.
Copyright © 2022 IDG Communications, Inc.
Supply website link