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ể. Nó là một trong những câu hỏi cơ bản khi phỏng vấn Java và trong bài viết này chúng ta sẽ cùng nhau tìm hiểu sự khác nhau giữa chúng.
JDK
Java Development Kit – Bộ phát triển Java là thành phần cốt lõi của môi trường Java và cung cấp tất cả các công cụ, các thực thi và các binary cần thiết để biên dịch, debug và chạy chương trình Java. Java là một nền tảng – phần mềm riêng biệt và đó là lý do tại sao chúng tách biệt phần cài đặt cho Window, Mac và hệ thống Unix. Chúng ta có thể coi rằng JDK là tập cha của JRE bởi vì nó chứa JRE với trình biên dịch Java, debug và các class cốt lõi. Version hiện tại của Java là 11 nên được gọi là Java 11
JVM
JVM là trái tim của ngôn ngữ lập trình Java. Khi chúng ta chạy chương trình, JVM chịu trách nhiệm chuyển đổi mã Byte thành mã cụ thể của máy. JVM cũng phụ thuộc vào nền tảng và cung cấp các hàm java cốt lõi như quản lý bộ nhớ, dọn dữ liệu rác, bảo mật, … JVM có thể tuỳ chỉnh và chúng ta có thể sử dụng các tuỳ chọn để chỉnh sửa nó, ví dụ như cấp phát bộ nhớ tối thiểu và tối đa cho JVM. JVM được gọi là máy ảo bởi vì nó cung cấp một interface mà không phụ thuộc vào nền tảng hệ điều hành và phần cứng máy. Việc độc lập với phần cứng và hệ điều hành là điều giúp cho chương trình Java viết một lần và chạy ở bất kỳ đâu.
JRE
JRE là các thực thị của JVM, cung cấp nền tảng để chạy các chương trình Java. JRE bao gồm JVM và Java binary các class khác để chạy chương trình bất kỳ thành công. JRE không chứa bất kỳ công cụ phát triển nào như trình biên dịch Java, debug,… Nếu bạn muốn chạy chương trình Java bất kỳ, bạn nên cài đặt JRE nhưng không cần JDK để chạy bất kỳ chương trình Java nào.
JDK vs JVM vs JRE
Sau đây là những điểm khác nhau quan trọng giữa JDK, JVM và JRE
- JDK dành cho mục đích phát triển trong khi JRE dùng để chạy các chương trình Java
- Cả JDK và JRE đều chứa JVM do đó chúng có thể chạy chương trình Java.
- JVM là trái tim của ngôn ngữ lập trình Java và cung cấp tính độc lập cho nền tảng.
Just-in-time Compiler (JIT)
Thỉnh thoảng chúng ta lại được nghe thuật ngữ này và nó là một phần của JVM, nó gây nhầm lẫn cho chúng ta. JIT là một phần của JVM giúp tối ưu mã Byte để biên dịch ngôn ngữ cụ thể của máy bằng cách biên dịch các mã Byte giống nhau cùng một thời điểm, do đó giúp giảm thời gian tổng thể dành cho việc biên dịch các mã Byte sang ngôn ngữ cụ thể của máy.