JRE là gì? Tìm hiểu chi tiết về Java Runtime Environment

JRE là gì?

JRE (Java Runtime Environment) hay môi trường thực thi là một phần mềm chạy trên hệ điều hành máy tính và cung cấp các thư viện lớp và các tài nguyên khác mà một chương trình Java cụ thể cần để chạy.

JRE là một trong ba thành phần liên quan đến việc phát triển và chạy các chương trình Java. Hai thành phần còn lại như sau:

JRE bao gồm những gì?

Bên cạnh JVM thì JRE còn bao gồm một loạt các công cụ và tính năng hỗ trợ khác để tận dụng tối đa các ứng dụng Java của bạn, các công cụ và tính năng hỗ trợ đó gồm:

Công nghệ triển khai 

Các công nghệ triển khai (Deployment technologies) như Java Web Start và Java Plugin được tích hợp trong cài đặt JRE để đơn giản hóa việc kích hoạt các ứng dụng và cung cấp hỗ trợ nâng cao cho các bản cập nhật Java trong tương lai.

Bộ công cụ phát triển

JRE cũng chứa các bộ công cụ được thiết kế để giúp các nhà phát triển cải thiện giao diện người dùng của họ. Một số trong số các bộ công cụ này bao gồm:

  • Java 2D: Một giao diện lập trình ứng dụng (API) được sử dụng để vẽ đồ họa hai chiều trong ngôn ngữ Java. Nhà phát triển có thể tạo ra giao diện người dùng phong phú, hiệu ứng đặc biệt, trò chơi và hoạt ảnh.
  • Abstract Window Toolkit (AWT): Một giao diện người dùng đồ họa (GUI) được sử dụng để tạo ra các đối tượng, nút, thanh cuộn và cửa sổ.
  • Swing: Một GUI nhẹ khác sử dụng một tập hợp các công cụ đa dạng để cung cấp các tùy chỉnh linh hoạt, thân thiện với người dùng.

    Thư viện tích hợp

    Java Runtime Environment cung cấp một số thư viện tích hợp để hỗ trợ các nhà phát triển tạo kết nối dữ liệu liền mạch giữa các ứng dụng và dịch vụ của họ. Một số trong số các thư viện này bao gồm:

    • Java IDL (CORBA): Sử dụng Kiến trúc yêu cầu đối tượng chung để hỗ trợ các đối tượng phân tán được viết bằng ngôn ngữ lập trình Java.
    • Java Database Connectivity (JDBC) API: Cung cấp các công cụ để các nhà phát triển viết ứng dụng có khả năng truy cập đến các cơ sở dữ liệu quan hệ từ xa, tệp phẳng và bảng tính.
    • Java Naming and Directory Interface (JNDI): Một giao diện lập trình và dịch vụ thư mục cho phép các khách hàng tạo ra các ứng dụng di động có thể lấy thông tin từ cơ sở dữ liệu bằng cách sử dụng quy ước đặt tên.

    Thư viện ngôn ngữ và tiện ích

    Được bao gồm trong JRE là các gói java.lang. và java.util. là cơ bản cho thiết kế ứng dụng Java, quản lý phiên bản gói và giám sát. Một số trong số các gói này bao gồm:

    • Collections Framework: Một kiến trúc thống nhất gồm một tập hợp các giao diện được thiết kế để cải thiện việc lưu trữ và xử lý dữ liệu ứng dụng
    • Concurrency Utilities: Một gói khung công cụ mạnh mẽ với các tiện ích đa luồng có hiệu suất cao.
    • Preferences API: Một API nhẹ, đa nền tảng có tính liên tục cho phép nhiều người dùng trên cùng một máy định nghĩa nhóm tùy chọn ứng dụng của riêng họ.
    • Logging: Tạo báo cáo nhật ký – chẳng hạn như lỗi bảo mật, lỗi cấu hình và vấn đề hiệu suất – để phân tích tiếp theo.
    • Java Archive (JAR): Định dạng tệp độc lập nền tảng cho phép đóng gói nhiều tệp thành định dạng JAR, tăng tốc tải xuống đáng kể và giảm kích thước tệp.

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

      JRE bao gồm JVM kèm theo các lớp thư viện và các công cụ phát triển. Chương trình sau khi được viết sẽ được lưu với .java extension và chuyển sang bước tiếp theo là biên dịch. Sau khi biên dịch, trình biên dịch tạo ra một tệp .class chứa byte-code. Byte-code là độc lập nền tảng và chạy trên bất kỳ thiết bị nào có JRE. Từ đây, công việc của JRE bắt đầu. Để chạy bất kỳ chương trình Java nào, bạn cần có JRE. Luồng của byte-code để chạy như sau:


      ClassLoader

      Java ClassLoader là thành phần chịu trách nhiệm tải các lớp cần thiết để thực thi chương trình Java. ClassLoader sử dụng cơ chế “lazy loading” để chỉ tải các lớp khi chúng được yêu cầu bởi chương trình. Điều này giúp tối ưu hóa việc sử dụng bộ nhớ và tăng hiệu suất của chương trình Java. Ở bước này, classloader tải các lớp (classes) cần thiết để thực thi chương trình. Classloader hỗ trợ việc tải các lớp vào Java Virtual Machine. Khi JVM được khởi động, ba classloader được sử dụng: Bootstrap class loader; Extensions class loader và System class loader.

      Bytecode verifier

      Java ClassLoader động lực hóa việc tải tất cả các lớp cần thiết để chạy một chương trình Java. Vì các lớp Java chỉ được tải vào bộ nhớ khi chúng được yêu cầu, JRE sử dụng ClassLoader để tự động hóa quá trình này theo yêu cầu.

      Interpreter

      Interpreter là một thành phần khác của JRE, chịu trách nhiệm thực thi bytecode và tạo ra các mã máy thực thi được. Interpreter đọc bytecode và chuyển đổi nó thành mã máy thực thi, dựa trên các quy tắc định nghĩa trong kiến trúc của JVM. Nó cũng cung cấp các tính năng bảo mật như kiểm soát quyền truy cập và kiểm tra giới hạn bộ nhớ.

      Với các bước này, chương trình được thực thi trong JRE.

thẻ:
JRE