91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化

發布時間:2020-05-31 23:05:57 來源:網絡 閱讀:306 作者:wx5d30212829a35 欄目:編程語言

距離 2019 年結束,只剩下 35 天了。你做好準備迎接 2020 年了嗎?

一到年底,人就特別容易陷入回憶和比較之中,比如說這幾天的對比挑戰就火了!

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


?這個話題登上了微博的熱搜榜,也刷爆了朋友圈,人們紛紛曬出自己2017和2019的照片對比。

作為一個技術宅,我也做了一個對比:

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


?2017 年 9 月 21 日,Java 9 正式發布,并且在2017年8月,JCP執行委員會提出將Java的發布頻率改為每六個月一次,新的發布周期嚴格遵循時間點,將在每年的3月份和9月份發布。

歷任JDK對比

1、Java 9

Java 9 于 2017 年 9 月 22 日正式發布,帶來了很多新特性,其中最主要的變化是已經實現的模塊化系統。

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


主要特性:

  • 模塊系統:模塊是一個包的容器,Java 9 最大的變化之一是引入了模塊系統(Jigsaw 項目)。

  • HTTP 2 客戶端:HTTP/2標準是HTTP協議的最新版本,新的 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服務器推送特性。

  • 改進的 Javadoc:Javadoc 現在支持在 API 文檔中的進行搜索。另外,Javadoc 的輸出現在符合兼容 HTML5 標準。

  • 集合工廠方法:List,Set 和 Map 接口中,新的靜態工廠方法可以創建這些集合的不可變實例。

  • 私有接口方法:在接口中使用private私有方法。我們可以使用 private 訪問修飾符在接口中編寫私有方法。

  • 改進的 Stream API:改進的 Stream API 添加了一些便利的方法,使流處理更容易,并使用收集器編寫復雜的查詢。

  • 改進 try-with-resources:如果你已經有一個資源是 final 或等效于 final 變量,您可以在 try-with-resources 語句中使用該變量,而無需在 try-with-resources 語句中聲明一個新變量。

  • 改進的棄用注解 @Deprecated:注解 @Deprecated 可以標記 Java API 狀態,可以表示被標記的 API 將會被移除,或者已經破壞。

  • 改進 Optional 類:java.util.Optional 添加了很多新的有用方法,Optional 可以直接轉為 stream。

  • 響應式流(Reactive Streams) API: Java 9中引入了新的響應式流 API 來支持 Java 9 中的響應式編程。

2、Java 10

Java 10于 2018 年3 月21 日正式發布,這是作為當今使用最廣泛的編程語言之一的Java 語言的第十個大版本。

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


?主要特性:

  • 局部變量類型推斷(Local-Variable Type Inference):使用var關鍵字進行變量聲明,可以進行變量類型的推斷。

  • G1的并行Full GC(Parallel Full GC for G1):G1 垃圾回收器的并行完整垃圾回收,實現并行性來改善最壞情況下的延遲。

  • 應用程序類數據共享(Application Class-Data Sharing):應用程序類數據 (AppCDS) 共享,通過跨進程共享通用類元數據來減少內存占用空間,和減少啟動時間。

  • ThreadLocal握手機制(Thread-Local Handshakes):在不進入到全局 JVM 安全點 (Safepoint) 的情況下,對線程執行回調。優化可以只停止單個線程,而不是停全部線程或一個都不停。

3、Java 11

Java 11 于 2018 年9 月25 日正式發布,可在生產環境中使用!這是自 Java 8 后的首個長期支持版本,將支持到2026年。

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


?主要特性:

  • ZGC,可擴展的低延遲垃圾收集器(ZGC: A Scalable Low-Latency Garbage Collector):ZGC是一款號稱可以保證每次GC的停頓時間不超過10MS的垃圾回收器,并且和當前的默認垃圾回收起G1相比,吞吐量下降不超過15%。

  • Epsilon:什么事也不做的垃圾回收器(Epsilon: A No-Op Garbage Collector):這是一款不做垃圾回收的垃圾回收器。這個垃圾回收器看起來并沒什么用,主要可以用來進行性能測試、內存壓力測試等,Epsilon GC可以作為度量其他垃圾回收器性能的對照組。

  • 增強var用法(Local-Variable Syntax for Lambda Parameters):在Java 11中,var可以用來作為Lambda表達式的局部變量聲明。

4、Java 12

Java 12于 2019 年3 月 19 日正式發布,自Java 11 這一Long Term Support 版本發布之后半年的又一次版本更新

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


?主要特性:

  • 低暫停時間的 GC(Shenandoah: A Low-Pause-Time Garbage Collector )(Experimental):新增 Shenandoah 算法,通過與正在運行的 Java 線程同時進行 evacuation 工作來減少 GC 暫停時間。

  • Switch 表達式(Switch Expressions):擴展了 switch 語句,使其不僅可以作為語句(statement),還可以作為表達式(expression)

  • 可中止的 G1 Mixed GC(Abortable Mixed Collections for G1) G1 及時返回未使用的已分配內存(Promptly Return Unused Committed Memory from G1):如果 G1 Mixed GC 存在超出暫停目標的可能性,則使其可中止。

5、Java 13

Java 13 于 2019 年 9 月 17 日正式發布,這一版本中引入了文本塊等功能。

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


?主要特性:

  • 擴展應用程序類-數據共享(Dynamic CDS Archives):以允許在 Java 應用程序執行結束時動態歸檔類。歸檔類將包括默認的基礎層 CDS(class data-sharing)存檔中不存在的所有已加載的應用程序類和庫類。

  • 增強 ZGC 以將未使用的堆內存返回給操作系統(ZGC: Uncommit Unused Memory):ZGC 可以將未使用的堆內存返回給操作系統

  • 可在生產環境中使用的 switch 表達式(Switch Expressions):在switch塊中引入了yield語句,用于返回值。

  • 將文本塊添加到 Java 語言(Text Blocks):引入多行字符串文字,在其中可以放置多行的字符串,不需要進行任何轉義。

哪些特性改變你寫代碼的方式?

1、本地變量類型推斷

在以前的版本中,我們想定義定義局部變量時。我們需要在賦值的左側提供顯式類型,并在賦值的右邊提供實現類型,如下面的片段所示:

MyObject?value?=?new?MyObject();
List?list?=?new?ArrayList();

在Java 10中,你可以這樣定義對象:

var?value?=?new?MyObject();
var?list?=?new?ArrayList();

正如你所看到的,本地變量類型推斷將引入“var”關鍵字,而不需要顯式的規范變量的類型。

2、switch表達式

在JDK 12中引入了Switch表達式作為預覽特性。在Java 13中又修改了這個特性,引入了yield語句,用于返回值。這意味著,switch表達式(返回值)應該使用yield, switch語句(不返回值)應該使用break。

在以前,我們想要在switch中返回內容,還是比較麻煩的,一般語法如下:

int?i;
switch?(x)?{
?case?"1":
?i=1;
?break;
?case?"2":
?i=2;
?break;
?default:
?i?=?x.length();
?break;
}

在JDK13中使用以下語法:

int?i?=?switch?(x)?{
?case?"1"?->?1;
?case?"2"?->?2;

?default?->?{
?int?len?=?args[1].length();
?yield?len;
?}
};

或者

int?i?=?switch?(x)?{
?case?"1":?yield?1;
?case?"2":?yield?2;

?default:?{
?int?len?=?args[1].length();
?yield?len;
?}
};

3、文本塊支持

text block,文本塊,是一個多行字符串文字,它避免了對大多數轉義序列的需要,以可預測的方式自動格式化字符串,并在需要時讓開發人員控制格式。

我們以前從外部copy一段文本串到Java中,會被自動轉義,如有一段以下字符串:

?<html>
?<body>
?<p>Hello,?world</p>
?</body>
</html>

將其復制到Java的字符串中,會展示成以下內容:

"<html>\n"?+
"?<body>\n"?+
"?<p>Hello,?world</p>\n"?+
"?</body>\n"?+
"</html>\n";

即被自動進行了轉義,這樣的字符串看起來不是很直觀,在JDK 13中,就可以使用以下語法了:

"""
<html>
?<body>
?<p>Hello,?world</p>
?</body>
</html>
""";

使用“”“作為文本塊的開始符合結束符,在其中就可以放置多行的字符串,不需要進行任何轉義。看起來就十分清爽了。

后話

從2017到2019,不果短短兩年時間,Java就發布了5個版本。每個版本都會有很多特性出來,這些特性中雖然沒有像Java 8那樣提供函數式編程這樣的重大改變,但是也提供了switch表達式和block text等大家期待已久的特性。

2年過去了,在Java學習的道路上,你進步了嗎?歡迎談談你這兩年的變化。


讀者福利

加微信:haolagui521備注51CTO領取附送學習進階架構資料、PDF書籍文檔、面試資料

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化

Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化Java 9 ← 2017,2019 → Java 13,來看看Java兩年來的變化


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉隆县| 三都| 洪江市| 甘孜县| 海门市| 昂仁县| 常熟市| 临海市| 陕西省| 广昌县| 巴林左旗| 平潭县| 伊通| 于都县| 库尔勒市| 郴州市| 巩留县| 乐安县| 丹棱县| 崇明县| 屏南县| 阳山县| 廉江市| 独山县| 昭觉县| 天峨县| 华容县| 那坡县| 连州市| 孝昌县| 榆树市| 肇东市| 海原县| 苏尼特右旗| 德昌县| 平邑县| 昌图县| 象州县| 敖汉旗| 伊川县| 萨迦县|