Vai trò của JDK ,JRE , JVM , Heap và Stack trong Java

I. JDK , JRE và JVM trong Java

=> Trong bài học ngày hôm nay mình sẽ giới thiệu ý nghĩa vai trò cụ thể của nó trong việc phát triển và thực thi một ứng dụng viết bằng JAVA.

1. Khái niệm

=> JDK (Java Development Kit)chứa tất cả mọi thứ sẽ được yêu cầu để phát triển và chạy bất kì ứng dụng JAVA nào

=> JRE (Java Runtime Evironment) chứa tất cả mọi thứ dùng để chạy ứng dụng viết bằng JAVA nhưng JRE không chứa thư viện để phát triển ứng dụng nó chỉ dùng để chạy.

=> JVM (Java Vitural Machine) là một máy ảo của java dùng để thực thi các mã java byte code , máy ảo của java được cài đặt trên hầu hết các thiết bị .

JAVA là ngôn ngữ độc lập với nền tảng , chạy trên mọi nền tảng nhưng JDK và JVM là phụ thuộc vào hệ điều hành.



2. Cơ chế hoạt động.

Để làm rõ cơ chế hoạt động của bộ máy mình sẽ lấy 1 ví dụ :

=> Chúng ta tạo ra 1 class java tên là HelloWorld.java bằng các thư viện có sẵn trong JDK

=> Tiến hành chạy chương trình

=> Có một trình biên dịch (Java Compiler) có chức năng biên dịch các source code mà chúng ta tạo ra trở thành dạng byte code => tạo ra file HelloWorld.class đóng vai trò lưu trữ java bytecode

=> Để cho hệ điều hành có thể hiểu được javabyte code chúng ta cần JVM đóng vai trò là thông dịch trong quá trình thực thi ứng dụng.

Mô phỏng cơ chế :




Đây là từ một góc nhìn khác :

=> Source code được phát triển bằng JDK trong đó có Java Compiler là trình biên dịch => nó sẽ biên dịch java source code thành java byte code

=> JVM sẽ nạp các javabytecode trong JVM có một thành phần là Just - In - Time - Compiler (JIT)=> có thể nói JIT là cơ chế , sẽ chuyển JavaByteCode thành mã máy (mã 0 1) để hệ điều hành hiểu được từ đó thực thi ứng dụng.



II.HEAP AND STACK MEMORY.





1. Heap memory vs Stack memory.



Heap :

+ Bộ nhớ Heap cấp phát bộ nhớ cho các đối tượng để cho JRE thực thi chương trình.

+ Bất kì biến kiểu Object nào(new....) được tạo ra đều lưu trong Heap với những đối tượng không còn được tham chiếu sẽ bị cơ chế (Garbage Collection) thu hồi những vùng nhớ nó đã sử dụng.

+ Đối tượng trong vùng nhớ Heap là biến toàn cục.




Stack :

+ Lưu trữ các biến primitive và các biến cục bộ.

+ Lưu trữ các phương thức.

=> Khi bạn khởi tạo các phương thức và các thành phần bên trong phương thức đó.


=> Cá thành phần bên trong bộ nhớ stack nếu là biến cục bộ thì sẽ được cấp phát bởi bộ nhớ satck còn nếu là biến tham chiếu thì nó có sự liên kết tham chiếu tới và trỏ tới vùng của bộ nhớ Heap.











Nhận xét

Bài đăng phổ biến