Những điều bạn nên biết về máy ảo Java?



Blog này sẽ trình bày chi tiết về khái niệm máy ảo java với các thành phần của kiến ​​trúc và sự khác biệt chính giữa JVM, JRE và JDK

ngôn ngữ đã là một gã khổng lồ trong ngành CNTT trong một thời gian rất dài. Nó có một số khái niệm hàng đầu làm cho nó tốt hơn phần còn lại của ngôn ngữ lập trình. Một trong những khái niệm đó là máy ảo Java, trong bài viết này, chúng ta sẽ tìm hiểu về các khía cạnh khác nhau của chi tiết máy ảo. Sau đây là các chủ đề được thảo luận trong blog này:

Máy ảo Java là gì?

Máy ảo Java là một máy trừu tượng độc lập với nền tảng, cung cấp một môi trường thời gian chạy trong đó mã byte Java được thực thi.





Nó là một phần của môi trường thời gian chạy Java chuyển đổi mã bytecode của Java thành ngôn ngữ máy đọc được. Chính mà chúng ta có trong một chương trình Java thực sự được gọi bởi máy ảo Java.

các tính năng của java 9 với các ví dụ

jvm - Máy ảo java - edureka

Tại sao chúng ta cần máy ảo Java?

Chúng ta cần máy ảo Java cho các tác vụ mà nó thực hiện, điều cực kỳ cần thiết cho bất kỳ sự phát triển nào liên quan đến Java. Sau đây là một số tác vụ mà máy ảo Java thực hiện.



  • Tải mã
  • Xác minh mã
  • Thực thi mã
  • Nó cung cấp môi trường thời gian chạy cho các ứng dụng
  • Vùng nhớ
  • Đăng ký bộ
  • Cung cấp một đống thu gom rác
  • Báo cáo các lỗi nghiêm trọng
  • Cung cấp một lớp học định dạng tệp

Với tất cả các hoạt động này, máy ảo Java là một phần không thể thiếu trong quá trình phát triển Java. Chúng ta hãy cố gắng hiểu cách nó hoạt động với sự trợ giúp của kiến ​​trúc máy ảo Java.

Kiến trúc máy ảo Java

Kiến trúc máy ảo Java khá đơn giản, nó có một vùng bộ nhớ, một bộ tải lớp và một công cụ thực thi trong số các thành phần khác. hãy để chúng tôi thảo luận chi tiết từng người trong số họ.

ClassLoader

Nó là một hệ thống con được sử dụng để tải các tệp lớp. Bất cứ khi nào chúng ta chạy một chương trình trong java, nó sẽ được tải đầu tiên bởi ClassLoader. chức năng chính bao gồm khởi tạo, liên kết và tải. Sau đây là các bộ nạp lớp có sẵn trong Java.



    • Bootstrap ClassLoader - Đây là siêu lớp của Extension ClassLoader có chức năng tải tệp rt.jar.

    • Sự mở rộng ClassLoader - Nó tải các tệp jar nằm trong thư mục.

    • Hệ thống / Ứng dụng ClassLoader - Nó tải các tệp phân lớp từ classpath.

    • Thao tác tải - Đầu tiên, classLoader tải các tệp .class và tạo dữ liệu tương ứng ở định dạng nhị phân được lưu trong vùng phương thức.

      cách tạo phiên trong java
    • Hoạt động liên kết - Sau khi tải nó chuẩn bị, xác minh và đưa ra giải pháp. JVM cấp phát bộ nhớ cho các biến lớp và khởi tạo bộ nhớ thành các giá trị mặc định. Nó đảm bảo tính đúng đắn của tệp .class và khi xác minh không thành công, chúng tôi sẽ gặp lỗi ngoại lệ thời gian chạy.

    • Khởi tạo - Tất cả các biến tĩnh được gán với các giá trị của chúng được xác định trong khối mã trong giai đoạn này.

Bộ nhớ JVM

  • Khu vực phương pháp - Nó lưu trữ các cấu trúc cho mỗi lớp như mã, dữ liệu trường, nhóm hằng số thời gian chạy, dữ liệu phương thức, v.v.

  • Đống - Các đối tượng được phân bổ trong thời gian chạy trong heap.

  • Ngăn xếp ngôn ngữ JVM - Nó lưu trữ các biến cục bộ và kết quả. Nó đóng một vai trò quan trọng trong việc mời gọi và trả về kết quả. Bất cứ khi nào một phương thức được gọi, một khung sẽ được tạo và bị hủy ngay sau khi lệnh gọi kết thúc hoặc hoàn thành.

  • Đăng ký PC - Nó có địa chỉ hoặc vị trí của JVMinstruction đang được thực thi.

  • Các ngăn xếp phương pháp gốc - Tất cả các phương thức gốc được sử dụng trong các ứng dụng đều có trong ngăn xếp phương thức gốc.

  • Công cụ thực thi - Một công cụ thực thi chứa một bộ xử lý ảo, một trình thông dịch và một JIT trình biên dịch.

  • Phương pháp gốc Giao diện - Nó là một cung cấp.

Bây giờ chúng ta đã hiểu kiến ​​trúc của JVM, hãy cùng xem quy trình thực thi và biên dịch mã.

Quy trình thực hiện

Các bước sau đây diễn ra trong khi thực thi và biên dịch mã Java.

  • Phương thức chính được lưu trữ trong một tệp duy nhất và các phương thức khác được lưu trữ trong các tệp khác nhau.
  • Sau khi biên dịch, nó sẽ cung cấp các tệp .class tương ứng sẽ có mã byte mà không có bất kỳ liên kết nào, không giống như C.
  • Trong quá trình thực thi, các tệp lớp được xác minh xem có bất kỳ vi phạm nào bằng Trình tải lớp hay không.
  • Sau đó, mã bytecode được chuyển đổi thành mã máy gốc tương ứng. Đây cũng là lý do tại sao Java tương đối chậm hơn.

Bây giờ chúng ta đã biết, cách thực thi hoạt động, hãy cùng xem sự khác biệt giữa JDK, JRE và JVM.

Sự khác biệt giữa JDK, JRE và JVM

Sau đây là một số khác biệt quan trọng giữa JDK , JVM và JRE.

  1. JDK là viết tắt của bộ công cụ phát triển Java và JRE là viết tắt của môi trường thời gian chạy Java.
  2. JDK dành cho phát triển trong khi JRE dành cho môi trường thời gian chạy.
  3. JVM là một phần thiết yếu của JDK và JRE để chạy bất kỳ chương trình Java nào.
  4. JVM là một phần không thể thiếu trong lập trình Java và cung cấp tính độc lập của nền tảng.

Đến phần cuối của bài viết này, chúng ta đã tìm hiểu chi tiết về máy ảo Java. Tôi hy vọng bạn rõ ràng với tất cả những gì đã được chia sẻ với bạn trong hướng dẫn này.

lớp python __init__

Nếu bạn thấy bài viết này về “Máy ảo Java” có liên quan, hãy xem Edureka , một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu.

Chúng tôi ở đây để giúp bạn từng bước trong hành trình của mình và đưa ra chương trình giảng dạy được thiết kế cho sinh viên và các chuyên gia muốn trở thành Nhà phát triển Java. Khóa học được thiết kế để cung cấp cho bạn khởi đầu về lập trình Java và đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Nếu bạn gặp bất kỳ câu hỏi nào, vui lòng đặt tất cả câu hỏi của bạn trong phần nhận xét của “Máy ảo Java” và nhóm của chúng tôi sẽ sẵn lòng trả lời.