JVM là gì?
Máy ảo Java (JVM) là một công cụ cung cấp môi trường thời gian chạy để điều khiển Mã Java hoặc các ứng dụng. Nó chuyển đổi mã byte Java thành ngôn ngữ máy. JVM là một phần của Môi trường chạy Java (JRE). Trong các ngôn ngữ lập trình khác, trình biên dịch tạo mã máy cho một hệ thống cụ thể. Tuy nhiên, trình biên dịch Java tạo mã cho Máy ảo được gọi là Máy ảo Java.
Đây là cách JVM hoạt động
Đầu tiên, mã Java được tuân thủ theo mã byte. Mã byte này được giải thích trên các máy khác nhau
Giữa hệ thống máy chủ và nguồn Java, Bytecode là ngôn ngữ trung gian.
JVM chịu trách nhiệm phân bổ không gian bộ nhớ.
Trong hướng dẫn này, bạn sẽ học-
- Kiến trúc JVM
- Quy trình biên dịch & thực thi mã phần mềm
- Quá trình biên dịch và thực thi mã C
- Quá trình thực thi và biên dịch mã Java
- Tại sao Java cả hai được giải thích và Ngôn ngữ biên dịch?
- Tại sao Java chậm?
Kiến trúc JVM
Hãy hiểu Kiến trúc của JVM. Nó chứa trình nạp lớp, vùng nhớ, công cụ thực thi, v.v.
1) Trình tải lớp
Trình nạp lớp là một hệ thống con được sử dụng để tải các tệp lớp. Nó thực hiện ba chức năng chính viz. Đang tải, liên kết và khởi tạo.
2) Khu vực phương pháp
Vùng phương thức JVM lưu trữ các cấu trúc lớp như siêu dữ liệu, nhóm thời gian chạy không đổi và mã cho các phương thức.
3) Heap
Tất cả các Đối tượng, các biến đối tượng liên quan và mảng của chúng được lưu trữ trong heap. Bộ nhớ này là phổ biến và được chia sẻ trên nhiều chủ đề.
4) Ngăn xếp ngôn ngữ JVM
Ngăn xếp ngôn ngữ Java lưu trữ các biến cục bộ và đó là kết quả một phần. Mỗi luồng có ngăn xếp JVM riêng, được tạo đồng thời khi luồng được tạo. Một khung mới được tạo bất cứ khi nào một phương thức được gọi và nó sẽ bị xóa khi quá trình gọi phương thức hoàn tất.
5) Đăng ký PC
Thanh ghi PC lưu địa chỉ của lệnh máy ảo Java hiện đang thực thi. Trong Java, mỗi luồng có thanh ghi PC riêng.
6) Ngăn xếp phương thức bản địa
Ngăn xếp phương thức bản địa giữ hướng dẫn của mã gốc phụ thuộc vào thư viện riêng. Nó được viết bằng ngôn ngữ khác thay vì Java.
7) Công cụ thực thi
Nó là một loại phần mềm được sử dụng để kiểm tra phần cứng, phần mềm hoặc hệ thống hoàn chỉnh. Công cụ thực hiện kiểm tra không bao giờ mang bất kỳ thông tin nào về sản phẩm được kiểm tra.
8) Giao diện Phương thức gốc
Giao diện Phương thức gốc là một khung lập trình. Nó cho phép mã Java đang chạy trong JVM để gọi bởi các thư viện và ứng dụng gốc.
9) Thư viện phương pháp bản địa
Thư viện bản địa là một tập hợp các Thư viện riêng (C, C ++) cần thiết cho Công cụ thực thi.
Quy trình biên dịch & thực thi mã phần mềm
Để viết và thực hiện chương trình phần mềm, bạn cần có những điều sau đây
1) Trình chỉnh sửa - Để nhập chương trình của bạn vào, một notepad có thể được sử dụng cho việc này
2) Trình biên dịch - Để chuyển đổi chương trình ngôn ngữ cao của bạn thành mã máy gốc
3) Trình liên kết - Để kết hợp các tệp chương trình khác nhau trong chương trình chính của bạn với nhau.
4) Trình tải - Để tải các tệp từ thiết bị lưu trữ thứ cấp của bạn như Đĩa cứng, Ổ đĩa flash, CD vào RAM để thực thi. Việc tải được tự động thực hiện khi bạn thực thi mã của mình.
5) Thực thi - Thực thi mã được xử lý bởi hệ điều hành & bộ xử lý của bạn.
Với nền tảng này, hãy tham khảo video sau đây & tìm hiểu hoạt động và kiến trúc của Máy ảo Java.
Quá trình biên dịch và thực thi mã C
Để hiểu quá trình biên dịch Java trong Java. Trước tiên chúng ta hãy xem nhanh quá trình biên dịch và liên kết trong C.
Giả sử trong chính, bạn đã gọi hai hàm F1 và f2. Hàm chính được lưu trong tệp a1.c.
Hàm F1 được lưu trong tệp a2.c
Hàm f2 được lưu trong tệp a3.c
Tất cả các tệp này, tức là a1.c, a2.c và a3.c, được đưa vào trình biên dịch. Đầu ra của ai là các tệp đối tượng tương ứng là mã máy.
Bước tiếp theo là tích hợp tất cả các tệp đối tượng này vào một tệp .exe duy nhất với sự trợ giúp của trình liên kết. Trình liên kết sẽ kết hợp tất cả các tệp này lại với nhau và tạo ra tệp .exe.
Trong quá trình chạy chương trình, một chương trình nạp sẽ tải a.exe vào RAM để thực thi.
Biên dịch và thực thi mã Java trong Java VM
Hãy xem xét quá trình cho JAVA. Trong chính của bạn, bạn có hai phương pháp F1 và f2.
- Phương thức chính được lưu trữ trong tệp a1.java
- F1 được lưu trữ trong một tệp dưới dạng a2.java
- f2 được lưu trữ trong một tệp dưới dạng a3.java
Trình biên dịch sẽ biên dịch ba tệp và tạo ra 3 tệp. Class tương ứng bao gồm mã BYTE. Không giống như C, không có liên kết được thực hiện .
Máy ảo Java hoặc Máy ảo Java nằm trên RAM. Trong quá trình thực thi, sử dụng trình nạp lớp, các tệp lớp được đưa vào RAM. Mã BYTE được xác minh cho bất kỳ vi phạm bảo mật.
Tiếp theo, công cụ thực thi sẽ chuyển đổi mã byte thành mã máy gốc. Đây chỉ là trong thời gian biên dịch. Đây là một trong những lý do chính tại sao Java tương đối chậm.
LƯU Ý: Trình biên dịch JIT hoặc Just-in-time là một phần của Máy ảo Java (JVM). Nó diễn giải một phần của Mã Byte có chức năng tương tự cùng một lúc.
Tại sao Java là cả hai ngôn ngữ được biên dịch và biên dịch?
Ngôn ngữ lập trình được phân loại là
- Ngôn ngữ cấp cao hơn Ex. C ++, Java
- Ngôn ngữ trung cấp Ex. C
- Hội đồng ngôn ngữ cấp thấp
- cuối cùng là cấp độ thấp nhất như Ngôn ngữ máy.
Một trình biên dịch là một chương trình giúp chuyển đổi một chương trình từ một mức độ ngôn ngữ khác. Ví dụ chuyển đổi chương trình C ++ thành mã máy.
Trình biên dịch java chuyển đổi mã java cấp cao thành mã byte (cũng là một loại mã máy).
Một thông dịch viên là một chương trình giúp chuyển đổi một chương trình ở một mức độ khác ngôn ngữ lập trình tại cùng cấp. Ví dụ chuyển đổi chương trình Java thành C ++
Trong Java, trình tạo mã Just In Time chuyển đổi mã byte thành mã máy gốc có cùng cấp độ lập trình.
Do đó, Java vừa được biên dịch cũng như ngôn ngữ diễn giải.
Tại sao Java chậm?
Hai lý do chính đằng sau sự chậm chạp của Java là
- Liên kết động: Không giống như C, liên kết được thực hiện vào thời gian chạy, mỗi khi chương trình được chạy trong Java.
- Trình thông dịch thời gian chạy: Việc chuyển đổi mã byte thành mã máy gốc được thực hiện vào thời gian chạy trong Java, điều này làm cho tốc độ chậm lại
Tuy nhiên, phiên bản mới nhất của Java đã giải quyết các nút thắt hiệu năng ở mức độ lớn.
Tóm tắt :
- Hình thức đầy đủ của JVM là Máy ảo Java. JVM là công cụ điều khiển Mã Java. Nó chuyển đổi mã byte Java thành ngôn ngữ máy.
- Trong JVM, mã Java được biên dịch thành mã byte. Mã byte này được giải thích trên các máy khác nhau
- JIT là viết tắt của trình biên dịch Just-in-time. JIT là một phần của Máy ảo Java (JVM). Nó được sử dụng để tăng tốc thời gian thực hiện
- So với các máy biên dịch khác, Java có thể chậm thực thi.
إرسال تعليق