---
title: Java 19
description: JDK 19
category: Java
tag:
- Java
head:
- - meta
- name: keywords
content: Java 19,JDK19,,, API,JEP
---
JDK 19 2022 9 20
JDK 19 7
- [JEP 424: Foreign Function & Memory API API](https://openjdk.org/jeps/424)
- [JEP 425: Virtual Threads](https://openjdk.org/jeps/425)
- [JEP 426: Vector API API](https://openjdk.java.net/jeps/426)
- [JEP 428: Structured Concurrency](https://openjdk.org/jeps/428)
JDK 8 JDK 25

## JEP 424: API
Java API Java JVM JVM API Java JNI
API Java 17 [JEP 412](https://openjdk.java.net/jeps/412) [JEP 419](https://openjdk.org/jeps/419) Java 18 [JEP 424](https://openjdk.org/jeps/424) Java 19
API
- Java [`sun.misc.Unsafe`](https://hg.openjdk.java.net/jdk/jdk/file/tip/src/jdk.unsupported/share/classes/sun/misc/Unsafe.java) `Unsafe` Java C Java `Unsafe`
- Java 1.1 Java JNIJNI [Guide to JNI (Java Native Interface)](https://www.baeldung.com/jni) JVM Java JNI JNI JIT [JNA](https://github.com/java-native-access/jna)[JNR](https://github.com/jnr/jnr-ffi) [JavaCPP](https://github.com/bytedeco/javacpp) JNI
API Java
Foreign Function & Memory API (FFM API)
- `MemorySegment``MemoryAddress` `SegmentAllocator`
- `MemoryLayout``VarHandle`
- `MemorySession`
- `Linker``FunctionDescriptor` `SymbolLookup`
FFM API C `radixsort` Java
```java
// 1. C
Linker linker = Linker.nativeLinker();
SymbolLookup stdlib = linker.defaultLookup();
MethodHandle radixSort = linker.downcallHandle(
stdlib.lookup("radixsort"), ...);
// 2.
String[] javaStrings = { "mouse", "cat", "dog", "car" };
// 3.
SegmentAllocator allocator = implicitAllocator();
MemorySegment offHeap = allocator.allocateArray(ValueLayout.ADDRESS, javaStrings.length);
// 4.
for (int i = 0; i < javaStrings.length; i++) {
//
MemorySegment cString = allocator.allocateUtf8String(javaStrings[i]);
offHeap.setAtIndex(ValueLayout.ADDRESS, i, cString);
}
// 5.
radixSort.invoke(offHeap, javaStrings.length, MemoryAddress.NULL, '\0');
// 6.
for (int i = 0; i < javaStrings.length; i++) {
MemoryAddress cStringPtr = offHeap.getAtIndex(ValueLayout.ADDRESS, i);
javaStrings[i] = cStringPtr.getUtf8String(0);
}
assert Arrays.equals(javaStrings, new String[] {"car", "cat", "dog", "mouse"}); // true
```
## JEP 425:
Virtual Thread JDK OS
Go GoroutineErlang
Java 19
Java
- [](https://mp.weixin.qq.com/s/vdLXhZdWyxc6K-D3Aj03LA)
- [Java19 GA](https://mp.weixin.qq.com/s/yyApBXxpXxVwttr01Hld6Q)
- [ - VirtualThread ](https://www.cnblogs.com/throwable/p/16758997.html)
## JEP 426: API
Vector API [JEP 338](https://openjdk.java.net/jeps/338) [ API](http://openjdk.java.net/jeps/11) Java 16 [JEP 414](https://openjdk.java.net/jeps/414) Java 17 [JEP 417](https://openjdk.java.net/jeps/417) Java 18 [JEP 426](https://openjdk.java.net/jeps/426) Java 19
[Java 18 ](./java18.md) API
## JEP 428:
JDK 19 API `java.util.concurrent`
API [`StructuredTaskScope`](https://download.java.net/java/early_access/loom/docs/api/jdk.incubator.concurrent/jdk/incubator/concurrent/StructuredTaskScope.html)`StructuredTaskScope`
`StructuredTaskScope`
```java
try (var scope = new StructuredTaskScope()) {
// fork
Future future1 = scope.fork(task1);
Future future2 = scope.fork(task2);
//
scope.join();
//
... process results/exceptions ...
} // close
```
JDK