Giới thiệu JDK, JRE và JVM trong Java

Trước khi thực sự đặt tay gõ các dòng code Java, cài đặt Java thì chúng ta phải hiểu sự khác nhau giữa JDK, JRE và JVM. Cùng eLib.VN tìm hiểu sơ lược 3 khái niệm trên qua bài viết dưới đây. 

Giới thiệu JDK, JRE và JVM trong Java

1. Sơ lược về JVM

JVM (viết tắt của Java Virtual Machine) là một thiết bị trừu tượng (ảo) có thể giúp máy tính chạy các chương trình Java. Nó cung cấp môi trường runtime mà trong đó Java Bytecode có thể được thực thi.

JVM là có sẵn cho nhiều nền tảng (Windows, Linux...). JVM, JRE và JDK là phụ thuộc nền tảng, bởi vì cấu hình của mỗi OS (hệ điều hành) là khác nhau. Nhưng, Java là độc lập nền tảng.

JVM là gì?

JVM thực hiện các tác vụ chính sau:

  • Tải code

  • Kiểm tra code

  • Thực thi code

  • Cung cấp môi trường runtime

JVM cung cấp các định nghĩa cho: Khu vực bộ nhớ, định dạng class file, thiết lập Register, Heap cho Trình dọn rác và các báo cáo lỗi nghiêm trọng (Fatal Error), …

Cấu trúc nội tại của JVM

Bạn theo dõi sơ đồ sau để hiểu cấu trúc nội tại của JVM. Nó gồm Classloader, Memory Area (khu vực bộ nhớ), Excetution Engine (phương tiện thực thi), …

Cấu trúc JVM trong Java
  • Classloader: Là một hệ thống con của JVM được sử dụng để tải class file.

  • Class (method) Area: Lưu trữ cấu trúc mỗi lớp, chẳng hạn như hằng, trường, dữ liệu phương thức, code của phương thức, …

  • Heap: Nó là khu vực dữ liệu runtime mà trong đó đối tượng được cấp phát.

  • Stack: Stack trong Java lưu giữ các Frame. Nó giữ các biến cục bộ và các kết quả cục bộ, và thực hiện một phần nhiệm vụ trong phần triệu hồi và trả về phương thức. Mỗi Thread có một Stack riêng, được tạo tại cùng thời điểm với Thread.

    Một Frame mới được tạo mỗi khi một phương thức được triệu hồi và bị hủy khi lời triệu hồi phương thức là kết thúc.

  • Program Counter Register: Nó chứa địa chỉ của chỉ lệnh JVM hiện tại đang được thực thi.

  • Native Method Stack: Bao gồm tất cả các phương thức tự nhiện được sử dụng trong ứng dụng.

  • Execution Engine: Phần này bao gồm:

    Một bộ xử lý ảo Virtual Processor

    Một trình thông dịch Interpreter. Đọc Bytecode Stream sau đó thực thi các chỉ thị.

    Just-In-Time (JIT) Compiler: được sử dụng để cải thiện hiệu suất. JIT biên dịch các phần của Bytecode mà có cùng tính năng tại cùng một thời điểm, và vì thế giảm lượng thời gian cần thiết để biên dịch. Ở đây khái niệm Compiler là một bộ biên dịch tập chỉ thị của JVM thành tập chỉ thị của một CPU cụ thể.

2. Giới thiệu JRE

JRE (là viết tắt của Java Runtime Environment) được sử dụng để cung cấp môi trường runtime. Nó là trình triển khai của JVM. JRE bao gồm tập hợp các thư viện và các file khác mà JVM sử dụng tại runtime. Trình triển khai của JVM cũng được công bố bởi các công ty khác ngoài Sun Micro Systems.

JRE – Môi trường thực thi Java

3. Sơ lược về JDK

JDK (là viết tắt của Java Development Kit) bao gồm JRE và các Development Tool.

 Bộ công cụ phát triển Java (JDK) là một môi trường phát triển phần mềm được sử dụng để phát triển các ứng dụng Java. Nó tồn tại về mặt vật lý. Nó chứa các công cụ phát triển JRE +.

JDK là gần như bắt buộc nếu bạn muốn chạy bất kỳ nền tảng nào do Tập đoàn Oracle phát hành:

  • Standard Edition Java Platform
  • Enterprise Edition Java Platform
  • Micro Edition Java Platform\

JDK chứa Máy ảo Java riêng (JVM) và một số tài nguyên khác như trình thông dịch / trình tải (java), trình biên dịch (javac), trình lưu trữ (jar), trình tạo tài liệu (Javadoc), v.v. để hoàn thành Phát triển Ứng dụng Java.

Trên đây là bài viết phân biệt sự khác nhau của JDK, JRE và JVM. Nhìn chung JDK, JRE và JVM là những khái niệm cốt lõi của ngôn ngữ lập trình Java. Mặc dù, tất cả đều trông giống nhau và như một lập trình viên, chúng ta sẽ không quan tâm nhiều đến những khái niệm này, nhưng thực tế chúng khác nhau và có ý nghĩa cho các mục đích cụ thể. Bạn cần tìm hiểu và phân biệt rõ chúng.

Ngày:28/09/2020 Chia sẻ bởi:Thanh Nhàn

CÓ THỂ BẠN QUAN TÂM