JavaRush /Java Blog /Random-TW /2022 年 Java 趨勢:JDK 18 和 19、Project Loom 和 Data mesh

2022 年 Java 趨勢:JDK 18 和 19、Project Loom 和 Data mesh

在 Random-TW 群組發布
嗯,2022 年已經開始了。當大多數人還在喝著香檳和 Olivier 過新年的時候,我們將談論 Java 世界的趨勢。也許這會幫助你分析你的職業生涯,學習新技術,或是製定來年的發展計畫。 2022 年 Java 趨勢:JDK 18 和 19、Project Loom 和 Data mesh - 1Java 語言專家兼講師 Andrey Rodionov 以及 EPAM 的解決方案架構師和 Devoxx 烏克蘭專案委員會負責人 Oleg Tsal-Tsalko 談到了 2022 年和不久的將來 Java 的前景。

2022年Java的前景如何?

2022 年 Java 趨勢:JDK 18 和 19、Project Loom 和 Data mesh - 2今年我們預計會發布接下來的兩個版本:JDK 18(三月)和 JDK 19(九月)。對於 JDK 18 中的大多數 Java 開發人員來說,潛在有趣的事情可能包括:
  • 內建簡單Web伺服器,不支援servlet容器,可用於快速原型設計和測試,類似Python、Ruby、PHP中的類似迷你Web伺服器。
  • 模式匹配不斷改進。
至於 JDK 19,已經有一個 Early-Access Build,但目前還沒有計劃包含哪些內容的正式清單。我相信 JDK 19 至少會包含 Project Loom 的第一個穩定原型,該原型的規範草案最近已經出現,其最新版本基於 JDK 19。我們將在下面更詳細地討論 Project Loom。

對於哪些領域,Java 仍然是唯一的解決方案?在哪些領域它更可取?

安德烈羅季奧諾夫:

幸運的是,我們不能說在任何領域都沒有 Java 的替代品,但我們可以將 Java 視為開發企業應用程式、後端和微服務的黃金手段。另外值得注意的是,來自不同供應商(Oracle 除外)的不同 JDK 發行版的數量不斷增加:Amazon、Microsoft、Alibaba、Red Hat、Bellsoft(由聖彼得堡 Oracle 開發中心的人員創建)等。完整的發行版集可在此處取得。 2022 年 Java 趨勢:JDK 18 和 19、Project Loom 和 Data mesh - 3總是有替代方案,但 Java 在企業開發的後端找到了最大的用途。大多數大公司選擇 Java 來建立大型且複雜的系統。原因是相同的:市場上的開發人員和專業知識的數量、龐大的生態系統和強大的 JVM 平台。

與 Java 相比,其他 jvm 語言(尤其是 Kotlin)的前景如何?

安德烈羅季奧諾夫:

要了解哪些 JVM 語言流行,只需打開 Spring、Micronaut、Vert.x 的文檔,看看給出了哪些語言的程式碼範例 - Java 和 Kotlin 會很常見。不能說有大量項目轉向 Kotlin,但它在後端的受歡迎程度持續增長,許多框架正在嘗試將其納入其生態系統。至於Scala,正在發布新版本,並進一步積極用於ML、資料處理以及函數式程式設計範式更方便的領域。

奧列格‧察爾-察爾科:

其他 JVM 語言也很有吸引力,現在一個專案使用多種程式語言是很正常的。在我看來,新奇的JVM語言無法取代Java的原因如下:
  • 它們並沒有酷到每個人都會接受並轉而使用它們。
  • 它們與Java在同一段中使用。
  • Java 一點一點地汲取了其他語言的精華,並變得更好。

Java 品質會因為發布間隔縮短而下降嗎?

奧列格‧察爾-察爾科:

我想不是。至少現在我可以從頻繁的發布中發現更多積極的事情。我們發現新的酷炫功能出現得更加頻繁。現在,您不必等待 5 年才能看到該語言中出現新內容。當然,現在您不應該期待像 Java 8 這樣宏偉的版本,因為現在的功能都以小迭代的形式出現。

新版本的 Java 中是否有對開發人員特別重要的功能?

奧列格‧察爾-察爾科:

Java 的最新版本引入了一些有趣的功能,例如模式匹配、密封類別和記錄。我建議看看他們的能力。當然,最重要和最令人期待的功能是在 Project Loom 和 Project Valhalla 中規劃的,但我認為這些專案中的功能也將逐步發布。

Spring框架:它會繼續擴展其生態系統以滿足多樣化的需求嗎?

安德烈羅季奧諾夫:

至於 Spring Framework,其開發重點是支援 Spring Cloud 的各種功能以及將 Spring Boot 編譯為本機二進位檔案的能力 - Spring Native 項目,計劃在未來成為 Spring Core 的一部分。在這方面,由於積極使用反射和動態程式碼生成,Spring 落後於 Micronaut 和 Quarkus。關於 Spring Framework 6,我建議您觀看報告Spring 6 and Beyond What's new in Spring Framework 6? 來自小丑會議(來自 Oleg Dokuka 和 Alexey Nesterov)。關鍵是過渡到 JDK 17、透過 setter 放棄 XML 配置和 Autowire、進一步開發 Kotlin 支援和 Spring Fu 專案。

奧列格‧察爾-察爾科:

Spring作為時下最受歡迎的Java FW,並不想放棄手掌。我相信開發團隊會盡力進行Spring開發。春天填補了越來越多的空白。例如,Spring 透過其 Project Reactor 在響應式串流/響應式程式設計領域做了很多工作。現在他們正在推廣 RSoket 協議,看起來也很有前途。

告訴我們 Loom 專案:它的用途是什麼,它解決什麼問題?

安德烈羅季奧諾夫:

Loom 專案可能是最有趣的創新,它可能成為整個 JVM 平台和 JVM 之上的所有語言的新結構轉變。Loom 專案可能不會對普通開發人員產生太大影響,但它肯定會影響整個生態系統、程式庫、框架和其他使用多執行緒的 JVM 語言。Project Loom 引入了一種新的線程抽象 - 虛擬線程(類似於協程)。如果先前 Java 線程直接綁定到作業系統 (OS) 線程,而 Java 中新線程的創建會導致新作業系統線程的創建,那麼使用虛擬線程,這種一對一的關係就會被打破。建立新的虛擬線程時,不會建立新的作業系統線程,並將重複使用其中一個所謂的載體線程(類似於作業系統線程池)來執行直接計算。因此,多個虛擬執行緒可以在一個作業系統執行緒之上運行。對於運算任務來說,這種虛擬執行緒模型並沒有提供任何優勢,反而會降低運算速度,但對於阻塞操作,例如處理 HTTP 請求、等待來自資料庫或微服務的回應,這種模型將是顯著優勢。事實是,在目前的執行緒模型中,Java 執行緒上的阻塞/等待會導致作業系統執行緒空閒——這會浪費資源,並且需要建立更多作業系統執行緒。在虛擬線程模型中,在虛擬線程上阻塞/等待將導致該虛擬線程所在的承載線程被釋放,並在其上運行另一個虛擬線程。這樣,作業系統執行緒將得到更優化的使用,並且執行類似任務所需的執行緒更少。因此,程式庫、框架和 JVM 語言的製造商必須針對虛擬執行緒調整其程式碼。因此,對他們來說,一個大的重寫即將到來:)除了虛擬線程模型之外,還計劃引入一個新的API來簡化線程編排——所謂的結構化並發。例如,現在,結構化並發在 Kotlin 協程和 Scala ZIO 中得到了積極的應用。不幸的是,JDK 版本甚至 Project Loom 的發布年份仍然未知。當被問及發布日期時,Java 平台的首席架構師 Brian Goetz 用一句富有哲理的話回答:“它將準備就緒,什麼時候準備好。” 因此,我們正在等待並可以嘗試Loom 專案的實驗版本

奧列格‧察爾-察爾科:

Loom 是一個大型傘式項目,OpenJDK 和 Oracle 團隊正在其中致力於 Java 和 JVM 的並發創新:虛擬執行緒、纖程和延續。這些功能很可能會逐步發布。目前只有早期訪問版本支援虛擬線程。具體來說虛擬線程,其主要目標是透過使用數百萬個與常規平台線程具有相同語義的輕量級線程來簡化 Java 中的多線程開發模型。在底層,這些執行緒將在 ForkJoinPool 內部進行管理,並由平台執行緒重複使用。

在全球趨勢——微服務、雲端架構、區塊鏈、人工智慧——的世界裡,對Java的發展有何預測?

安德烈羅季奧諾夫:

如果我們談論全球趨勢,它們並沒有太大變化。和以前一樣,主要趨勢仍然是 Kubernetes 及其周圍的服務網格形式的基礎設施。資料網格作為管理分散式資料來源和儲存的一種抽像 也越來越受歡迎。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION