TÌM HIỂU VỀ JRE TRONG JAVA

Cùng với JDK (Java Development Kit) và JVM (Java Virtual Machine), thì JRE (Java Runtime Environment) là một trong ba thành phần cơ bản của nền tảng Java, giúp hỗ trợ phát triển và thực thi các ứng dụng Java. Trong bài viết này hay cùng Hybrid Technologies tìm hiểu về JRE cũng như cách nó tương tác với các thành phần khác của Java nhé:

1. Khái niệm Java Runtime Environment

Trước khi tìm hiểu khái niệm về JRE ta cần biết môi trường thực thi (runtime environment) là gì.

Môi trường thực thi hay runtime environment được thiết kế để hỗ trợ việc chạy các chương trình phần mềm. Chúng đảm bảo việc kết nối tới bộ nhớ và các tài nguyên hệ thống khác để chạy các chương trình. Trong quá khứ, hầu hết các phần mềm đều sử dụng hệ điều hành (OS) giống như môi trường thực thi của chúng.

Với Java chúng ta có JRE như là một runtime environment, nó gồm có các Java class libraries, Java class loader, và Java Virtual Machine:

  • Java class loader chịu trách nhiệm nạp các classes và kết nối chúng với các thư viện Java (Java libraries)
  • Java virtual machine (JVM) chịu trách nhiệm đảm bảo ứng dụng Java có đủ tài nguyên để chúng thực thi tốt trong thiết bị hoặc môi trường đám mây

Nhìn chung, JRE đảm bảo 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 sửa đổi. Nó còn cung cấp những dịch vụ giá trị, ví dụ như quản lý bộ nhớ tự động (Automatic Memory Management) là một trong những dịch vụ quan trọng nhất của JRE, nó giúp các lập trình viện trong việc cấp phát cũng như giải phóng bộ nhớ tự động.

2. Cài đặt JRE

JRE cũng giống như một phần mềm, mục đích cài đặt là để chạy chương trình Java. Thông thường với nhà phát triển, họ thường làm việc với JDK và JVM bới vì chúng giúp xây dựng và chạy chương trình Java. Thực tế khi bạn cài đặt JDK, JRE sẽ được cài đặt mặc định đi kèm.

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

JVM hay Java Vitrual Machine là một hệ thống phần mềm chịu trách nhiệm thực thi chương trình Java. JRE lấy code Java kết hợp với các thư viện Java cần thiết và truyền tới JVM để thực thi chương trình đó.

4. JRE trong Cloud DevOps

JRE không được chú ý nhiều trong giai đoạn phát triển, nơi nó chủ yếu chỉ chạy trong các chương trình ở hệ điều hành hay IDE. Trong khi đó, JRE lại đóng vai trò rõ rệt hơn trong công việc quản trị hệ thống và devops vì nó được sử dụng để giám sát và cấu hình. Hơn hết, JRE hỗ trợ trong việc cấu hình đám mây và devops là một công nghệ dựa trên đám mây. Nếu hứng thú với môi trường devops, bạn nên hiểu cách bộ nhớ Java hoạt động và cách nó được giám sát trong JRE.

5. JRE và bộ nhớ JAVA

Bộ nhớ Java bao gồm 3 thành phần: heap, stack và metaspace (tên gọi trước đó là permgen)

  • Metaspace là bộ nhớ mà máy ảo sử dụng để lưu trữ các classes
  • Heap là lượng bộ nhớ được cấp phát trong quá trình chạy của JVM, kích thước thông thường là khoảng 2-8 GB
  • Stack chứa các biến tham chiếu đến các objects trong heap và thực thi các functions.

Cấu hình vùng Heap:

Heap là một vùng nhớ linh động nhất trong bộ nhớ Java, bạn có thể sử dụng các flags -Xms và -Xmx để kiểm soát vùng nhớ heap bằng cách setup độ lớn bộ nhớ để vùng heap bắt đầu cũng như độ lớn bộ nhớ cho phép heap đạt đến. Hiểu cách sử dụng các flags này rất quan trọng trong việc quản lý bộ nhớ Java. Lý tưởng nhất là đảm bảo cho vùng heap đủ lớn để garbage collection (một bộ phận quan trọng của JVM) hoạt động hiệu quả nhất.

Cấu hình vùng Stack:

Vùng nhớ stack là nơi các function và biến tham chiếu được lưu trữ theo thứ tự xếp hàng, hoạt động theo kiểu LIFO (last in first out). Stack là nơi diễn ra lỗi phổ biến thứ 2 trong lập trình Java đó chính là Stack Overflow Exception, xảy ra khi ngăn xếp bị đầy hoặc có một hay nhiều phương thức, functions nào đó được gọi đến theo 1 vòng tròn luẩn quẩn. Chúng ta cũng có thể dùng -Xss để cấu hình cho kích thước ban đầu của stack, từ đó stack sẽ thay đổi linh hoạt dựa theo yêu cầu của chương trình.

Trên đây là những cái nhìn tổng quát về Java Runtime Environment, một trong những thành phần quan trọng của nền tảng Java. Nhìn chung, JRE hữu ích khi làm việc với các dịch vụ đám mây hay devops, nó có điểm mạnh là vai trò giám sát và cấu hình hơn là việc phát triển ứng dụng Java truyền thống. 

Facebook Comments
Đánh giá bài viết

Bạn thích bài viết này chứ?
Đăng ký để nhận những bài viết thú vị như thế hàng tuần.

Đừng sợ thất bại, chỉ sợ việc dậm chân tại chỗ

TÌM VIỆC
Bình luận