JRE là gì? - Giải thích về Java Runtime Environment

Bạn có biết rằng Java Development Kit (JDK), Java Virtual Machine (JVM) và Java Runtime Environment (JRE) tạo thành bộ ba quyền lực của nền tảng Java và Jakarta EE. Các thành phần này phối hợp với nhau để tạo điều kiện cho các lập trình viên xây dựng và chạy các chương trình Java. Trong bài viết này, hãy cùng TechWorks tìm hiểu về JRE - môi trường runtime cho Java.

Mục lục

JRE là gì?

jre là gì?

Một chương trình phần mềm cần được thực thi, và để làm điều đó, nó cần một môi trường để chạy. Trước đây, hầu hết phần mềm sử dụng hệ điều hành (operating system - OS) làm môi trường runtime. Chương trình chạy bên trong bất kỳ máy tính nào đều phụ thuộc trực tiếp vào các cài đặt của hệ điều hành để truy cập tài nguyên như bộ nhớ, ổ đĩa và mạng. 

Môi trường Runtime của Java (Java Runtime Environment - JRE) đã thay đổi tất cả, ít nhất là đối với các chương trình Java. Trong trường hợp của Java và các ngôn ngữ khác dựa trên JVM, JRE tạo ra một lớp trung gian giữa hệ điều hành và chương trình. JRE tải các file lớp (class files) và khởi động một máy ảo (JVM), đảm bảo việc truy cập vào bộ nhớ và các tài nguyên hệ thống khác dưới dạng nhất quán trên nhiều hệ điều hành khác nhau. Vậy JRE thực sự được định nghĩa là gì?

Java Runtime Environment (JRE) là một gói phần mềm cần thiết để các chương trình Java có thể chạy thành công. JRE bao gồm Java Virtual Machine (JVM), chịu trách nhiệm giải mã mã bytecode Java và thực thi các chương trình Java.

Ngoài việc cung cấp môi trường runtime, JRE còn bao gồm một bộ công cụ để đóng gói và triển khai các ứng dụng Java như Java Applet. Lợi ích của việc có một bộ công cụ đóng gói và triển khai trong JRE là giúp các nhà phát triển phân phối ứng dụng Java đến người dùng cuối dễ dàng hơn.

JRE tạo ra JVM như thế nào?

Chúng ta có thể xem phần mềm như một loạt các lớp nằm chồng lên phần cứng hệ thống. Mỗi lớp cung cấp các dịch vụ mà các lớp bên trên sẽ sử dụng và yêu cầu. Java Runtime Environment (JRE) tạo ra một JVM, là một lớp phần mềm chạy trên hệ điều hành của máy tính, cung cấp các dịch vụ đặc thù cho Java. Bạn có thể xem hình 1 để hình dung ra sự sắp xếp này.

hình 1. môi trường chạy java tạo ra một jvm.

Hình 1. Môi trường chạy Java tạo ra một JVM.

JRE giúp đơn giản hóa sự đa dạng của các hệ điều hành, đảm bảo các chương trình Java có thể chạy trên hầu hết các hệ điều hành mà không cần chỉnh sửa. JRE cũng cung cấp các dịch vụ bổ sung. Trong đó quản lý bộ nhớ tự động là một trong những dịch vụ quan trọng nhất, nó giúp lập trình viên không cần quản lý thủ công việc cấp phát và tái cấp phát bộ nhớ.

Nói ngắn gọn, JRE hoạt động như một dạng hệ điều hành "siêu cấp" dành cho Java, cùng với các ngôn ngữ khác chạy trên JVM như Scala và Groovy. Đây là một ví dụ điển hình của sự trừu tượng hóa, trừu tượng hóa hệ điều hành cơ bản thành một nền tảng nhất quán để chạy các ứng dụng Java.

JRE hoạt động với JVM như thế nào?

Máy ảo Java (JVM) là một hệ thống phần mềm chạy, chịu trách nhiệm thực thi các chương trình Java đang hoạt động. JRE là thành phần phần mềm lưu trữ trên ổ đĩa, giúp lấy mã Java đã biên dịch (được biên dịch bởi JDK), kết hợp với các thư viện cần thiết, và khởi động JVM để thực thi.

JRE chứa các thư viện và phần mềm mà các chương trình Java của bạn cần để chạy. Ví dụ, class loader của Java là một phần của JRE. Phần mềm quan trọng này tải mã Java đã biên dịch vào bộ nhớ và kết nối mã với các thư viện lớp Java phù hợp (quá trình này gọi là liên kết).

Trong sơ đồ phân lớp vừa được mô tả, JVM được tạo bởi JRE. Từ góc độ gói phần mềm, JRE chứa JVM, bạn có thể thấy trong Hình 2. JVM là một phần của JRE—đó là phần đang hoạt động, đang chạy mà JRE tạo ra để lưu trữ các chương trình. JRE lấy các tài sản tĩnh và chuyển chúng thành một JVM đang chạy, chứa đựng chương trình đang hoạt động.

hình 2. sơ đồ kiến trúc phân lớp cho thấy jre chứa jvm, class loader, và các thư viện lớp java.

Hình 2. Sơ đồ kiến trúc phân lớp cho thấy JRE chứa JVM, class loader, và các thư viện lớp Java.

Các thành phần của Java Runtime Environment 

Các thành phần chính của Java Runtime Environment (JRE) bao gồm:

Máy ảo Java (Java Virtual Machine - JVM) 

JVM là thành phần cốt lõi của JRE. Nó cung cấp một máy ảo trừu tượng để thực thi các chương trình Java. JVM chịu trách nhiệm thông dịch bytecode được tạo ra từ trình biên dịch Java thành ngôn ngữ máy và quản lý bộ nhớ. JVM cung cấp một lớp trừu tượng độc lập với nền tảng, cho phép các chương trình Java chạy trên bất kỳ hệ thống nào, bất kể phần cứng hoặc hệ điều hành.

Java Class Libraries

Các thư viện lớp Java là tập hợp các mô-đun mã được viết sẵn. Những mô-đun này có các tính năng đa dạng cho các chương trình Java, bao gồm các hàm tiêu chuẩn cho các tác vụ như nhập/xuất file, mạng và phát triển giao diện người dùng.

Java Runtime API

Java Runtime API đem lại một tập hợp các giao diện và lớp, tại đây, các nhà phát triển tương tác với JRE và truy cập các chức năng của nó. API này bao gồm các giao diện để quản lý thuộc tính hệ thống, làm việc với hệ thống tệp và truy cập tài nguyên mạng.

Công cụ triển khai Java

JRE chứa một số công cụ để đóng gói và triển khai các ứng dụng Java. Ví dụ, Java Web Start để các nhà phát triển phân phối ứng dụng Java dưới dạng các chương trình độc lập mà người dùng có thể khởi chạy từ một trang web. Java Applets là một tùy chọn triển khai khác, bạn có thể dùng nó để nhúng các chương trình Java trực tiếp vào trang web.

Các tính năng bảo mật

JRE có một môi trường runtime an toàn cho các chương trình Java với mô hình bảo mật tích hợp, ngăn chặn truy cập trái phép vào tài nguyên hệ thống và bảo vệ người dùng khỏi các mối đe dọa bảo mật tiềm ẩn. Sandbox của JVM là một lớp bảo vệ chống lại mã độc, ngăn chặn truy cập trái phép vào tài nguyên hệ thống và bảo vệ người dùng khỏi các mối đe dọa bảo mật.

Tầm quan trọng của JRE 

JRE là một phần quan trọng của ngôn ngữ lập trình Java. Nó đóng vai trò chính trong việc biến Java trở thành một trong những ngôn ngữ lập trình phổ biến và được sử dụng rộng rãi nhất trên thế giới. Dưới đây là một số lý do chính giải thích tầm quan trọng của JRE đối với Java.

Độc lập nền tảng

JRE đã giúp ngôn ngữ lập trình Java trở nên độc lập với nền tảng. Bất kể phần cứng hay hệ điều hành cơ bản nào, JRE biên dịch các chương trình Java thành bytecode, nghĩa là bạn có thể chạy các chương trình Java ở mọi nơi. Điều này khiến Java trở thành lựa chọn lý tưởng để phát triển các ứng dụng đa nền tảng, vì lập trình viên chỉ cần viết mã Java một lần và có thể chạy ở bất cứ đâu.

Bảo mật

JRE cung cấp một môi trường runtime an toàn cho các chương trình Java với các tính năng bảo mật tích hợp bảo vệ chống lại các mối đe dọa tiềm ẩn. JVM trong JRE tạo một lớp bảo vệ chống lại mã độc, ngăn chặn truy cập trái phép vào tài nguyên hệ thống và bảo vệ người dùng khỏi các mối đe dọa bảo mật.

Bộ thư viện và API phong phú

JRE bao gồm nhiều thư viện và API. Nhờ đó, các lập trình viên Java có vô số tính năng để xây dựng ứng dụng Java. Một số thư viện và API hữu ích nhất bao gồm:

  • Thư viện chuẩn Java (Java SE) : Java SE là tập hợp các thư viện và API sở hữu nhiều chức năng cho các nhà phát triển Java bao gồm mạng, I/O, xử lý đồng thời và bảo mật. Nó bao gồm các lớp thường dùng như String, Math và ArrayList.
  • Kết nối cơ sở dữ liệu Java (Java Database Connectivity - JDBC) : JDBC là một API Java. Dựa vào nó, các nhà phát triển tương tác với nhiều cơ sở dữ liệu khác nhau , bao gồm MySQL, Oracle và Microsoft SQL Server.
  • Java Servlet API : Java Servlet API là một tập hợp các lớp và giao diện để tạo các ứng dụng web trong Java. Các nhà phát triển tạo các trang web động và xử lý các yêu cầu và phản hồi HTTP. 

Dễ dàng triển khai

JRE chứa một số công cụ triển khai giúp đóng gói và phân phối các ứng dụng Java dễ dàng, chẳng hạn như Java Web Start và Java Applet. Các công cụ này hỗ trợ phân phối các ứng dụng Java dưới dạng các chương trình độc lập hoặc nhúng trực tiếp vào một trang web.

Cài đặt và sử dụng JRE

Mặc dù JRE có khía cạnh lý thuyết, trong thực tế, nó chỉ là một phần mềm được cài đặt trên máy tính, với mục đích chạy các chương trình Java của bạn. Là một lập trình viên, bạn sẽ chủ yếu làm việc với JDK và JVM, vì đây là các thành phần nền tảng mà bạn sử dụng để phát triển và chạy các chương trình Java. Còn với người dùng ứng dụng Java, họ sẽ chủ yếu sử dụng JRE để chạy các chương trình đó.

Java 9 đã tái cấu trúc nền tảng Java để JRE hiện chỉ khả dụng như một phần của JDK. Khi bạn muốn triển khai ứng dụng đến người dùng cuối, bạn có thể sử dụng JLink để tạo một gói JRE đi kèm với ứng dụng của mình. Một gói như vậy chứa tất cả các thành phần cần thiết để chạy chương trình. 

Để sử dụng, bạn có thể cài đặt JRE bên trong JDK. Hãy tải JDK phiên bản mới nhất cho hệ thống của bạn từ trang Java SE của Oracle. Đối với Windows và macOS, các trình cài đặt tự động sẽ xử lý các chi tiết như cài đặt đường dẫn (path). Trên Linux, một tùy chọn thuận tiện là sử dụng SDKMan. Trong mọi trường hợp, bạn cần đảm bảo rằng JRE có sẵn từ dòng lệnh để sử dụng lệnh java.

Java Runtime Environment và các phiên bản

Java Runtime Environment (JRE) được cập nhật theo từng phiên bản mới của Java, và số phiên bản của JRE phù hợp với hệ thống phiên bản của nền tảng Java. Ví dụ, JRE 1.19 được thiết kế để chạy Java 19.

Nhiều máy tính hiện tại sử dụng JRE được phát triển cho Java SE, có thể chạy mọi ứng dụng Java bất kể cách chúng được phát triển. Hầu hết các thiết bị di động đều được cài đặt sẵn JRE dành cho Java ME, và phiên bản này không thể tải xuống riêng lẻ. Trong tương lai, các ứng dụng đi kèm JRE thông qua JLink sẽ trở thành tiêu chuẩn.

Sau khi tải xuống JDK, bạn có thể tương tác với JRE đi kèm bằng dòng lệnh. Nhập java -version để kiểm tra phiên bản JRE đã được cài đặt. (Trên các hệ thống POSIX, bạn có thể dùng lệnh which java để xác định vị trí cài đặt JRE.)

Kết luận

Java Runtime Environment (JRE) là chương trình trên ổ đĩa, chịu trách nhiệm tải các ứng dụng Java để JVM thực thi. Khi tải xuống JDK, JRE sẽ được tích hợp sẵn, bao gồm thư viện lớp Java cốt lõi, bộ nạp lớp Java (class loader) và JVM. Việc hiểu rõ cách JVM, JDK và JRE tương tác với nhau rất hữu ích, đặc biệt khi làm việc trong các môi trường đám mây và devops. Trong những môi trường này, JRE đóng vai trò quan trọng hơn trong việc giám sát và cấu hình so với phát triển ứng dụng Java truyền thống.

Bài viết liên quan

JavaFX là gì? - Kiến thức chi tiết từ A - Z về JavaFX
JavaFX là một framework mạnh mẽ để xây dựng các ứng dụng desktop và ứng dụng internet phong phú (RIA) bằng Java. Được thiết kế như một thế hệ kế tiếp của Swing, JavaFX cung cấp một bộ công cụ hiện đại để tạo ra giao diện người dùng trực quan và tương tác.
Sự khác biệt giữa JDK, JRE và JVM trong Java là gì?
Trong số các ngôn ngữ lập trình, Java hiện là ngôn ngữ phổ biến nhất được sử dụng cho các mục đích phát triển. Phần lớn các lập trình viên sử dụng Java để phát triển ứng dụng di động, máy tính để bàn, phát triển game, lập trình back-end, ... Trong quá trình phát triển với Java, JVM, JRE, và JDK đã và đang đóng góp những vai trò vô cùng quan trọng.
JDK là gì? Giới thiệu về Java Development Kit
Khi xây dựng các ứng dụng phần mềm trên Java, JDK có trách nhiệm đẩy nhanh quá trình phát triển và đơn giản hóa dự án. Cùng với JVM (Java Virtual Machine) và JRE (Java Runtime Environment), JDK là một trong những công nghệ cốt lõi được sử dụng trong lập trình Java.
9