天天看點

Java 10的10個新特性,将徹底改變你寫代碼的方式!

Java 9才釋出幾個月,很多玩意都沒整明白,現在Java 10又快要來了。。

這時候我真尼瑪想說:線上用的JDK 7 甚至JDK 6,JDK 8 還沒用熟,JDK 9 才釋出不久不知道啥玩意,JDK 10……

剛學Java的同學是不是感覺一臉蒙逼?!!!!

就連我這個老司機也同樣感覺如此!

Java 更新越來越快,我們做技術的也要跟上步伐,不然總會慢别人一拍,這新東西從國外到國内應用一般要好幾年的時間,如果我們提前了解并應用這些新技術對自己不是壞事。

Java 10的新特性

說了這麼多,看Java 10都會有哪些特性來改變我們寫代碼的方式呢?!

1.局部變量類型推斷

局部變量類型推斷可以說是Java 10中最值得注意的特性,這是Java語言開發人員為了簡化Java應用程式的編寫而采取的又一步,如下圖所示。

這個新功能将為Java增加一些文法糖 - 簡化它并改善開發者體驗。新的文法将減少與編寫Java相關的冗長度,同時保持對靜态類型安全性的承諾。

局部變量類型推斷将引入”var”關鍵字,也就是你可以随意定義變量而不必指定變量的類型,如:

List <String> list = new ArrayList <String>(); 
Stream <String> stream = getStream();      

将被下面這個新文法所取代:

var list = new ArrayList <String>(); 
var stream = getStream();      

看完是不是有點JS的即視感???越來越像JS了嗎?!雖然類型推斷在Java中不是一個新概念,但在局部變量中确是很大的一個改進。

說到類型推斷,從JDK 5引進泛型,到JDK 7的”<>”操作符允許不綁定類型而初始化List,再到JDK 8的Lambda表達式,再到現在JDK 10的局部變量類型推斷,Java類型推斷正大刀闊斧的向前發展。

// 該運算符允許在沒有綁定ArrayList <>的類型的情況下初始化清單
List <String> list = new LinkedList <>();      

局部變量類型推薦僅限于如下使用場景:

局部變量初始化

for循環内部索引變量

傳統的for循環聲明變量

Java官方表示,它不能用于以下幾個地方:

方法參數

構造函數參數

方法傳回類型

字段

捕獲表達式(或任何其他類型的變量聲明)

2.GC改進和其他内務管理

JDK 10中有2個JEP專門用于改進目前的垃圾收集元素。

第一個垃圾收集器接口是(JEP 304),它将引入一個純淨的垃圾收集器接口,以幫助改進不同垃圾收集器的源代碼隔離。

預定用于Java 10的第二個JEP是針對G1的并行完全GC(JEP 307),其重點在于通過完全GC并行來改善G1最壞情況的等待時間。G1是Java 9中的預設GC,并且此JEP的目标是使G1平行。

3.線程本地握手(JEP 312)

JDK 10将引入一種線上程上執行回調的新方法,是以這将會很友善能停止單個線程而不是停止全部線程或者一個都不停。

4.備用記憶體裝置上的堆配置設定(JEP 316)

允許HotSpot VM在備用記憶體裝置上配置設定Java對象堆記憶體,該記憶體裝置将由使用者指定。

5.其他Unicode語言 - 标記擴充(JEP 314)

目标是增強java.util.Locale及其相關的API,以便實作語言标記文法的其他Unicode擴充(BCP 47)。

6.基于Java的實驗性JIT編譯器(JEP 317)

Oracle希望将其Java JIT編譯器Graal用作Linux / x64平台上的實驗性JIT編譯器。

7.根證書(JEP 319)

這個的目标是在Oracle的Java SE中開源根證書。

8.根證書認證程式(CA)

這将使OpenJDK對開發人員更具吸引力,它還旨在減少OpenJDK和Oracle JDK建構之間的差異。

9.将JDK生态整合到單個存儲庫中(JEP 296)

此JEP的主要目标是執行一些記憶體管理,并将JDK生态的衆多存儲庫組合到一個存儲庫中。

10.删除Native-Header生成工具(javah)(JEP 313)

從JDK中移除了javah工具,這個很簡單并且很重要。

嘗鮮

就像所有其他JDK版本一樣,Oracle已經釋出了一個Java 10初始候選版本,Java開發者可以下載下傳此版本用來測試新功能。如果你對Java 10抱有期待想提早嘗試,那麼現在就開始吧!

嘗鮮位址:

http://openjdk.java.net/projects/jdk/10/

最後的感悟

對于第一點新特性來說确實是一個大的跨越,其他特性或多或少都能帶給開發者福音。但最終Java 10會是什麼樣,或許還會增加更多實用性的新功能或者優化,我們還得期待!

現在要做的就是,趕緊熟悉JDK 8,現在已經是很多網際網路企業标配了。如果還在使用JDK4-7,那真的是要OUT了。。

在不久的将來,Java 10将徹底改變你寫代碼的方式!