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

---
title: Java 19 
category: Java
tag:
  - Java
---

JDK 19  9  20 JDK 19 

JDK 19  7 

- [JEP 405: Record Patterns](https://openjdk.org/jeps/405)
- [JEP 422: Linux/RISC-V Port](https://openjdk.org/jeps/422)
- [JEP 424: Foreign Function & Memory API API](https://openjdk.org/jeps/424)
- [JEP 425: Virtual Threads](https://openjdk.org/jeps/425)
- [JEP 426: VectorAPI](https://openjdk.java.net/jeps/426)
- [JEP 427: Pattern Matching for switchswitch ](https://openjdk.java.net/jeps/427)
- [JEP 428: Structured Concurrency](https://openjdk.org/jeps/428)

 424425426428  4 

[OpenJDK Java 19 ](https://openjdk.org/projects/jdk/19/)

## 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 (Lightweight ProcessLWP

 Go  GoroutineErlang 



 Java 19 https://www.zhihu.com/question/536743167 

Java 

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