Back to blog

Tổng Quan Java 25: Có Gì Mới Trong JDK 25

javajava-25jdkopenjdkbackend
Tổng Quan Java 25: Có Gì Mới Trong JDK 25

Java 25 đạt trạng thái phát hành chính thức vào ngày 16 tháng 9 năm 2025, và đây là một trong những bản phát hành Java quan trọng nhất trong vài năm gần đây vì nó là bản Long-Term Support (LTS) tiếp theo sau Java 21.

Nếu bạn đang dùng Java 17 hoặc Java 21, Java 25 là phiên bản rất đáng để theo dõi. Nó mang đến sự kết hợp mạnh giữa:

  • cải tiến ngôn ngữ để viết code gọn hơn,
  • các cập nhật về concurrency tiếp tục mở rộng Project Loom,
  • tối ưu JVM và runtime,
  • quan sát hệ thống tốt hơn với JFR,
  • bổ sung về bảo mật và mật mã,
  • cùng với một số preview feature và thay đổi loại bỏ đáng chú ý.

Bài viết này là bài mở đầu trong series Java 25. Ở đây chúng ta sẽ nhìn ở mức tổng quan, sau đó đi sâu hơn trong các bài tiếp theo.

Vì Sao Java 25 Quan Trọng

Java hiện phát hành mỗi sáu tháng, nhưng không phải bản nào cũng có cùng mức tác động trong thực tế. Java 25 quan trọng vì nhiều đội ngũ thích chuẩn hóa hệ thống production trên các bản LTS.

Điều đó có nghĩa là Java 25 nhiều khả năng sẽ trở thành đích nâng cấp lớn tiếp theo cho:

  • ứng dụng backend doanh nghiệp,
  • service dùng Spring Boot,
  • hệ thống xử lý dữ liệu,
  • nền tảng nội bộ cho developer,
  • và các team đang ở Java 17 hoặc mới chuyển sang Java 21.

Từ góc độ lập kế hoạch, Java 25 không chỉ là "một bản phát hành tính năng nữa". Đây là bản phát hành mà nhiều tổ chức sẽ đánh giá để sử dụng trong production trong vài năm tới.

Bộ Tính Năng Chính Thức Của Java 25

Theo trang phát hành chính thức của OpenJDK JDK 25, Java 25 bao gồm các JEP quan trọng sau:

  • JEP 502: Stable Values (Preview)
  • JEP 505: Structured Concurrency (Fifth Preview)
  • JEP 506: Scoped Values
  • JEP 507: Primitive Types in Patterns, instanceof, and switch (Third Preview)
  • JEP 508: Vector API (Tenth Incubator)
  • JEP 509: JFR CPU-Time Profiling (Experimental)
  • JEP 510: Key Derivation Function API
  • JEP 511: Module Import Declarations
  • JEP 512: Compact Source Files and Instance Main Methods
  • JEP 513: Flexible Constructor Bodies
  • JEP 514: Ahead-of-Time Command-Line Ergonomics
  • JEP 515: Ahead-of-Time Method Profiling
  • JEP 518: JFR Cooperative Sampling
  • JEP 519: Compact Object Headers
  • JEP 520: JFR Method Timing & Tracing
  • JEP 521: Generational Shenandoah
  • JEP 503: Remove the 32-bit x86 Port
  • JEP 470: PEM Encodings of Cryptographic Objects (Preview)

Nguồn chính thức:

Những Chủ Đề Lớn Trong Java 25

Thay vì đọc JDK 25 như một danh sách JEP rời rạc, cách hữu ích hơn là gom chúng thành vài chủ đề chính.

1. Cải Tiến Ngôn Ngữ Tiếp Tục Giảm Boilerplate

Java 25 tiếp tục xu hướng dài hạn là làm cho code Java dễ diễn đạt hơn và bớt rườm rà hơn.

Module Import Declarations

JEP 511 giới thiệu module import declarations, cho phép đơn giản hóa file source bằng cách import toàn bộ các package được export từ một module.

Điều này đặc biệt thú vị cho:

  • ví dụ minh họa,
  • script,
  • tài liệu giảng dạy,
  • prototype,
  • và các ứng dụng nhỏ.

Nó sẽ không thay thế hoàn toàn import thông thường ở mọi nơi, nhưng nó cho thấy nền tảng vẫn đang tiếp tục giảm bớt ceremony.

Compact Source Files and Instance Main Methods

JEP 512 tiếp tục cải thiện trải nghiệm cho người mới học và các trường hợp scripting. Nó cho phép file source Java gọn hơn và hỗ trợ instance main methods, giúp giảm lượng mã thiết lập cho các chương trình nhỏ.

Tính năng này quan trọng vì Java từ lâu thường bị chê là quá verbose cho những chương trình rất nhỏ. JDK 25 tiếp tục làm mềm điểm yếu đó.

Flexible Constructor Bodies

JEP 513 giúp constructor linh hoạt hơn bằng cách nới lỏng một số ràng buộc cũ trong phần thân constructor.

Với developer viết code hằng ngày, giá trị thực tế khá rõ: code trong constructor dễ tổ chức hơn, đặc biệt khi cần validation, setup và delegation với control flow rõ ràng hơn.

Primitive Types in Patterns, instanceof, and switch

JEP 507 vẫn đang ở trạng thái preview, nhưng nó cho thấy ngôn ngữ đang đi về đâu. Pattern matching đã trở thành một trong những hướng phát triển quan trọng nhất của Java hiện đại, và việc mở rộng nó sang primitive types giúp luồng điều khiển dựa trên pattern trở nên nhất quán hơn.

Vì tính năng này chưa hoàn thiện, các team production nên xem nó là thứ để thử nghiệm hơn là áp thành coding style mặc định ngay lập tức.

2. Loom Tiếp Tục Tiến Lên Với Các Primitive Concurrency Tốt Hơn

Java 25 tiếp tục củng cố mô hình concurrency hiện đại đã được giới thiệu trong các bản phát hành gần đây.

Scoped Values Trở Thành Tính Năng Chính Thức

JEP 506 đưa Scoped Values trở thành tính năng chính thức. Đây là thay đổi rất đáng chú ý cho các ứng dụng concurrent vì scoped values cung cấp một cách thay thế an toàn và dễ dự đoán hơn cho một số trường hợp dùng ThreadLocal.

Scoped values đặc biệt hữu ích khi:

  • dữ liệu cần đi xuyên suốt một call tree,
  • giá trị nên được gắn với phạm vi của một task,
  • và bạn muốn tránh mutation ngoài ý muốn hoặc rò rỉ trạng thái mà ThreadLocal có thể gây ra.

Nếu bạn xây dựng các hệ thống backend theo kiểu request-driven, đây là một trong những bổ sung thực tế quan trọng nhất của Java 25.

Structured Concurrency Tiếp Tục Trưởng Thành

JEP 505 mang đến preview lần thứ năm của Structured Concurrency. Mục tiêu chính là làm cho concurrent code gần hơn với block-structured code thông thường.

Thay vì khởi tạo các subtask rồi tự quản lý vòng đời của chúng ở khắp nơi, structured concurrency xem một nhóm tác vụ liên quan như một đơn vị công việc duy nhất. Điều đó giúp việc cancellation, failure handling và suy luận về luồng concurrent dễ hơn nhiều.

Việc nó vẫn còn là preview có nghĩa là API chưa chốt cuối cùng, nhưng đây vẫn là một trong những tính năng quan trọng nhất về mặt định hướng trong hệ sinh thái Java.

3. JVM Trở Nên Gọn Hơn Và Thông Minh Hơn

Phần lớn giá trị của Java 25 nằm ở bên dưới ứng dụng.

Compact Object Headers

JEP 519 giới thiệu Compact Object Headers, nhằm giảm chi phí bộ nhớ cho mỗi object. Với các workload nhiều object, điều này có thể cải thiện hiệu quả dùng bộ nhớ và có khả năng tăng độ thân thiện với cache.

Đây là kiểu cải tiến JVM mà team ứng dụng có thể hưởng lợi mà không cần thay đổi business logic.

Cải Tiến Về Startup Và Profiling Ahead-of-Time

Java 25 bao gồm:

  • JEP 514: Ahead-of-Time Command-Line Ergonomics
  • JEP 515: Ahead-of-Time Method Profiling

Các thay đổi này tiếp tục đẩy JVM theo hướng startup và runtime optimization thông minh hơn, tự động hơn. Ở mức khái quát, JVM đang học nhiều hơn từ các lần chạy trước và tận dụng thông tin đó sớm hơn.

Nhóm cải tiến này đặc biệt phù hợp với:

  • công cụ CLI,
  • service sống ngắn,
  • workload serverless,
  • và các ứng dụng mà startup behavior rất quan trọng.

4. GC Và Khả Năng Quan Sát Runtime Được Cải Thiện Rõ Rệt

Hai trong số những cải tiến vận hành đáng chú ý nhất của Java 25 nằm ở garbage collection và monitoring.

Generational Shenandoah

JEP 521 bổ sung Generational Shenandoah. Shenandoah vốn đã nổi tiếng với pause time thấp, và thiết kế generational giúp nó xử lý object trẻ và object già hiệu quả hơn.

Điều này không có nghĩa là mọi team nên chuyển collector ngay lập tức, nhưng nó mang lại thêm một lựa chọn nghiêm túc cho các team quan tâm đến workload có độ trễ thấp.

JFR Tốt Hơn Rõ Rệt

Java Flight Recorder nhận thêm nhiều cải tiến:

  • JEP 509: JFR CPU-Time Profiling (Experimental)
  • JEP 518: JFR Cooperative Sampling
  • JEP 520: JFR Method Timing & Tracing

Gộp lại, những thay đổi này khiến JFR càng có giá trị hơn cho việc chẩn đoán production và phân tích hiệu năng.

Điều này quan trọng vì tối ưu hiệu năng Java hiện đại ngày càng xoay quanh:

  • đo hành vi production thực tế,
  • giảm overhead khi profiling,
  • và tăng khả năng quan sát trước khi sự cố biến thành outage.

5. Bảo Mật Và Mật Mã Tiếp Tục Tiến Lên

Java 25 cũng bổ sung các khả năng đáng giá liên quan đến bảo mật.

Key Derivation Function API

JEP 510 giới thiệu Key Derivation Function API. Điều này quan trọng vì key derivation an toàn là một building block nền tảng trong các hệ thống mật mã hiện đại.

Thay vì mỗi team phải dựa vào cách làm riêng hoặc lựa chọn thư viện thiếu nhất quán, nền tảng giờ đây cung cấp một API chuẩn cho nhóm nhu cầu này.

PEM Encodings of Cryptographic Objects

JEP 470 là một preview feature bổ sung hỗ trợ cho PEM encodings of cryptographic objects.

PEM là định dạng rất phổ biến trong hệ thống thực tế, đặc biệt khi làm việc với:

  • certificate,
  • key,
  • các thành phần TLS,
  • và tích hợp với các công cụ bảo mật bên ngoài.

Đây là kiểu tính năng không quá nổi bật trên release notes, nhưng lại có thể giảm rất nhiều friction trong công việc bảo mật thực tế.

6. Preview Và Incubator Feature Vẫn Rất Đáng Theo Dõi

Một số Java developer bỏ qua preview và incubator feature vì chúng chưa final. Điều đó hoàn toàn dễ hiểu, nhưng vẫn nên theo dõi vì chúng cho thấy định hướng chiến lược của Java.

Trong Java 25, các tính năng chưa final đáng chú ý gồm:

  • Stable Values (Preview)
  • Structured Concurrency (Preview)
  • Primitive Types in Patterns... (Preview)
  • PEM Encodings... (Preview)
  • Vector API (Incubator)

Bạn nên xem chúng như tín hiệu về hướng đi tiếp theo của Java.

Ví dụ:

  • Stable Values cho thấy hướng đi tới lazy initialization và shared state an toàn, rõ ràng hơn.
  • Vector API tiếp tục nỗ lực đưa tối ưu kiểu SIMD vào một API Java chuẩn.
  • Structured Concurrency cho thấy nền tảng vẫn xem task-scoped concurrency là hướng phát triển cốt lõi.

Preview feature không phải thứ để mang vào production một cách mù quáng, nhưng chắc chắn rất đáng học.

7. Cũng Có Những Thay Đổi Dọn Dẹp Nền Tảng

Java 25 không chỉ thêm tính năng mới.

JEP 503 loại bỏ 32-bit x86 port, tiếp tục quá trình dọn dẹp các nền tảng cũ không còn xứng đáng với chi phí bảo trì.

Với đa số team hiện đại, điều này sẽ không thay đổi gì. Nhưng nó vẫn nhắc chúng ta rằng tiến hóa của nền tảng cũng bao gồm việc bỏ lại các gánh nặng cũ.

Developer Nên Tập Trung Vào Điều Gì Trước

Nếu bạn chưa muốn đọc toàn bộ từng JEP ngay bây giờ, hãy ưu tiên các phần sau:

  1. Scoped Values cho thiết kế backend hiện đại và ứng dụng concurrent.
  2. Structured Concurrency để hiểu hướng đi của API concurrency trong Java.
  3. Flexible Constructor Bodies, Module Import Declarations và Compact Source Files cho trải nghiệm ngôn ngữ.
  4. Compact Object Headers và Generational Shenandoah cho các team quan tâm đến hiệu năng.
  5. JFR improvements cho profiling và chẩn đoán production.
  6. Key Derivation Function API cho các hệ thống nhạy cảm về bảo mật.

Như vậy là bạn đã có một lượt nhìn đầu tiên đủ thực tế mà không bị chìm trong chi tiết.

Có Nên Nâng Cấp Lên Java 25 Không?

Với nhiều team, câu trả lời là có, nhưng cần có kế hoạch.

Java 25 đặc biệt hấp dẫn nếu bạn:

  • đang ở Java 17 và lên kế hoạch chuyển sang bản LTS tiếp theo,
  • đang ở Java 21 và muốn đánh giá xem bản LTS mới hơn có đủ giá trị vận hành hay không,
  • đang đầu tư vào virtual threads và concurrency pattern hiện đại,
  • hoặc muốn cải thiện khả năng quan sát và hiệu năng mà không phải viết lại phần lớn hệ thống.

Điểm cần lưu ý vẫn quen thuộc: preview và incubator feature rất thú vị, nhưng khi nâng cấp production thì vẫn nên ưu tiên các phần ổn định của bản phát hành trước.

Kết Luận

Java 25 là một bản LTS mạnh vì nó cân bằng. Nó cải thiện trải nghiệm viết code, tiếp tục đẩy concurrency đi lên, tăng cường observability và tiếp tục tối ưu JVM cho workload hiện đại.

Đây không phải là bản phát hành được định nghĩa bởi một headline feature duy nhất. Thay vào đó, nó được định nghĩa bởi việc nền tảng trưởng thành hơn ở nhiều lớp cùng lúc.

Những bản phát hành như vậy thường rất bền trong production.

Trong bài tiếp theo, chúng ta sẽ đi sâu hơn vào những thay đổi ngôn ngữ quan trọng trong Java 25, bao gồm phần nào đã sẵn sàng cho production, phần nào vẫn là preview, và điều gì thực sự ảnh hưởng đến coding style hằng ngày.

📬 Đăng ký nhận bản tin

Nhận những bài viết mới nhất qua email mỗi tuần. Không spam, hủy đăng ký bất cứ lúc nào.

Chúng tôi tôn trọng quyền riêng tư của bạn. Hủy đăng ký bất cứ lúc nào.

💬 Comments

Đăng nhập để bình luận

Chúng tôi sẽ không đăng bất cứ điều gì mà không có sự cho phép của bạn.