---
title: Java 11 æ°ç¹æ§æ¦è§
category: Java
tag:
- Javaæ°ç¹æ§
---
**Java 11** äº 2018 å¹´ 9 æ 25 æ¥æ£å¼åå¸ï¼è¿æ¯å¾éè¦çä¸ä¸ªçæ¬ï¼Java 11 å 2017 å¹´ 9 æä»½åå¸ç Java 9 以å 2018 å¹´ 3 æä»½åå¸ç Java 10 ç¸æ¯ï¼å
¶æå¤§çåºå«å°±æ¯ï¼å¨é¿ææ¯æ(Long-Term-Support)æ¹é¢ï¼**Oracle 表示ä¼å¯¹ Java 11 æä¾å¤§åæ¯æï¼è¿ä¸æ¯æå°ä¼æç»è³ 2026 å¹´ 9 æãè¿æ¯æ® Java 8 以忝æçé¦ä¸ªé¿æçæ¬ã**
ä¸é¢è¿å¼ 徿¯ Oracle 宿¹ç»åºç Oracle JDK æ¯æçæ¶é´çº¿ã

**æ¦è§ï¼ç²¾éäºä¸é¨åï¼** ï¼
- [JEP 321ï¼HTTP Client æ åå](https://openjdk.java.net/jeps/321)
- [JEP 333ï¼ZGC(å¯ä¼¸ç¼©ä½å»¶è¿å徿¶éå¨)](https://openjdk.java.net/jeps/333)
- [JEP 323ï¼Lambda åæ°çå±é¨åéè¯æ³](https://openjdk.java.net/jeps/323)
- [JEP 330ï¼å¯å¨åæä»¶æºä»£ç ç¨åº](https://openjdk.java.net/jeps/330)
## HTTP Client æ åå
Java 11 对 Java 9 ä¸å¼å
¥å¹¶å¨ Java 10 ä¸è¿è¡äºæ´æ°ç Http Client API è¿è¡äºæ ååï¼å¨åä¸¤ä¸ªçæ¬ä¸è¿è¡åµåçåæ¶ï¼Http Client å ä¹è¢«å®å
¨éåï¼å¹¶ä¸ç°å¨å®å
¨æ¯æå¼æ¥éé»å¡ã
å¹¶ä¸ï¼Java 11 ä¸ï¼Http Client çå
åç± `jdk.incubator.http` æ¹ä¸º`java.net.http`ï¼è¯¥ API éè¿ `CompleteableFuture` æä¾éé»å¡è¯·æ±åååºè¯ä¹ã使ç¨èµ·æ¥ä¹å¾ç®åï¼å¦ä¸ï¼
```java
var request = HttpRequest.newBuilder()
.uri(URI.create("https://javastack.cn"))
.GET()
.build();
var client = HttpClient.newHttpClient();
// 忥
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
// 弿¥
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);
```
## String å¢å¼º
Java 11 å¢å äºä¸ç³»åçå符串å¤çæ¹æ³ï¼
```java
//夿å符串æ¯å¦ä¸ºç©º
" ".isBlank();//true
//å»é¤å符串é¦å°¾ç©ºæ ¼
" Java ".strip();// "Java"
//å»é¤å符串é¦é¨ç©ºæ ¼
" Java ".stripLeading(); // "Java "
//å»é¤å符串尾é¨ç©ºæ ¼
" Java ".stripTrailing(); // " Java"
//éå¤å符串å¤å°æ¬¡
"Java".repeat(3); // "JavaJavaJava"
//è¿åç±è¡ç»æ¢ç¬¦åéçå符串éåã
"A\nB\nC".lines().count(); // 3
"A\nB\nC".lines().collect(Collectors.toList());
```
## Optional å¢å¼º
æ°å¢äº`empty()`æ¹æ³æ¥å¤ææå®ç `Optional` 对象æ¯å¦ä¸ºç©ºã
```java
var op = Optional.empty();
System.out.println(op.isEmpty());//夿æå®ç Optional 对象æ¯å¦ä¸ºç©º
```
## ZGC(å¯ä¼¸ç¼©ä½å»¶è¿å徿¶éå¨)
**ZGC å³ Z Garbage Collector**ï¼æ¯ä¸ä¸ªå¯ä¼¸ç¼©çãä½å»¶è¿çå徿¶éå¨ã
ZGC 主è¦ä¸ºäºæ»¡è¶³å¦ä¸ç®æ è¿è¡è®¾è®¡ï¼
- GC åé¡¿æ¶é´ä¸è¶
è¿ 10ms
- å³è½å¤çå ç¾ MB çå°å ï¼ä¹è½å¤çå 个 TB ç大å
- åºç¨ååè½åä¸ä¼ä¸éè¶
è¿ 15%ï¼ä¸ G1 åæ¶ç®æ³ç¸æ¯ï¼
- æ¹ä¾¿å¨æ¤åºç¡ä¸å¼å
¥æ°ç GC ç¹æ§åå©ç¨ colored é以å Load barriers ä¼åå¥ å®åºç¡
- å½ååªæ¯æ Linux/x64 ä½å¹³å°
ZGC ç®å **å¤å¨å®éªé¶æ®µ**ï¼åªæ¯æ Linux/x64 å¹³å°ã
ä¸ CMS ä¸ç ParNew å G1 类似ï¼ZGC ä¹éç¨æ è®°-å¤å¶ç®æ³ï¼ä¸è¿ ZGC å¯¹è¯¥ç®æ³åäºé大æ¹è¿ã
å¨ ZGC ä¸åºç° Stop The World çæ
åµä¼æ´å°ï¼
详æ
å¯ä»¥ç ï¼ [ãæ°ä¸ä»£åå¾åæ¶å¨ ZGC çæ¢ç´¢ä¸å®è·µã](https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html)
## Lambda åæ°çå±é¨åéè¯æ³
ä» Java 10 å¼å§ï¼ä¾¿å¼å
¥äºå±é¨åéç±»åæ¨æè¿ä¸å
³é®ç¹æ§ãç±»åæ¨æå
许使ç¨å
³é®å var ä½ä¸ºå±é¨åéçç±»åè䏿¯å®é
ç±»åï¼ç¼è¯å¨æ ¹æ®åé
ç»åéç弿¨æåºç±»åã
Java 10 ä¸å¯¹ var å
³é®ååå¨å 个éå¶
- åªè½ç¨äºå±é¨åéä¸
- å£°ææ¶å¿
é¡»åå§å
- ä¸è½ç¨ä½æ¹æ³åæ°
- ä¸è½å¨ Lambda 表达å¼ä¸ä½¿ç¨
Java11 å¼å§å
许å¼åè
å¨ Lambda 表达å¼ä¸ä½¿ç¨ var è¿è¡åæ°å£°æã
```java
// ä¸é¢ä¸¤è
æ¯çä»·ç
Consumer consumer = (var i) -> System.out.println(i);
Consumer consumer = (String i) -> System.out.println(i);
```
## å¯å¨åæä»¶æºä»£ç ç¨åº
è¿æå³çæä»¬å¯ä»¥è¿è¡å䏿件ç Java æºä»£ç ãæ¤åè½å
è®¸ä½¿ç¨ Java è§£éå¨ç´æ¥æ§è¡ Java æºä»£ç ãæºä»£ç å¨å
åä¸ç¼è¯ï¼ç¶åç±è§£é卿§è¡ï¼ä¸éè¦å¨ç£çä¸çæ `.class` æä»¶äºãå¯ä¸ç约æå¨äºææç¸å
³çç±»å¿
é¡»å®ä¹å¨åä¸ä¸ª Java æä»¶ä¸ã
å¯¹äº Java åå¦è
并叿å°è¯ç®åç¨åºç人ç¹å«æç¨ï¼å¹¶ä¸è½å jshell ä¸èµ·ä½¿ç¨ãä¸å®è½ç¨åº¦ä¸å¢å¼ºäºä½¿ç¨ Java æ¥åèæ¬ç¨åºçè½åã
## å
¶ä»æ°ç¹æ§
- **æ°çåå¾åæ¶å¨ Epsilon** ï¼ä¸ä¸ªå®å
¨æ¶æç GC å®ç°ï¼åé
æéçå
åèµæºï¼æå¤§é度çéä½å
åå ç¨åå
åååå»¶è¿æ¶é´
- **ä½å¼éç Heap Profiling** ï¼Java 11 䏿ä¾ä¸ç§ä½å¼éç Java å åé
éæ ·æ¹æ³ï¼è½å¤å¾å°å åé
ç Java 对象信æ¯ï¼å¹¶ä¸è½å¤éè¿ JVMTI 访é®å ä¿¡æ¯
- **TLS1.3 åè®®** ï¼Java 11 ä¸å
å«äºä¼ è¾å±å®å
¨æ§ï¼TLSï¼1.3 è§èï¼RFC 8446ï¼çå®ç°ï¼æ¿æ¢äºä¹åçæ¬ä¸å
å«ç TLSï¼å
æ¬ TLS 1.2ï¼åæ¶è¿æ¹è¿äºå
¶ä» TLS åè½ï¼ä¾å¦ OCSP è£
订æ©å±ï¼RFC 6066ï¼RFC 6961ï¼ï¼ä»¥åä¼è¯æ£ååæ©å±ä¸»å¯é¥æ©å±ï¼RFC 7627ï¼ï¼å¨å®å
¨æ§åæ§è½æ¹é¢ä¹åäºå¾å¤æå
- **é£è¡è®°å½å¨(Java Flight Recorder)** ï¼é£è¡è®°å½å¨ä¹åæ¯åä¸ç JDK çä¸é¡¹åæå·¥å
·ï¼ä½å¨ Java 11 ä¸ï¼å
¶ä»£ç 被å
å«å°å
¬å¼ä»£ç åºä¸ï¼è¿æ ·ææäººé½è½ä½¿ç¨è¯¥åè½äºã
- ......
## åè
- JDK 11 Release Notesï¼https://www.oracle.com/java/technologies/javase/11-relnote-issues.html
- Java 11 â Features and Comparisonï¼