---
title: Java 16
description: JDK 16 JEP
category: Java
tag:
- Java
head:
- - meta
- name: keywords
content: Java 16,JDK16,, API,JEP,
---
Java 16 2021 3 16 LTS
JDK 16 17
- [JEP 338: Vector API (Incubator) API](https://openjdk.java.net/jeps/338)
- [JEP 376: ZGC: Concurrent Thread-Stack ProcessingZGC ](https://openjdk.java.net/jeps/376)
- [JEP 387: Elastic Metaspace](https://openjdk.java.net/jeps/387)
- [JEP 390: Warnings for Value-Based Classes](https://openjdk.java.net/jeps/390)
- [JEP 394: Pattern Matching for instanceofinstanceof ](https://openjdk.java.net/jeps/394)
- [JEP 395: Recordsrecord ](https://openjdk.java.net/jeps/395)
- [JEP 396: Strongly Encapsulate JDK Internals by Default JDK ](https://openjdk.java.net/jeps/396)
- [JEP 397: Sealed Classes (Second Preview)](https://openjdk.java.net/jeps/397)
JDK 8 JDK 25

[OpenJDK Java 16 ](https://openjdk.java.net/projects/jdk/16/)
## JEP 338: Vector API 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
## JEP 347: Enable C++ 14 Language Features C++ 14
Java 16 JDK C++ C++ 14 HotSpot
Java 15 JDK C++ C++98/03
## JEP 376: ZGC: Concurrent Thread-Stack ProcessingZGC
Java16 ZGC GC ZGC
## JEP 387: Elastic Metaspace
Metaspace Metaspace HotSpot metaspace
## JEP 390: Warnings for Value-Based Classes
> [ | Java16 ](https://xie.infoq.cn/article/8304c894c4e38318d38ceb116)
Java9 Java `@Deprecated` `since` `forRemoval` 2 since `@Deprecated` API `forRemoval` API @Deprecated `forRemoval=true` API API Java9 @Deprecated API
`java.lang.Integer``java.lang.Double` `@Deprecated(since="9", forRemoval = true)` `new Integer(10)` `Integer a = 10` `Integer.valueOf()` `'Integer(int)' is deprecated and marked for removal` `java.util.Optional` `java.time.LocalDateTime` value-based class Project Valhalla
`synchronized` JDK 16 HotSpot
```java
private Integer count = 0;
public void inc() {
synchronized (count) {
count++;
}
}
```
`Integer` `count++` `Integer` `AtomicInteger`
## JEP 392: Packaging Tool
Java 14 JEP 343 `jpackage` Java 15 Java 16
Java Windows msi exemacOS pkg dmg Linux deb rpm ToolProvider API jpackage jdk.incubator.jpackage jdk.jpackage
[Playing with Java 16 jpackage](https://www.youtube.com/watch?v=KahYIVzRIkQ)
## JEP 393: Foreign Memory Access API API
API Java Java
Java 14[JEP 370](https://openjdk.org/jeps/370) APIJava 15 [JEP 383](https://openjdk.org/jeps/383) Java 16
API
- API
- API JVM
-
- API `sun.misc.Unsafe`
## JEP 394: Pattern Matching for instanceofinstanceof
| JDK | | JEP | |
| ---------- | ----------------- | --------------------------------------- | ---------------------------------------- |
| Java SE 14 | preview | [JEP 305](https://openjdk.org/jeps/305) | instanceof |
| Java SE 15 | Second Preview | [JEP 375](https://openjdk.org/jeps/375) | |
| Java SE 16 | Permanent Release | [JEP 394](https://openjdk.org/jeps/394) | final |
Java 16 `instanceof`
```java
// Old code
if (o instanceof String) {
String s = (String)o;
... use s ...
}
// New code
if (o instanceof String s) {
... use s ...
}
```
## JEP 395: Recordsrecord
| JDK | | JEP | |
| ---------- | ----------------- | -------------------------------------------- | ------------------------------------------------------------------------- |
| Java SE 14 | Preview | [JEP 359](https://openjdk.java.net/jeps/359) | `record` `record` |
| Java SE 15 | Second Preview | [JEP 384](https://openjdk.org/jeps/384) | `record` |
| Java SE 16 | Permanent Release | [JEP 395](https://openjdk.org/jeps/395) | |
Java SE 16
```java
public class Outer {
class Inner {
static int age;
}
}
```
> JDK 16 IDE age The field age cannot be declared static in a non-static inner type, unless initialized with a constant expression
## JEP 396: Strongly Encapsulate JDK Internals by Default JDK
JDK API `sun.misc.Unsafe` JDK API API Java JDK 9 illegal-access JDK 15 warning JDK 16 denyadd-opens
## JEP 397: Sealed Classes
[JEP 360](https://openjdk.java.net/jeps/360) Java 15 JDK 16 [JEP 397](https://openjdk.java.net/jeps/397)
[Java 14 & 15 ](./java14-15.md)
##
- **JEP 380:Unix-Domain **Unix-domain Unix Windows 10 Windows Server 2019 java.nio.channels API Unix-domainAF_UNIX Unix-domain Unix-domain IPC TCP/IP Internet IPUnix-domain TCP/IP
- **JEP 389: API** API Java API Java 1.1 Java JNIJava JNI
- **JEP 357: Mercurial Git**OpenJDK Mercurial Git
- **JEP 369: GitHub** JEP 357 Mercurial Git Git GitHub OpenJDK Git JDK 11 JDK
- **JEP 386: Alpine Linux**Alpine Linux Linux 8MB 130MB JDK Apline Linux Apline Linux musl lib Linux x64 AArch64 musl lib Linux
- **JEP 388:Windows/AArch64 ** JEP JDK JEP 386 JDK Alpine Linux musl x64 C JEP 388 JDK Windows AArch64ARM64
##
- [Java Language Changes](https://docs.oracle.com/en/java/javase/16/language/java-language-changes.html)
- [Consolidated JDK 16 Release Notes](https://www.oracle.com/java/technologies/javase/16all-relnotes.html)
- [Java 16 ](https://www.infoq.cn/article/IAkwhx7i9V7G8zLVEd4L)
- [ | Java16 ](https://xie.infoq.cn/article/8304c894c4e38318d38ceb116)