Java 9、10、11,哪個(gè)才是 Java 程序員的本命?
之前,我們?cè)凇禞ava 10無(wú)跳票發(fā)布,主推的新特性引爭(zhēng)議》的文章中做了一個(gè)小的調(diào)查,主要是調(diào)查現(xiàn)在的Java程序員都在使用哪個(gè)版本的Java?根據(jù)調(diào)查結(jié)果,絕大部分的程序員都在使用Java 8。
無(wú)獨(dú)有偶,國(guó)外的一家媒體也做了同樣的調(diào)查,但奇妙的是雙方調(diào)查結(jié)果大致相同,國(guó)外的Java程序員也是更多的在使用Java 8?,F(xiàn)在Java 9和10都已經(jīng)發(fā)布了,根據(jù)Oracle給出的半年一個(gè)版本的約定,沒(méi)有多久Java 11也將和大家見(jiàn)面。那么問(wèn)題來(lái)了,現(xiàn)在使用Java 8的程序員更愿意遷移到這三個(gè)版本的哪個(gè)版本呢?
Java 9
Java 9雖然是三個(gè)備選選項(xiàng)中發(fā)布最早的版本,并且OpenJDK董事會(huì)主席兼Oracle Java平臺(tái)小組開(kāi)發(fā)副總裁Georges Saab也親自下場(chǎng)背書(shū),“Java 9的增長(zhǎng)速度雖然不如Java 8,但是與其他版本并無(wú)差異。”但是,程序員卻止不住對(duì)遷移到Java 9的吐槽。點(diǎn)擊查看Java9新特性實(shí)戰(zhàn)。
有程序員表示,Java 9中模塊系統(tǒng)的一個(gè)問(wèn)題是一個(gè)包必須完全包含在一個(gè)模塊中。雖然這聽(tīng)起來(lái)是個(gè)好主意,但實(shí)際上在客戶(hù)端和服務(wù)端的代碼中都會(huì)有相同的包,這打破了模塊系統(tǒng),需要程序員進(jìn)行重大重構(gòu)。同時(shí)也有程序員表示常用的庫(kù)和工具沒(méi)有完全支持Java 9。
Java 10
Java 10是一個(gè)剛剛發(fā)布的版本,現(xiàn)在要求使用這個(gè)版本的用戶(hù)達(dá)到多少,確實(shí)還有些不到時(shí)候。關(guān)于Java 10的新功能,可以參考《Java 10無(wú)跳票發(fā)布,主推的新特性引爭(zhēng)議》,關(guān)于Java 10是否值得遷移,可以參考《Java 10值得遷移嗎?聽(tīng)聽(tīng)技術(shù)大牛的建議》。點(diǎn)擊查看Java10新特性實(shí)戰(zhàn)。
Java 11
Java 11雖然還沒(méi)有發(fā)布,但是Java 11的路線(xiàn)圖已被相關(guān)媒體透露出來(lái)。Java 11將會(huì)增加一些新功能,更重要的是它將移除一些功能。
據(jù)悉JDK 11 只設(shè)置了三個(gè)新功能,包括Epsilon 垃圾收集器被稱(chēng)為“no-op”收集器,將處理內(nèi)存分配而不實(shí)施任何實(shí)際的內(nèi)存回收機(jī)制; lambda 參數(shù)的局部變量語(yǔ)法,應(yīng)該將隱式類(lèi)型表達(dá)式中的形式參數(shù)聲明的語(yǔ)法與局部變量聲明的語(yǔ)法對(duì)齊; Java類(lèi)文件格式將被擴(kuò)展為支持一個(gè)新的常量池形式CONSTANT_Dynamic.點(diǎn)擊查看Java11新特性詳解。
那么Java 11將要摒棄哪些東西呢?Java EE 和 CORBA 模塊在 Java SE 9 中已棄用,Java 11意圖將它們刪除。Oracle 表示在 Java SE 或 JDK 中不再需要借助第三方站點(diǎn)提供的獨(dú)立版本的 Java EE 技術(shù)。