9 月 21 日,大家期待已久的 Java 9 終于正式發布了,本文與大家一起快速回顧一下 IntelliJ IDEA 中 Java 9 的支持,并了解 IntelliJ IDEA 2017.3 中針對 Java 9 的推出的新功能。
提及 Java 9,大的功能莫過于 Jigsaw 項目下的核心 Java 平臺模塊化系統(JPMS,Java Platform Module System) 。 Jigsaw 本身是一項很有野心的項目,它的目標是改進 Java SE 平臺,使其可以適應不同大小的計算設備;改進其安全性,可維護性,提高性能;簡化各種類庫和大型應用的開發和維護,包括 JDK 本身的模塊化。
IntelliJ IDEA 支持具有許多功能的 Java 平臺模塊化系統。
首先開發者可以輕松地為 IntelliJ IDEA 模塊創建一個 module-info.java 文件:
這將給出模塊聲明的基本結構,包括與 IntelliJ IDEA 模塊名稱相匹配的模塊名稱。 當開發者在 module-info.java 文件中編碼時,代碼會高亮顯示。
倘若開發者從帶有 module-info.java 文件的模塊中運行代碼,IntelliJ IDEA 將自動使用 -p 參數(模塊路徑)而不是 -classpath。
IntelliJ IDEA 也針對將代碼遷移到 JPMS 時出現的常見問題提供了快速修復功能,比如添加“require”指令。
或自動檢測重復的指令及其他可以修復的錯誤。
開發者還可以通過 IntelliJ IDEA 創建模塊圖,以可視化正在使用的模塊。 此外,也能看到 JDK 模塊、自己創建的模塊等等,如下圖所示。
當開發者開始使用模塊化時,這些圖表就能起到很好的作用,其可以幫助開發者了解正在使用哪些模塊以及模塊的架構,甚至可以直接從圖中定位到具體的模塊代碼。
IntelliJ IDEA 也會幫助將代碼遷移到 Java 9。例如,用戶可以高亮顯示使用的動態模塊。
這意味著開發者可以看到一些并非是 Java 9 模塊的內容。 這很重要,因為這些動態模塊可能會隨時間而改變。
了解有關 IntelliJ IDEA 中模塊的基本支持的更多信息,以及模塊圖和其他快速修復。
Java 9 引入了許多小的 API 更改,使開發人員更輕松。 其中之一是簡化具有固定內容集合的創建。在 IntelliJ IDEA 中可以查找到改功能。
如下圖所示,高亮的代碼即是使用 Java 9 的工廠方法簡化之后的效果。
Java 9 提供了 JVM 的提示。 具體來說,如果開發人員的代碼在循環中等待,那么就可以使用 Thread.onSpinWait 來讓運行時知道。 IntelliJ IDEA 查找代碼,添加這個功能可能會使用到。
在 Java 9 有一個看似較小的功能,但可以讓開發人員更容易了解其代碼的影響,這個就是增強的棄用。 現在,@Deprecated 標簽支持兩個有用的新屬性:“since”和“forRemoval”。 在 IntelliJ IDEA 2017.3 中進行了新的檢查,高亮顯示使用已被標記為“forRemoval”的代碼。
如果已經打開此檢查并將其設置為“警告”(這是默認值),那么被標記為“forRemoval”的內容,在 IntelliJ IDEA 將以紅色杠顯示此方法,而不是以往的黑色。
Java 9 首次提供 Java 的 REPL (Read-Eval-Print-Loop,讀入-求值-打印-循環)功能,稱為JShell 工具。它的目的在于以即時結果和反饋的形式,簡化原型的實現并幫助我們探索語言在編碼時的可選項。用戶可以從命令行或 IntelliJ IDEA 中的終端運行 REPL。 此外,IntelliJ IDEA 2017.3 還具有一個基本控制臺,可從 IDE 內部使用 JShell,類似于 Groovy Console。
開發者可以使用控制臺來嘗試代碼片段,也可以選擇運行此代碼的模塊路徑。
該功能目前僅能在 2017.3 EAP 中可用。
Java 9 中有許多新功能,包括對 Streams API 的更改、可選的附加功能、接口上的私有方法等等。
如果項目 SDK 設置為 Java 9,那么這些新方法在編碼期間都可以使用了。
另外,還可以使用 IntelliJ IDEA 常見功能來挖掘一些 Java 9 的功能。 比如,在生成文檔時通過添加標志來生成 HTML 5 Javadoc。
開發者甚至可以使用 IntelliJ IDEA 創建 Multi-Release JAR 文件。 這也許是建立 Gradle、Maven 或 Ant 等工具的佳選擇,至于這些,未來可能在 IntelliJ IDEA 博客中更新。
后,Oracle 宣布今后會按照每六個月一次的節奏進行發布!這意味著 Java 9 是后一次“keystone”特性驅動的版本發布。Oracle還表示,Java 8 目前仍可繼續使用,它的支持時間將延續到 2022 年。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。