日前,Oracle宣佈正式發佈最新的長期支持(LTS)版本Java 25,這是備受歡迎的編程語言和開發平台的全新版本。Java 25 (Oracle JDK 25) 提供了數千項改進,不僅可顯著提高開發人員的工作效率,還增強了平台的性能、穩定性和安全性,以幫助企業加快業務增長。
本文將深入解析Java 25包含的新特性及其對Java開發者的意義,以及最新的 Java LTS 版本如何影響整個Java生態系統。
Java 25是什麼?
Java 25是JDK的最新長期支持(LTS)版本,於2025年9月正式發佈。Java 25包含了18項提議的永久性、預覽性、孵化性和實驗性功能。
什麼是 JEP?它為何重要?
JEP是“JDK增強提案”的簡寫。它是一種規範化的方法,用於為Java語言添加初步、預覽或永久的新特性。
Java 25 中有四種不同類型的 JEP:
- 實驗版JEP: 主要是虛擬機(VM)層面特性的早期版本,可能不完整、不穩定或存在風險。使用時需通過特定的標誌來啓用。Java 25 中的JFR CPU時間分析(JEP 509)即屬於此類JEP。
- 孵化版JEP: 一種在工具和 API 尚未定稿時就能讓開發者使用它們的方式,這些工具和 API 可能會在未來版本中最終定稿或被永久移除。孵化版JEP是當前測試新功能的有效方法,但若用於生產環境,需要自行承擔風險。在Java 25中,Vector API(JEP 508,第10個孵化版本)是唯一的孵化版JEP。
- 預覽版JEP: 指設計、規範和實施已經完成但尚未永久化的特性,這意味着它們可能會在未來的版本中被更改或刪除。預覽版 JEP 也必須特別啓用才能使用。Java 25 包括以下的預覽特性:加密對象的PEM編碼(JEP 470)、穩定值(JEP 502)、結構化併發(JEP 505,第5次預覽)以及模式匹配、nstanceof和switch中的原始類型(JEP 507,第3次預覽)
- 永久版JEP: 這並非Oracle的官方稱謂,而是指那些在之前的JDK版本出現過,並已根據用户反饋進行改進的JEP。由於Java 25是LTS版本,因此包含大量的永久版JEP。
Java 25 的關鍵特性
Java 25增加了一系列新特性,旨在使語言更具表現力、更現代、更靈活且性能更強。
該版本引入了靈活構造函數體、緊湊源文件等實用特性,有助於減少冗餘代碼,使語法更加現代化。擴展的模式匹配和 AOT 方法分析則提升了代碼的清晰度與運行效率。模塊導入聲明則讓大型代碼庫的組織和維護變得更加簡單。
這些變化表明,Java正在積極演進,以滿足現代開發需求,而不僅僅是追逐潮流。這些改進將產生顯著影響:開發者的生產力將有所提升,他們將減少編寫重複模版代碼的時間,專注於解決實際問題;同時,應用程序的性能也將更高、更易於維護。
總體而言,Java 25是一次重大進步,確保了Java語言在當今快速發展的技術環境中,依然保持相關性和競爭力。接下來,我們一起來看看其中值得關注的5個新特性。
靈活構造函數體(JEP 513)
Flexible Constructor Bodies(JEP 513)
該特性曾在Java 22、23和24中進行過預覽,現已成為Java 25的永久特性。靈活的構造函數體允許你在調用 super( ) 或 this( ) 之前編寫代碼,並放寬了對final字段初始化時機和方式的限制。
這意味着你不再需要為了遵守嚴格的構造函數流程規則而重構代碼,並顯著提升代碼的可讀性和可維護性。這尤其適用於在超類構造前進行條件初始化或驗證邏輯的場景。
publicclassCustomer {
final UUID customerId;
final String email;
publicCustomer(String email){
// Validate email format before object creation
if (!isValidEmail(email)) thrownew ValidationException("Invalid email format");
super();
//rest of code
}
}
模式匹配中的原始類型(JEP 507)
Primitive Types in Patterns (JEP 507)
在Java 25中,模式匹配現在支持所有原始類型(如int、long、double),而此前僅限於引用類型。這一改進統一了Java的模式匹配模型,使開發者能夠在所有數據類型中更高效地使用instanceof和switch。
這一增強在不犧牲性能的前提下,讓代碼更加簡潔,對於從事分析、金融或流數據處理等性能關鍵領域的開發者尤為有利。
示例:
switch (x) {
caseint i -> System.out.println("Int value: " + i);
casedouble d -> System.out.println("Double value: " + d);
}
緊湊源文件與實例main方法(JEP 512)
Compact Source Files and Instance Main Methods(JEP 512)
Java 25 簡化了源文件結構:允許頂層類聲明不使用public修飾符,默認導入常用的java.base包,允許將main方法聲明為實例方法,並使用簡化的控制枱I/O。
這些改動使得 Java 對初學者、腳本編寫者和工具開發者更加友好。這一特性也有助於加快原型的構建,使得創建小型程序或測試驅動程序的難度更小,同時不犧牲Java的結構或可讀性。
示例:
classHello {
voidmain(){
System.out.println("Hello from an instance main!");
}
}
模塊導入聲明(JEP 511)
Module Import Declarations (JEP 511)
在 Java 25 中,你現在可以使用 import module 來明確導入命名模塊,使依賴關係直接可見,而不必隱藏在 module-info.java 中。在源文件中聲明模塊的使用情況,有助於簡化維護、重構甚至靜態分析過程。
這一變化對於插件架構、SDK以及基於JPMS(Java平台模塊系統)構建的應用程序尤為有用。
示例:
importmodule com.company.order; //Single module import
publicclassOrderController {
// All exported types from order module available
OrderService orderService;
OrderValidator validator;
// etc.
}
提前(AOT)方法分析(JEP 515)
Ahead-of-Time (AOT) Method Profiling (JEP 515)
這一特性通過預先分析方法行為,並複用這些數據來優化JIT編譯性能。可以根據預先記錄的使用模式對方法進行優化,從而顯著縮短預熱時間。
對於短期的雲應用、微服務或無服務器功能而言,這意味着更快的冷啓動速度和更可預測的運行時性能。此外,它也為生產工作負載(其中啓動時間直接影響 SLA 或成本)進行更一致的調優打開了大門。
Java 25包含哪些JEP?
Java 25 提議的完整JEP列表如下:
- 470:PEM Encodings of Cryptographic Objects (Preview) – 加密對象的 PEM 編碼(預覽)
- 502:Stable Values (Preview) – 穩定值(預覽)
- 503:Remove the 32-bit x86 Port – 移除32位x86端口
- 505:Structured Concurrency (Fifth Preview) – 結構化併發(第5次預覽)
- 506:Scoped Values – 作用域值
- 507:Primitive Types in Patterns, instanceof, and switch (Third Preview) – 模式匹配、instanceof和switch中的原始類型(第3次預覽)
- 508:Vector API (Tenth Incubator) – 向量 API(第10次孵化)
- 509:JFR CPU-Time Profiling (Experimental) – JFR CPU時間分析(實驗版)
- 510:Key Derivation Function API – 密鑰派生函數 API
- 511:Module Import Declarations – 模塊導入聲明
- 512:Compact Source Files and Instance Main Methods – 緊湊源文件與實例main方法
- 513:Flexible Constructor Bodies – 靈活構造函數體
- 514:Ahead-of-Time Command-Line Ergonomics – 提前編譯命令行易用性改進
- 515:Ahead-of-Time Method Profiling – 提前方法分析
- 518:JFR Cooperative Sampling – JFR協作式採樣
- 519:Compact Object Headers – 緊湊對象頭
- 520:JFR Method Timing & Tracing – JFR方法計時與追蹤
- 521:Generational Shenandoah – 分代Shenandoah垃圾回收器
為何要升級到 Java 25?
Oracle表示將為Java 25提供長達至少8年的長期支持服務,這使得Java 25成為生產環境的穩定之選。它繼承了以往版本的創新成果,同時引入了多項提升開發效率和應用性能的新能力。
無論你是經驗豐富的 Java 開發者,還是剛剛入門的新手,Java 25 都能滿足你的需求:初學者可以享受更簡潔的語法,專業開發者則能利用更強大的高級 API。此次更新充分體現了 Java持續進化的生命力。
總結
Java 25 帶來了眾多新特性,極大地促進了更快速、更高效的 Java 開發。由於它是長期支持版本,整個Java社區的開發工具也將會迅速跟進,以提供對Java 25的支持。
Perforce JRebel 一直是最快支持 Java LTS 版本的工具之一( JRebel的支持預計於10月發佈)。使用JRebel,還能進一步節省時間——它能夠消除耗時的重建和重新部署過程,讓你的開發流程更加順暢。
關於Perforce JRebel
Perforce JRebel是一款Java開發效率工具,旨在幫助java開發者更快地編寫更好的應用程序。JRebel可即時重新加載對代碼的修改,無需重啓或重新部署應用程序,就能讓開發者即時看到代碼更改的效果,從而縮短開發、調試和測試周期,大大提升開發效率。
JRebel支持多種IDE,包括IntelliJ IDEA、Eclipse、VS Code、NetBeans等,並支持廣泛的Java應用服務器、框架和構建工具,能夠輕鬆融入現有的開發環境。
Perforce中國授權合作伙伴——龍智:
官網:www.shdsd.com
電話:400-666-7732
郵箱:marketing@shdsd.com