1. 程式人生 > >Java並未走遠,未來已來

Java並未走遠,未來已來

在上一次 JavaOne 大會之後,首屆 Oracle CodeOne 大會最近於美國舊金山舉行。週一晚上主旨演講的頭條是“Java:未來已來(The Future of Java Is Today)”,其中包括:新的每半年釋出一次的 Java/JDK 的釋出節奏正按計劃進行;Oracle 和許多其他組織將繼續支援 Java 併為之做出貢獻;有幾個新的 OpenJDK 專案在探索提高生產力的語言功能,比如,原始字串字面量(raw String literals)、纖程(fiber)和 Continuation、外部函式和資料介面。

在 Java 平臺團隊軟體開發副總裁 Georges Saab 簡短的歡迎致辭後,第一個上臺演講的是 GitHub 的現場維護和支援服務(Field Services)副總裁 Matthew McCullough。他強調了 Java 平臺的開源參考實現 OpenJDK 的重要性,並討論了“Skara 專案”,該專案是官方 OpenJDK 上游 Mercurial 儲存庫基於 GitHub 原型的映象。

Skara 專案旨在研究用於 JDK 原始碼的原始碼管理和程式碼審查的備選項。McCullough 還談到,大多數“有重大影響力的軟體”都是全球協作開發的,並鼓勵觀眾參與開源軟體專案。為更好地說明這一目標,他還簡單演示了幾個 GitHub 的新功能。

值得一提的是,Skara 專案還處在早期階段,目前是獨立的,但和社群驅動的 AdoptOpenJDK 專案鬆散地保持一致。AdoptOpenJDK 專案也是上游 OpenJDK 儲存庫的映象,並提供所有最新的和未來的 JDK 版本的構建,目標是為 Java(包括最近釋出的 Java 11)的長期支援(Long Term Support,簡稱 LTS)版本提供四年的構建和最好的社群支援。為 AdoptOpenJDK 專案提供商業支援的有 IBM、Azul Systems,LJC、微軟、Ocado Technology 和 Packet。

Saab 重回臺上後,討論了“保留 Java 優點”的相關話題。Java 將繼續免費和開源,社群致力於提供平臺的完整性,並投資於開發人員生產力和相容性。在質量和安全上也持續地進行投入,並保持開放和透明的發展。

講到 Oracle 的貢獻時,Saab 展示了最近開源的幾個之前是商業 Java 平臺的功能:在 Java 10 中有應用類資料共享(Application Class Data Sharing,簡稱 ACDS);在 Java 11 中有ZGC 專案(用於幾千兆堆的低延遲 GC)、飛行記錄器和任務控制(用於診斷和監控)。

新的每半年一次的釋出計劃已經成功交付,它為 Java 平臺提供逐步改進,並使開發人員能夠更快地訪問到新功能,“不再有破壞性的主要版本”(如果計劃的功能錯過了釋出截止日期,那麼就放到下一次的釋出)。Saab 簡單提了提新的 LTS 版本和 Oracle 支援模式,關於這些,在社群內目前存在很多困惑(InfoQ 最近報道了與該主題相關的“Java 還是免費的”Java Champion 宣告)。

該主旨演講部分的結尾,是向 OpenJDK 社群中很多貢獻者的致謝感言,同時也提到了幾個 Oracle 資助的 Java 社群支援專案,包括Java Magazine、Java User Groups、Java Champions、jDuchess 專案、Oracle Academy Student Outreach以及Java Community Process(簡稱 JCP)。
Java並未走遠,未來已來

接下來演講的是 Oracle 的 Java 平臺團隊首席架構師 Mark Reinhold。演講一開始,他先提醒聽眾,遷移到新的 Java 模組系統(JEP 261)是個非常大的挑戰,因為需要重寫大量內部元件。但是,自從 Java 9 中釋出該功能以來,應用效果一直不錯,並且開始實現了收益。Reinhold 鼓勵每個 Java 開發人員都看看這個新功能,並給大家推薦了幾本入門書。

Java並未走遠,未來已來
新的模組化架構改進了平臺釋出節奏,並回應了 Saab 早先的評論,Reinhold 提到了 Java 10 和 Java 11 成功地按時交付,也提到了 LTS 釋出會帶來的影響(主要是跟 Oracle 提供的商業支援有關,儘管其他供應商和 AdoptOpenJDK 計劃也提供替代的構建和社群驅動以及商業支援模組)。

該部分主旨演講的核心資訊是“Java 仍然免費”,OracleJDK 和 OpenJDK 構建非常類似(尤其是首個每半年一次的 LTS 釋出,儘管構建可能在此日期後會出現分歧,這取決於會發布什麼安全性和錯誤補丁到上游 OpenJDK 儲存庫)。Reinhold 提到了“關於新發布模型的五大誤解”,其中包括錯誤地認為,非 LTS 釋出是實驗性的,如果維護的是不經常遷移的系統,那麼可以忽略非 LTS 的釋出。

他還討論了用最新的 Java 版本測試開源專案的社群工作,提到了兩個推特標籤:#WorksFineOnJDK9 和 #WorksLikeHeavenOnJDK11。強烈建議所有在使用 Java 9 或更高版本的開發人員升級到最新的版本,包括所有在使用的工具和依賴項。
Java並未走遠,未來已來

接著,Reinhold 換了一個話題,開始展望未來。目前,Java 12 / JDK 12 有 4 個與之相關的 JEP(到目前為止),包括(啟用命令列標誌)新switch 表示式的預覽和原始字串字面量,以及“一個 AArch64 埠,而非兩個”和預設的 CDS 存檔。“面對程式設計範例、應用領域、部署風格和硬體的不斷髮展”,幾個未來功能的重點放在了開發人員的生產力和程式效能上。

該主旨演講的最後部分重點介紹了 4 個 OpenJDK 的新專案。

Amber:“調整語言儀式的大小”,包括區域性變數型別推斷、無需轉義排序的原始字串字面量。
Loom:“Continuations 和纖程”,包括刪除舊的“無意義”或與執行緒有關的不良 API 方法,新增纖程,即“由 Java 虛擬機器管理的輕量級高效執行緒、讓開發人員能夠使用同樣簡單的抽象,但具有更好的效能和佔用更小的空間”。
Panama:非 Java 外部函式和資料介面,包括從 JVM(C、C++)呼叫本機函式和從 JVM 或 JVM 堆訪問本機資料
Valhalla:Value 型別和專用的泛型。
Reinhold 展示了一系列實時編碼演示,用的是最新(未釋出)Java 12 build,其中的示例可以從以上鍊接的各個專案網站上找到。

社群對該 Java 主題演講的反應總體上是積極的,Paul Bakker 表示“CodeOne!上的主旨演講很棒,Java 生態系統看起來比以往更好。”Chris Hegerty 評論道:“CodeOne!上的主旨演講很棒,尤其是 Mark Reinhold 講解技術的那部分”。