JVM là gì? Định nghĩa JVM

JVM là gì?

JVM (Java Virtual Machine) là 1 trong những máy ảo java – nó được dùng để làm thực thi các lớp học Java hay hiểu nôm na là trình thông dịch của Java. Nó cung cấp môi trường xung quanh để code java có thể được thực thi. Khóa học Java khi biên dịch sẽ tạo ra các mã máy gọi là bytecodes. Như bạn thấy mỗi hệ điều hành chạy chương trình của nó ứng với một mã máy khác nhau đó là mã bytecodes, ví dụ Windows được biên dịch dưới dạng exe còn Linux là .ELF…

Khái niệm JVM

Tóm gọn lại là mỗi nền tảng/hệ điều hành khác nhau (Windows, Android, Linux…) lại sở hữu một loại JVM khác nhau được thiết lập. Nói Java đa nền tảng, thực chất thì nó được tương trợ JVM trên nhiều nền tảng. Khóa học Java chạy được trên Window/Linux/IOS vì nó có JVM chạy được trên các nền tảng đó, vì vậy mới hiểu ý tức là lập trình Java một nơi nhưng chạy được nhiều chỗ là vì JVM này thực hiện.

Các chúng ta cũng có thể tham khảo cơ chế thực hiện 1 lớp học Java trong sơ đồ tại đây :

JVM là gì? Định nghĩa JVM

Máy ảo java được sinh ra với 3 mục đích chính

  • Dịch mã java ra mã máy chạy được trên các hệ điều hành khác nhau
  • Tăng tốc độ
  • Nâng cao độ bảo mật và tránh virus phá source code

JVM thực hiện các công việc chính sau đây

  • Tải code (các class, resource)
  • Kiểm tra code (kiểm tra code có đúng cú pháp không, có bị lỗi không, tất nhiên nếu code có lỗi thì sẽ không còn chạy được lớp học rồi)
  • Thực thi code
  • Cung cấp môi trường xung quanh runtime

JVM có 3 thành phần chính

  • Class Loader: Tìm kiếm và load các file *.class vào vùng nhớ của java dưới dạng bytecode
  • Data Area : vùng nhớ mạng lưới hệ thống cấp phép cho Java Virtual Machine
  • Execution Engine: chuyển các lệnh của JVM trong file *.class thành các lệnh của máy, hệ điều hành tương ứng và thực thi chúng.

Cơ chế thực hiện

Sau khoản thời gian Classloader tìm và load các file .class, các file này sẽ được máy ảo JVM cung cấp bộ nhớ tương ứng với chúng.

  • Class (Method) area: là vùng nhớ cấp phát cho class(Method) trong đó lại phân chia thành heap, stack, PC register, native method stack
  • Heap: Đây là khu vực tài liệu thời kì chạy trong đó các đối tượng người tiêu dùng được phân bổ.
  • Stack : Các phương thức và tham chiếu tới đối tượng người tiêu dùng địa phương được lưu trữ trong Stack. Mỗi Thread quản lý một stack. Khi phương thức được gọi, nó được đưa vào đỉnh của Stack. Stack lưu trữ trạng thái của phương thức gồm có: dòng code thực thi, tham chiếu tới đối tượng người tiêu dùng địa phương. Khi phương thức chạy xong, vùng nhớ (dòng code thực thi, tham chiếu tới đối tượng người tiêu dùng địa phương) được đẩy thoát ra khỏi stack và tự động hóa phóng thích.
  • PC register (Program Counter Register) : Nó chứa địa chỉ của đa số máy ảo Java hướng dẫn hiện đang rất được thực hiện.
  • Native Method Stack: Nơi chứa tất cả các method native trong chương trình
  • Execution Engine: Nó gồm có: Một bộ xử lý ảo, một thông dịch để đọc dòng bytecode sau đó thực hiện các hướng dẫn và cuối cùng là trình biên dịch Just-In-Time (JIT). JIT biên dịch các phần của mã byte có chức năng tương tự như cùng một lúc, và do đó làm giảm số lượng thời kì cấp thiết cho compilation.*Thuật ngữ: trình biên dịch là đề cập đến như một dịch giả từ những hướng dẫn của một máy ảo Java (JVM) cho những tập lệnh của CPU cụ thể.

Tài liệu tham khảo thêm:

  • 4 tính chất của lập trình hướng đối tượng người tiêu dùng trong Java
  • 10 Java Web Framework tốt nhất
  • Top 8 vướng mắc phỏng vấn Java thường gặp
  • Java và những điều thú vị có thể bạn chưa chắc chắn

You May Also Like

About the Author: v1000