---
title: Java 17
category: Java
tag:
- Java
---
Java 17 2021 9 14 LTS
Oracle Oracle JDK Java
17 2029 9

Java 17 Java 8 LTS Java Spring 6.x Spring Boot 3.x Java 17
14
- [JEP 306:Restore Always-Strict Floating-Point Semantics](https://openjdk.java.net/jeps/306)
- [JEP 356:Enhanced Pseudo-Random Number Generators](https://openjdk.java.net/jeps/356)
- [JEP 382:New macOS Rendering Pipeline macOS ](https://openjdk.java.net/jeps/382)
- [JEP 391:macOS/AArch64 Port macOS AArch64](https://openjdk.java.net/jeps/391)
- [JEP 398:Deprecate the Applet API for Removal Applet API](https://openjdk.java.net/jeps/398)
- [JEP 403:Strongly Encapsulate JDK Internals JDK ](https://openjdk.java.net/jeps/403)
- [JEP 406:Pattern Matching for switch (switch )](https://openjdk.java.net/jeps/406)
- [JEP 407:Remove RMI Activation](https://openjdk.java.net/jeps/407)
- [JEP 409:Sealed Classes](https://openjdk.java.net/jeps/409)
- [JEP 410:Remove the Experimental AOT and JIT Compiler AOT JIT ](https://openjdk.java.net/jeps/410)
- [JEP 411:Deprecate the Security Manager for Removal](https://openjdk.java.net/jeps/411)
- [JEP 412:Foreign Function & Memory API ( API)](https://openjdk.java.net/jeps/412)
- [JEP 414:Vector API ](https://openjdk.java.net/jeps/417)
- [JEP 415:Context-Specific Deserialization Filters](https://openjdk.java.net/jeps/415)
356398413406407409410411412414
[OpenJDK Java 17 ](https://openjdk.java.net/projects/jdk/17/)
## JEP 356:
JDK 17 `Random``ThreadLocalRandom``SplittableRandom` 3
Java 17 pseudorandom number generatorRPNG PRNG
> [RPNG](https://ctf-wiki.org/crypto/streamcipher/prng/intro/) PRNG PRNG
```java
RandomGeneratorFactory l128X256MixRandom = RandomGeneratorFactory.of("L128X256MixRandom");
//
RandomGenerator randomGenerator = l128X256MixRandom.create(System.currentTimeMillis());
//
randomGenerator.nextInt(10));
```
## JEP 398: Applet API
Applet API Web Java
Applet API Java 9 [JEP 289](https://openjdk.java.net/jeps/289)
## JEP 406:switch
`instanceof` `switch`
`instanceof`
```java
// Old code
if (o instanceof String) {
String s = (String)o;
... use s ...
}
// New code
if (o instanceof String s) {
... use s ...
}
```
`switch`
```java
// Old code
static String formatter(Object o) {
String formatted = "unknown";
if (o instanceof Integer i) {
formatted = String.format("int %d", i);
} else if (o instanceof Long l) {
formatted = String.format("long %d", l);
} else if (o instanceof Double d) {
formatted = String.format("double %f", d);
} else if (o instanceof String s) {
formatted = String.format("String %s", s);
}
return formatted;
}
// New code
static String formatterPatternSwitch(Object o) {
return switch (o) {
case Integer i -> String.format("int %d", i);
case Long l -> String.format("long %d", l);
case Double d -> String.format("double %f", d);
case String s -> String.format("String %s", s);
default -> o.toString();
};
}
```
`null`
```java
// Old code
static void testFooBar(String s) {
if (s == null) {
System.out.println("oops!");
return;
}
switch (s) {
case "Foo", "Bar" -> System.out.println("Great");
default -> System.out.println("Ok");
}
}
// New code
static void testFooBar(String s) {
switch (s) {
case null -> System.out.println("Oops");
case "Foo", "Bar" -> System.out.println("Great");
default -> System.out.println("Ok");
}
}
```
## JEP 407:
(RMI) RMI RMI
## JEP 409
[JEP 360](https://openjdk.java.net/jeps/360) Java 15 JDK 16 [JEP 397](https://openjdk.java.net/jeps/397)
[Java 15 ](./java15.md)
## JEP 410: AOT JIT
Java 9 [JEP 295](https://openjdk.java.net/jeps/295) , (AOT) Java
Java 17 (AOT) (JIT) Java JVM (JVMCI) JIT
## JEP 411:
Java 1.0 Java Java Java 17 Applet API ( [JEP 398](https://openjdk.java.net/jeps/398) )
## JEP 412: 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
[Java 19 ](./java19.md) API
## JEP 414: 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
API API CPU SIMD CPU HotSpot API Java
[Java 18 ](./java18.md) API