JVM là viết tắt của Java Virtual Machine (Máy ảo Java), là một phần quan trọng của nền tảng Java . Nó là một môi trường thực thi cho các chương trình Java, cho phép chúng được thực thi trên nhiều hệ điều hành khác nhau mà không cần phải biên dịch lại mã nguồn cho từng hệ điều hành riêng lẻ.
Máy ảo Java cũng đảm bảo sự tương thích với các phiên bản Java trước đó, nghĩa là các chương trình Java của phiên bản cũ vẫn có thể chạy trên các phiên bản Java mới hơn mà không cần sửa đổi. Điều này đảm bảo tính ổn định và liên tục của các ứng dụng Java khi có các bản cập nhật mới của JVM và Java.
Kiến trúc JVM (JVM Architecture) bao gồm các thành phần sau:
Classloader là một hệ thống con của JVM được sử dụng để tải các tệp lớp và các tài nguyên của ứng dụng Java. Khi chúng ta chạy chương trình Java, nó sẽ được tải trước bởi classloader. Có ba classloader được tích hợp sẵn trong Java.
Class (Method) Area được sử dụng để lưu trữ các metadata của các lớp Java và các phương thức của chương trình.
Đây là nơi lưu trữ các đối tượng Java được cấp phát bởi chương trình. Khi một đối tượng Java được tạo ra, Heap sẽ lưu trữ đối tượng đó. Khi đối tượng không còn được sử dụng nữa, đối tượng sẽ bị xóa khỏi Heap bởi garbage collector và giải phóng không gian bộ nhớ.
Java Stack lưu trữ các frame. Nó giữ các biến cục bộ và kết quả phần (partial results), và đóng vai trò trong việc gọi và trả về phương thức.
Mỗi luồng (threads) có một JVM stack riêng, được tạo cùng lúc với luồng.
Một frame mới được tạo mỗi khi một phương thức được gọi. Frame bị hủy khi việc gọi phương thức của nó hoàn thành.
PC Register chứa địa chỉ của chỉ dẫn đang được thực hiện từ máy ảo Java. Khi chương trình Java được thực thi trên JVM, PC Register sẽ lưu trữ địa chỉ của lệnh tiếp theo mà chương trình sẽ thực thi. Khi lệnh hiện tại được thực thi, giá trị của PC Register sẽ được cập nhật để trỏ tới địa chỉ của lệnh tiếp theo trong chương trình.
Nó chứa tất cả các phương thức native được sử dụng trong ứng dụng.
Nó bao gồm:
Java Native Interface (JNI) là một framework cung cấp một giao diện (interface) để giao tiếp với một ứng dụng khác được viết bằng một ngôn ngữ khác như C, C ++, Assembly… Java sử dụng khung JNI để gửi đầu ra đến Console hoặc tương tác với thư viện hệ điều hành.
Java Virtual Machine (JVM) đọc và thực thi mã bytecode được tạo ra từ mã nguồn Java sau khi được biên dịch. Khi chương trình Java được biên dịch, nó sẽ tạo ra một tệp mã bytecode, chứa các mã lệnh được mã hóa dưới dạng byte. JVM sẽ lấy tệp này và dịch nó thành mã máy tính để thực thi trên hệ thống.
Với JVM, bạn sẽ không cài đặt một cách độc lập. Khi bạn tải và cài đặt JRE hoặc JDK thì JVM cũng được tải và cài đặt đồng thời. Việc tải JRE hoặc JDK sẽ phụ thuộc vào nhu cầu của bạn.
Nếu bạn chỉ muốn chạy các ứng dụng Java mà không phải phát triển hoặc sửa đổi mã nguồn, bạn có thể tải và cài đặt JRE để sử dụng JVM.
Nếu bạn muốn phát triển các ứng dụng Java hoặc sử dụng các công cụ phát triển như trình biên dịch và trình gỡ lỗi, bạn cần tải và cài đặt JDK.
Tuyển dụng Bridge Software Engineer ( BrSE )
PHP là gì? Lập trình viên PHP làm công việc gì?
JRE là gì? Tìm hiểu chi tiết về Java Runtime Environment
Laravel là gì và Tại sao bạn nên học Laravel?
ReactJS là gì? Những điều có thể bạn chưa biết về ReactJS