標籤:初始 java對象 安全 header ora 長度 linu 情境 情況
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將徹底改變你寫代碼的方式!
Java 10 的 10 個新特性,將徹底改變你寫代碼的方式!