[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/Snailclimb/JavaGuide/main/docs/java/new-features/java19.md [Back]  [Original]

---
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 

![ JDK 8  JDK 25 ](https://oss.javaguide.cn/github/javaguide/java/new-features/jdk8~jdk24.png)

## 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 



Web Proxy Viewer  |  New URL  |  Original Page