Oracle JDK tính phí ư? Temurin, Corretto lại là gì? Đừng đau đầu vì chọn JDK nào nữa, một bài viết nói rõ ngọn ngành các bản phát hành Java, tiện thể giải quyết luôn vấn đề lỗi khi triển khai môi trường Java.
Một lập trình viên chăm chỉ, vừa git clone
một dự án mới về, chuẩn bị thể hiện tài năng, thì ngay lập tức bị thực tế dội cho một gáo nước lạnh — Unsupported major.minor version
. Thôi xong, phiên bản JDK không đúng. Được rồi, chuyển phiên bản vậy? Kết quả là terminal lạnh lùng phán một câu: 'JAVA_HOME' not found
.
Có phải thấy tăng xông rồi không? Hễ ai đã viết Java thì chắc chắn đều từng vật lộn với cái môi trường chết tiệt này. Đặc biệt là bây giờ, OpenJDK, Oracle JDK, Temurin, Corretto, GraalVM... một đống cái tên bày ra trước mắt, trông cái nào cũng na ná nhau, chẳng phân biệt được.
Đừng hoảng, hôm nay chúng ta sẽ làm rõ vấn đề này trong một bài viết.
Các phiên bản JDK khác nhau ở điểm nào?
Muốn biết chọn thế nào, trước hết phải hiểu rõ từng loại JDK là gì.
Nguồn gốc của mọi thứ: OpenJDK
Hãy bắt đầu với khởi nguồn của tất cả — OpenJDK. Đây chính là bản triển khai tham chiếu mã nguồn mở chính thức của Java SE. Có thể hiểu nó như "rượu nền" trong thế giới Java, là nguyên liệu cốt lõi, cổ điển và tinh khiết nhất. Hầu hết các JDK mà chúng ta sắp nói tới đều lấy mã nguồn của OpenJDK, tự đóng gói lại, rồi thêm thắt các thành phần phụ trợ khác để tạo thành một ly "cocktail" của riêng mình. Hãy nhớ, nó có dòng máu thuần khiết nhất, đó là điểm mấu chốt.
Hai ông lớn: Oracle JDK vs Temurin
-
Oracle JDK: Đây là sản phẩm từ chính "cha đẻ" của Java, Oracle, và từng là lựa chọn mặc định. Nhưng bây giờ thì khác rồi, kể từ Java 11, nếu muốn sử dụng phiên bản LTS của nó trong môi trường production, bạn sẽ phải trả tiền để đăng ký.
-
Temurin (Adoptium): Có thể coi đây là bản thay thế "bình dân" do cộng đồng phát triển. Được dẫn dắt bởi Eclipse Foundation, với sự hậu thuẫn của những ông lớn như IBM, Red Hat. Nó được xây dựng từ mã nguồn OpenJDK, đã trải qua các bài kiểm tra nghiêm ngặt của bộ TCK (Technology Compatibility Kit) để đảm bảo chất lượng và tính tương thích. Quan trọng nhất là nó hoàn toàn miễn phí và có cộng đồng hoạt động sôi nổi. Nếu bạn muốn một thứ có chức năng y hệt Oracle JDK mà không có rủi ro về giấy phép thương mại? Chọn nó thì không sai vào đâu được.
Phiên bản đặc biệt từ các nhà cung cấp đám mây: Amazon Corretto
Đây là bản phân phối OpenJDK mà Amazon sử dụng nội bộ, miễn phí và có hỗ trợ LTS. Nghe nói nó đã được tối ưu hóa hiệu năng và sửa một số lỗi dành riêng cho môi trường đám mây. Nếu bạn là người dùng chuyên sâu của AWS, dùng nó có thể sẽ mang lại hiệu quả bất ngờ. Tương tự còn có Dragonwell của Alibaba, Microsoft Build of OpenJDK, tất cả đều đi theo hướng này.
Vài tay chơi chuyên nghiệp: Azul Zulu, BellSoft Liberica
Hai cái tên này cũng là những bản phân phối OpenJDK nổi tiếng trong giới. JVM của Azul có tiếng tăm rất tốt trong các kịch bản yêu cầu độ trễ thấp và bộ nhớ lớn; còn Liberica của BellSoft thì hỗ trợ tốt trên các thiết bị nhúng. Cả hai đều có phiên bản miễn phí và phiên bản thương mại cần trả phí để được hỗ trợ.
Công nghệ đột phá: GraalVM
Cuối cùng là một "kẻ dị biệt". GraalVM không chỉ là một JDK, nó là một máy ảo đa ngôn ngữ hiệu năng cao. Điểm lợi hại nhất của nó là khả năng biên dịch thẳng mã Java thành một file thực thi native, chạy mà không cần đến JVM.
Nhờ đó, ứng dụng Java có thể khởi động nhanh như C++, và chiếm dụng bộ nhớ ít như Go. Trong các kịch bản như microservices, serverless, nơi mà tốc độ khởi động tính bằng giây là cực kỳ quan trọng, đây quả là một đòn tấn công áp đảo. Dĩ nhiên, nó cũng có một số hạn chế về tương thích và rào cản kỹ thuật hơi cao, phù hợp cho những người tiên phong thích vọc vạch.
Bảng tóm tắt
Một bức ảnh để hiểu rõ, không dài dòng:
Bản phân phối | Đơn vị bảo trì | Giấy phép | Đặc điểm chính | Kịch bản đề xuất |
---|---|---|---|---|
OpenJDK | Oracle & Cộng đồng | GPLv2 with CPE | Bản tham chiếu chính thức của Java, nền tảng của mọi bản phân phối | Nền tảng cho mọi kịch bản |
Oracle JDK | Oracle | Oracle No-Fee (Miễn phí cho dev/test) / BCL (Tính phí thương mại) | Hỗ trợ trực tiếp từ chính hãng, hiệu năng ổn định | Doanh nghiệp cần hỗ trợ thương mại từ Oracle và có ngân sách |
Temurin | Eclipse Adoptium (hỗ trợ bởi IBM, Red Hat, v.v.) | GPLv2 with CPE | Cộng đồng phát triển, kiểm tra TCK nghiêm ngặt, chất lượng cao, hoàn toàn miễn phí | Lựa chọn hàng đầu cho đại đa số lập trình viên và doanh nghiệp |
Corretto | Amazon | GPLv2 with CPE | Amazon sử dụng nội bộ, tối ưu cho đám mây, hỗ trợ LTS, miễn phí | Người dùng AWS, ứng dụng cloud-native |
GraalVM | Oracle Labs | GPLv2 with CPE (Bản cộng đồng) / Thương mại | Biên dịch AOT thành Native Image, hiệu năng cao, hỗ trợ đa ngôn ngữ | Microservices, Serverless, công cụ CLI, các kịch bản theo đuổi hiệu năng đỉnh cao |
Nói nãy giờ, rốt cuộc nên chọn cái nào?
Vậy chúng ta nên chọn thế nào? Thực ra rất đơn giản.
-
Công ty có điều kiện, dự án quan trọng, cần hỗ trợ cấp thương mại để yên tâm? Hãy cân nhắc Oracle JDK hoặc phiên bản thương mại của Azul.
-
Bạn đang làm về microservices, cloud-native, có yêu cầu cực đoan về hiệu năng và tài nguyên? Vậy thì phải thử GraalVM.
-
Còn đối với đại đa số chúng ta, ví dụ như lập trình viên thông thường, sinh viên, hoặc các doanh nghiệp vừa và nhỏ muốn theo đuổi mã nguồn mở, lựa chọn tốt nhất chính là: OpenJDK hoặc các bản dựng miễn phí chất lượng cao của nó (như Temurin, Corretto).
OpenJDK là JDK có tính tương thích tốt nhất, cộng đồng lớn nhất, hoàn toàn miễn phí và không có rủi ro bị ràng buộc bởi bất kỳ nhà cung cấp nào. Hiện nay, tất cả các framework và công cụ chính đều xoay quanh nó, đi theo số đông thì chắc chắn không sai.
Lựa chọn thì dễ, nhưng cài đặt Java thủ công mới thực sự đau khổ
Ok, quyết định dùng OpenJDK rồi. Sau đó thì sao? Sau đó là sự đau khổ bắt đầu, triển khai thủ công môi trường Java.
Đầu tiên là phải lục lọi cả buổi trên trang chủ, giữa vô số các tổ hợp số phiên bản, hệ điều hành, kiến trúc CPU (x86, ARM64) để tìm ra gói nén mình cần. Tải về, giải nén vào một xó xỉnh nào đó.
Điều kinh khủng nhất là cấu hình biến môi trường Java. Mở file .zshrc
hay .bash_profile
, cẩn thận thêm JAVA_HOME
và PATH
vào, chỉ cần thừa một dấu cách, thiếu một dấu hai chấm là có thể khiến cả buổi chiều của bạn coi như công cốc. Đây chắc chắn là khu vực dễ xảy ra sai sót nhất khi triển khai môi trường Java.
Đó chưa phải là thảm nhất. Thảm nhất là khi bạn có ba dự án trong tay, một cái cần Java 8, một cái cần Java 17, và cái mới nhất lại cần Java 25...
Chúc mừng, bạn đã mở khóa thành công độ khó ác mộng của việc quản lý nhiều phiên bản Java. Mỗi lần chuyển dự án lại phải đi sửa biến môi trường, sửa xong lại phải source
một cái, mở nhiều terminal quá rồi tự quên luôn phiên bản hiện tại là gì, đúng là "ô nhiễm tinh thần".
Có cách nào nhàn hơn không? Có đấy
Hãy dùng công cụ thần thánh cho người lười: ServBay.
Đây là một công cụ môi trường tích hợp cục bộ dành riêng cho lập trình viên. Đừng nghĩ nó chỉ quản lý được Python, Go, PHP, Node.js, khi nó quản lý Java mới thực sự gọi là tinh tế và thấu đáo.
Đầu tiên, cài đặt Java chỉ bằng một cú nhấp chuột.
ServBay đã tích hợp sẵn các phiên bản LTS phổ biến của OpenJDK (8, 11, 17, 21, v.v.). Bạn chỉ cần vào bảng điều khiển của nó, muốn cài bản nào thì nhấn vào bản đó, hoàn toàn không cần tự mình tìm kiếm, tải về hay giải nén.
Thứ hai, chuyển đổi phiên bản không còn là ác mộng.
ServBay đã giải quyết triệt để vấn đề này. Bạn có thể cài đặt nhiều phiên bản Java cùng lúc mà chúng không ảnh hưởng đến nhau. Muốn chuyển phiên bản mặc định toàn cục? Chỉ cần nhấp một cái trên bảng điều khiển, hoặc gõ một dòng lệnh trong terminal là xong. Không bao giờ phải vật lộn với .zshrc
nữa.
Cuối cùng, môi trường sạch sẽ, quản lý thuận tiện.
ServBay tạo ra một môi trường sandbox độc lập cho tất cả các dịch vụ, sẽ không làm hệ thống của bạn trở nên lộn xộn. Mọi thao tác khởi động, dừng dịch vụ đều được quản lý tập trung tại một nơi, vô cùng gọn gàng.
Kết luận
Nói cho cùng, công cụ sinh ra là để phục vụ chúng ta. Chúng ta là lập trình viên, nên dành thời gian cho những việc sáng tạo hơn, chứ không phải vật lộn với việc cấu hình môi trường.
Nếu bạn cũng đã quá mệt mỏi với những phiền phức này, tôi thực sự khuyên bạn nên thử ServBay. Nó không chỉ giúp bạn viết code nhanh hơn, mà còn có thể khiến công việc chuẩn bị trước khi viết code trở nên vô cùng thoải mái.