Java 9 –终极功能列表
這篇文章將針對即將到來的Java 9版本進行更新,新增功能 ( 最新更新:2014年 9月9日 )
OpenJDK開發正在加快速度:2014年3月Java 8發布之后,我們預計將進入2年的發布周期。 據報道,Java 9將于2016年發布,并且已經發布了針對該版本的早期JEP(JDK增強提案)列表。 此外,一些JSR(Java規范請求)已經在開發中,并且我們還添加了一些可能包含的其他功能的提示。
旗艦功能包括Jigsaw項目,顯著的性能改進和人們期待已久的API,包括:流程API更新,作為java.util一部分的JSON和一個資金處理API。 對于那些想掌握最新技術的人, 這里已經提供了 JDK 9早期訪問版本。
在本文中,我們將繼續圍繞Java 9的主要新功能及其最新內容進行更新。 因此,請繼續關注其他更新!
目錄
接受的功能
1. Project Jigsaw –模塊化源代碼
Jigsaw項目的目標是使Java模塊化并將JRE分解為可互操作的組件,這是Java 9最受關注的功能之一。此JEP是邁向Jigsaw的4步中的第一步 ,不會改變JRE的實際結構和JDK。 此步驟的目的是將JDK源代碼重組為模塊,增強構建系統以編譯模塊,并在構建時強制執行模塊邊界。 該項目最初是為Java 8設計的,但此后被推遲,并重新定位到Java 9。
完成后,將允許創建按比例縮小的運行時Jar(rt.jar),以針對項目實際需要的組件進行自定義。 JDK 7和JDK 8 rt.jar具有約20,000個類,它們屬于JDK,即使其中的許多類并未真正用于特定環境中(盡管Java 8 緊湊型概要文件功能中包含部分解決方案)。 其背后的動機是使Java易于擴展到小型計算設備(物聯網),提高安全性和性能,并使開發人員更容易構建和維護庫。
關于JEP 201的更多信息
2.處理API更新
到目前為止,使用Java控制和管理操作系統進程的能力有限。 例如,為了做一些簡單的事情,例如今天獲得流程PID,您將需要訪問本機代碼或使用某種解決方法。 不僅如此,每個平臺還需要不同的實現方式,以確保獲得正確的結果。
在Java 9中,期望用于檢索Linux PID的代碼現在看起來像這樣:
public static void main(String[] args) throws Exception {Process proc = Runtime.getRuntime().exec(new String[]{ "/bin/sh", "-c", "echo $PPID" });if (proc.waitFor() == 0){InputStream in = proc.getInputStream();int available = in.available();byte[] outputBytes = new byte[available];in.read(outputBytes);String pid = new String(outputBytes);System.out.println("Your pid is " + pid);} }要變成這樣(也支持所有操作系統):
System.out.println("Your pid is " + Process.getCurrentPid());該更新將擴展Java與操作系統交互的能力:處理PID,進程名稱和狀態的新直接方法,以及枚舉JVM和進程等的能力。
關于JEP 102的更多信息
3.輕量級JSON API
當前,有一些替代方法可用于處理Java中的JSON,此API的獨特之處在于它將成為語言的一部分,是輕量級的,并且將使用Java 8的新功能。它將直接通過java.util傳遞(與JSR 353不同)使用外部軟件包或其他替代方法 )。
**代碼樣本即將推出!
關于JEP 198的更多信息
4.貨幣和貨幣API
在Java 8中引入了新的Date and Time API之后,Java 9帶來了一個新的官方API,用于表示,傳輸和執行Money和Currency的綜合計算。 要了解有關該項目的更多信息,可以在Github上訪問JavaMoney。 代碼和用法示例已在此處提供。 以下是一些要點:
Money amt1 = Money.of(10.1234556123456789, "USD"); // Money is a BigDecimal FastMoney amt2 = FastMoney.of(123456789, "USD"); // FastMoney is up to 5 decimal places Money total = amt1.add(amt2);新的貨幣類型:Money和FastMoney
MonetaryAmountFormat germanFormat = MonetaryFormats.getAmountFormat( Locale.GERMANY);System.out.println(germanFormat.format(monetaryAmount)); // 1.202,12 USD根據不同國家格式化貨幣
關于JSR 354的更多信息
5.改善競爭性鎖定
鎖爭用是許多多線程Java應用程序的性能瓶頸。 增強建議旨在改善Java對象監視器的性能,這些性能由不同的基準測試得出。 這些測試之一是Volano 。 它模擬了具有大量線程數和客戶端連接的聊天服務器,其中許多服務器試圖訪問相同的資源并模擬重型現實應用程序。
這些壓力測試將JVM推到極限,并嘗試確定它們可以實現的最大吞吐量,通常以每秒消息數為單位。 該JEP雄心勃勃的成功指標是對22個不同基準的重大改進。 如果成功,這些性能改進將在Java 9中推出。
關于JEP 143的更多信息
6.分段代碼緩存
Java 9的另一個性能改進來自JIT編譯器角度。 快速執行某些代碼區時,VM會將其編譯為本地代碼并將其存儲在代碼緩存中。 此更新旨在將代碼緩存分段到已編譯代碼的不同區域,以提高編譯器的性能。
而不是單個區域,代碼緩存將根據代碼在緩存中的生命周期分為三部分:
- 永久保留在緩存中的代碼(JVM內部/非方法代碼)
- 壽命短(配置文件代碼,特定于某些條件)
- 潛在的長壽命(非配置文件代碼)
分割將允許進行一些性能改進。 例如,方法清除程序將能夠跳過非方法代碼并更快地執行操作。
關于JEP 197的更多信息
7. Smart Java編譯,第二階段
Smart Java編譯工具或sjavac最初是在JEP 139上開發的 ,目的是通過在所有內核上運行javac編譯器來提高JDK的構建速度。 借助JEP 199,它進入了第二階段,將在第二階段進行改進和推廣,以便默認情況下可以使用它并構建JDK以外的其他項目。
關于JEP 199的更多信息
還有什么期望?
8. HTTP 2客戶端
HTTP 2.0尚未作為標準發布,但是它將很快提交以供最終審查,并且有望在Java 9發行之前完成。JEP 110將為Java定義并實現一個新的HTTP客戶端,它將取代HttpURLConnection,并實現HTTP 2.0和websockets。 它尚未作為公認的JEP發布,但針對Java 9,我們希望將其包含在內。
HTTP 2.0 RFC的正式發布日期當前定為2015年2月,以Google的SPDY算法為基礎。 SPDY在HTTP 1.1上已顯示出極大的速度改進,范圍在11.81%到47.7%之間,并且其實現已存在于大多數現代瀏覽器中。
關于JEP 110的更多信息
9. Kulla項目– Java中的REPL
最近宣布的Java 9不太可能出現,但可能會在2015年4月設定目標集成日期,從而按時完成。如今,還沒有“原生” Java方式實現REPL(讀-評估-打印-循環)。 意思是,如果您要運行幾行Java來快速地自行檢查它們,則必須將其全部包裝在單獨的項目或方法中。 流行的IDE以及其他解決方案(如Java REPL)都有REPL附加組件,但到目前為止,尚無官方方法可以這樣做– Project Kulla可能是答案。
有關庫拉計劃的更多信息
獎勵:新功能從何而來?
JEP和JSR通常不會突然出現,這是將它們結合在一起的結構:
- 組 –在廣泛的主題或特定代碼體系方面具有共同利益的個人和組織。 安全,網絡,Swing和HotSpot是一些示例。
- 項目 –產生大量代碼,文檔或其他努力的工作。 必須由至少一個團體贊助。 最近的示例是Lambda項目,Jigsaw項目和Sumatra項目。
- JDK增強建議 ( JEP )–允許在需要進一步探索時在JCP之前或與之并行地非正式地推廣新規范。 接受的JEP成為JDK路線圖的一部分,并分配一個版本號。
- Java Specification Request ( JSR )–該功能的實際規范在此階段發生,可以通過組/項目,JEP或來自單個JCP(Java Community Process)成員來進行。 通常會為每個Java版本打開一個傘式JSR,而Java 9尚未實現。社區的各個成員也可以提出新的Java規范請求。
翻譯自: https://www.javacodegeeks.com/2014/09/java-9-the-ultimate-feature-list.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java 9 –终极功能列表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 太阳花的寓意和花语是什么 太阳花的寓意和
- 下一篇: 计划Java EE 7批处理作业