Nền tảng Kiến thức - Hành trang tới Tương lai
Card image

Chương 2-Bài 2. Giới thiệu JVM, JRE, JDK trong Java

Tác giả: Dương Nguyễn Phú Cường #11947
Ngày đăng: 2 tháng trước
Lượt xem: 155

JVM (Java Virtual Machine) là gì?

JVM (Java Virtual Machine) là máy ảo trừu tượng mà bản thân nó có ISA, memory, stack, heap... Nó có thể giúp máy tính chạy các chương trình Java. Nó cung cấp môi trường runtime mà trong đó Java bytecode có thể được thực thi.

JVM là có sẵn cho nhiều nền tảng (Windows, Linux...). JVM, JRE và JDK là phụ thuộc nền tảng, bởi vì cấu hình của mỗi OS (hệ điều hành) là khác nhau. Nhưng, Java là độc lập nền tảng.

Các tác vụ của JVM

JVM thực hiện các tác vụ chính sau:

  • Tải code
  • Kiểm tra code
  • Thực thi code
  • Cung cấp môi trường runtime

JVM cung cấp các định nghĩa cho: khu vực bộ nhớ, định dạng class file, thiết lập Register, Heap cho Trình dọn rác và các báo cáo lỗi nghiêm trọng (Fatal Error), …

Kiến trúc của JVM

  • Classloader: Là một hệ thống con của JVM được sử dụng để tải class file.

  • Class (method) Area: Lưu trữ cấu trúc mỗi lớp, chẳng hạn như hằng, trường, dữ liệu phương thức, code của phương thức, …

  • Heap: Nó là khu vực dữ liệu runtime mà trong đó đối tượng được cấp phát.

  • Stack: Stack trong Java lưu giữ các Frame. Nó giữ các biến cục bộ và các kết quả cục bộ, và thực hiện một phần nhiệm vụ trong phần triệu hồi và trả về phương thức. Mỗi Thread có một Stack riêng, được tạo tại cùng thời điểm với Thread.

    Một Frame mới được tạo mỗi khi một phương thức được triệu hồi và bị hủy khi lời triệu hồi phương thức là kết thúc.

  • Program Counter Register: Nó chứa địa chỉ của chỉ lệnh JVM hiện tại đang được thực thi.

  • Native Method Stack: Bao gồm tất cả các phương thức tự nhiện được sử dụng trong ứng dụng.

  • Execution Engine: Phần này bao gồm:

    Một bộ xử lý ảo Virtual Processor

    Một trình thông dịch Interpreter. Đọc Bytecode Stream sau đó thực thi các chỉ thị.

    Just-In-Time (JIT) Compiler: được sử dụng để cải thiện hiệu suất. JIT biên dịch các phần của Bytecode mà có cùng tính năng tại cùng một thời điểm, và vì thế giảm lượng thời gian cần thiết để biên dịch. Ở đây khái niệm Compiler là một bộ biên dịch tập chỉ thị của JVM thành tập chỉ thị của một CPU cụ thể.


JRE (Java Runtime Environment) là gì?

JRE (Java Runtime Environment) được sử dụng để cung cấp môi trường runtime. Nó là trình triển khai của JVM. JRE bao gồm tập hợp các thư viện và các file khác mà JVM sử dụng tại runtime. Trình triển khai của JVM cũng được công bố bởi các công ty khác ngoài Sun Micro Systems.


JDK (Java Development Kit) là gì?

JDK (Java Development Kit) là tập hợp các tools, công cụ dùng để lập trình, biên dịch, debug và thực thi chương trình Java. JDK bao gồm cả JVM và JRE.


Chương trình học


  1. Giới thiệu, cài đặt, cấu hình môi trường lập trình 1
    1. Cài đặt trình soạn thảo code Eclipse IDE #10514
  2. Java căn bản 6
    1. Giới thiệu, đặc điểm, lịch sử của ngôn ngữ lập trình Java #11940
    2. Giới thiệu JVM, JRE, JDK trong Java #11947
    3. Viết chương trình Java đầu tiên (java hello world) #11950
    4. Biến (variables) và kiểu dữ liệu nguyên thủy (primitive data types) trong Java #11961
    5. Nhập liệu qua cửa sổ console (input), In ra màn hình qua cửa sổ console (output) #11970
    6. Toán tử (operators) trong Java #11980
  3. Java căn bản - Bài tập 3
    1. Java Core - Lab 1 - Lập trình căn bản #11988
    2. Java Core - Lab 2 - Câu lệnh điều kiện IF ELSE, SWITCH CASE #11993
    3. Java Core - Lab 3 - Vòng lặp FOR, WHILE, DO WHILE #11996
  4. Java hướng đối tượng - Object Oriented Programming (OOP) 12
    1. Gói (packages) trong Java #11999
    2. Lớp (Class) và Thể hiện (Object) trong Java #12005
    3. Hàm khởi tạo (constructor) trong Java #12010
    4. Kế thừa (Inheritence) và mối quan hệ IS-A trong Java #12022
    5. Thuộc tính truy xuất (Access Modifier) trong Java #12011
    6. Tính bao đóng (Encapsulation) trong Java #12014
    7. Nạp chồng (Overloading) và Ghi đè (Overriding) #12017
    8. Đa hình (Polymorphism) #12025
    9. Lớp trừu tượng (Abstract class) #12028
    10. Giao diện (Interface) / Hợp đồng (Contract) trong Java #12031
    11. So sánh giữa Lớp trừu tượng (Abstract class) và Giao diện (Interface) trong Java #12047
    12. Mối quan hệ liên kết (association) và mối quan hệ HAS-A giữa các Lớp (class) #12039
Các bài học

Chương trình học

Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...

Chương trình học


  1. Giới thiệu, cài đặt, cấu hình môi trường lập trình 1
    1. Cài đặt trình soạn thảo code Eclipse IDE #10514
  2. Java căn bản 6
    1. Giới thiệu, đặc điểm, lịch sử của ngôn ngữ lập trình Java #11940
    2. Giới thiệu JVM, JRE, JDK trong Java #11947
    3. Viết chương trình Java đầu tiên (java hello world) #11950
    4. Biến (variables) và kiểu dữ liệu nguyên thủy (primitive data types) trong Java #11961
    5. Nhập liệu qua cửa sổ console (input), In ra màn hình qua cửa sổ console (output) #11970
    6. Toán tử (operators) trong Java #11980
  3. Java căn bản - Bài tập 3
    1. Java Core - Lab 1 - Lập trình căn bản #11988
    2. Java Core - Lab 2 - Câu lệnh điều kiện IF ELSE, SWITCH CASE #11993
    3. Java Core - Lab 3 - Vòng lặp FOR, WHILE, DO WHILE #11996
  4. Java hướng đối tượng - Object Oriented Programming (OOP) 12
    1. Gói (packages) trong Java #11999
    2. Lớp (Class) và Thể hiện (Object) trong Java #12005
    3. Hàm khởi tạo (constructor) trong Java #12010
    4. Kế thừa (Inheritence) và mối quan hệ IS-A trong Java #12022
    5. Thuộc tính truy xuất (Access Modifier) trong Java #12011
    6. Tính bao đóng (Encapsulation) trong Java #12014
    7. Nạp chồng (Overloading) và Ghi đè (Overriding) #12017
    8. Đa hình (Polymorphism) #12025
    9. Lớp trừu tượng (Abstract class) #12028
    10. Giao diện (Interface) / Hợp đồng (Contract) trong Java #12031
    11. So sánh giữa Lớp trừu tượng (Abstract class) và Giao diện (Interface) trong Java #12047
    12. Mối quan hệ liên kết (association) và mối quan hệ HAS-A giữa các Lớp (class) #12039

Bài học trước Bài học tiếp theo