40天後Java 11將推出的功能有哪些,它們與Java 9和10的不同之處是什麽?
Java 10可能是塊中的新手,但現在已經是時候談論Java 11. Oracle向更快的發布周期邁進意味著更多的功能和能力正在以前所未有的速度發展。
雖然我們還有6個月的時間才會發布Java 11,但我們已經可以看到我們的方式,看看我們如何適應。我們還可以了解是否應該升級到Java 9,10,或者我們是否應該等待Java 11。
讓我們來看看。
Java 11中有什麽新東西?
Java 11的發布日期定於2018年9月,並且該存儲庫目前已開放以進行錯誤修復,以及更多JDK增強建議(JEP)的提議將添加到即將發布的版本中。雖然該列表不是最終的,但已經有4個提案計劃用於下一個版本:
- Lambda參數的本地變量語法(JEP 323)
在聲明隱式類型lambda表達式的形式參數時,此JEP將允許使用var。這裏的目標是將局部變量聲明的語法與隱式類型的lambda表達式中的形式參數聲明的語法對齊。這樣,而不是寫這個:
(x,y) – > x.process(y)
我們可以寫:
(var x,var y) – > x.process(y)
這擴展了Java 10 Local Variable Type Inference ,它引入了一種新的語法,可以減少與編寫Java相關的冗長,同時保持對靜態類型安全的承諾。
換句話說,您將能夠聲明變量而無需指定關聯的類型。與上面顯示的示例類似,Java 10將提供以下簡單的聲明:
var list = new ArrayList <String>();
var stream = getStream();
這將取代現有的,如下所示:
List <String> list = new ArrayList <String>();
Stream <String> stream = getStream();
- Epsilon:一個任意低開銷的垃圾收集器(JEP 318)
這個JEP的官方名稱是“No-Op垃圾收集器”,其目的是開發一個處理內存分配的垃圾收集器,而不實現任何實際的內存回收機制。
3.動態類文件常量(JEP 309)
此JEP希望擴展Java類文件格式以支持新的常量池形式CONSTANT_Dynamic。這裏的目標是通過創建一個可以使用用戶提供的行為進行參數化的新的常量池形式來降低創建新形式的可實現類文件常量的成本和中斷。
4.刪除Java EE和CORBA模塊(JEP 320)
在Java SE 9中Java EE和CORBA模塊的折舊之後,這些模塊將從整個Java SE平臺和SDK中刪除。這更像是一個清理過程,跟進了Java 9中開始的過程。
Java 11將包含的不僅僅是功能
雖然這個功能列表仍然不是最終的,我們期望在接下來的幾個月中添加更多的JEP,但Java 11會有一些額外的東西。Java 11將帶來的主要亮點之一是該平臺的長期支持。為了理解它的含義,讓我們回到2017年9月,當時 甲骨文宣布它將轉向 他們的Java SE產品 的長期支持(LTS)模型 。
到目前為止,Oracle已嘗試將同一版本用於兩種不同的需求。一方面,公司希望專註於創新,盡快發布功能,而不是每次發布都等待2 – 3年。另一方面,他們還希望為需要他們可以信賴的產品的用戶提供穩定性。
與其他領先公司類似,甲骨文希望快速發展。轉向更快的發布周期將使公司能夠進行創新,並為團隊和公司提供更快的移動能力。
但是,快速發布版本的責任是為用戶保持平臺可靠性。甲骨文表示,該公司很難為即將推出的所有版本提供LTS。這就是為什麽公司決定每3年提供一次LTS(或每6個版本提供一次)。
向更快的發布周期邁進是大型公司正在采用的工作流程,希望以更快的速度進行創新,但需要確保在此過程中不會損害其可靠性。我們已經介紹了工程團隊如何通過改進他們的CI / CD流程,編寫代碼以及在將代碼部署到生產後監控應用程序來彌合兩者之間的差距。
“長期支持”是什麽意思?
Oracle的LTS支持主要關註兩個要點。第一個是Premier支持,它從一般可用日期起為您的Oracle數據庫,Oracle融合中間件和Oracle應用程序提供維護和軟件升級五年。
第二個產品稱為“持續支持”,其中包括使用Oracle軟件時的維護,訪問Oracle在線支持工具,升級權限,預先存在的修復以及技術支持專家的幫助。這些要素對企業公司至關重要,甚至對其中一些公司至關重要。
如果您問為什麽Oracle決定在3年的差距,那是因為它是Java版本之間的平均發布時間(或更確切地說,它曾經是平均發布時間)。
事實上,Java 11將提供LTS,將提供此支持的下一個版本將在2021年9月發布,目前代號為21.9。如果您仍在使用舊版本的Java,請不要擔心,因為Oracle聲稱對Java 6,7和8的支持將繼續用於當前的計劃。
更新: 如Azul Systems副首席技術官 Simon Ritter 在評論部分所述,“LTS更新僅適用於擁有Oracle商業支持合同的客戶。JDK 11的公開更新與JDK 9以後的所有其他版本的更新將在下一個版本發布六個月後停止。“
Java 10似乎將是最後一個免費的Oracle JDK。正如Nicolai指出的那樣,用戶要麽付費才能使用未來的JDK版本,要麽依賴OpenJDK:
最後的想法
Java 9的發布標誌著Java平臺演變的開始。起初,我們得到了Jigsaw項目,看到 了我們思考和構建 大規模應用程序 的方式的革命 。Java 10即將引入本地變量類型推斷並幫助向Java添加一些語法糖,Java 11帶有上述所有功能,以及對平臺的長期支持。
這並不一定意味著您應該等待Java 11,但這確實意味著Java和Oracle正在改變他們的調整。公司正在投資其每一個優勢 – 創新和穩定 – 這一事實是令人敬畏的新聞,我們毫無疑問會有更多好消息傳來。
40天後Java 11將推出的功能有哪些,它們與Java 9和10的不同之處是什麽?