Skip to content
  • Bảng vàng Mankai
  • Tin tức
  • Liên hệ
  • VI
  • JP
Mankai AcademyMankai Academy
  • Giới thiệu
    • Về Mankai
    • Đội ngũ
  • JLPT
  • Truyền nghề gió đông
  • IT Talk
  • Đào tạo doanh nghiệp
Trang chủ / Kiến thức chuyên môn / JVM là gì? Tìm hiểu chi tiết về Java Virtual Machine trong Java
  • Dành cho người mới bắt đầu
  • Dành cho người đã có nền tảng
  • Dành cho người muốn đi Nhật
  • Nhận kho tài liệu miễn phí
Test tư duy lập trình miễn phí

Đăng ký nhận tin tức từ Rikkei Academy

    31/05/2023

    JVM là gì? Tìm hiểu chi tiết về Java Virtual Machine trong Java

    Phí Thanh 04 phút đọc
    Jvm La Gi Rikkei Academy

    Mục lục

    Toggle
    • JVM là gì?
    • Nhiệm vụ của JVM là gì?
    • Kiến trúc của JVM là gì?
      • Classloader
      • Class (Method) Area
      • Heap
      • Stack
      • Program Counter Register
      • Native Method Stack
      • Execution Engine
      • Java Native Interface
    • Cách hoạt động của JVM trong Java
    • Cách tải JVM là gì?
    • Kết luận

    Kiến thức về nền tảng Java và các thành phần của nó là một trong những kiến thức căn bản và thiết yếu khi tìm hiểu về ngôn ngữ lập trình Java. Trong bài viết này, Rikkei Academy sẽ cùng bạn tìm hiểu 1 trong 3 thành phần cốt lõi của Java Platform – JVM là gì?

    JVM là gì?

    JVM là viết tắt của Java Virtual Machine (Máy ảo Java), là một phần quan trọng của nền tảng Java (Java Platform). Nó là một môi trường thực thi cho các chương trình Java, cho phép chúng được thực thi trên nhiều hệ điều hành khác nhau mà không cần phải biên dịch lại mã nguồn cho từng hệ điều hành riêng lẻ.

    Máy ảo Java cũng đảm bảo sự tương thích với các phiên bản Java trước đó, nghĩa là các chương trình Java của phiên bản cũ vẫn có thể chạy trên các phiên bản Java mới hơn mà không cần sửa đổi. Điều này đảm bảo tính ổn định và liên tục của các ứng dụng Java khi có các bản cập nhật mới của JVM và Java.

    Nhiệm vụ của JVM là gì?

    • Tải mã bytecode và các tệp lớp của ứng dụng Java.
    • Xác minh tính hợp lệ của mã bytecode và các tệp lớp.
    • Thực thi mã bytecode và các tệp lớp bằng cách sử dụng trình thông dịch hoặc trình biên dịch Just-In-Time (JIT).
    • Cung cấp môi trường thời gian chạy (JRE) cho ứng dụng Java
    • Quản lý bộ nhớ và đối tượng của ứng dụng Java, bao gồm việc cấp phát và thu gom rác.
    • Cung cấp các tiện ích hỗ trợ như quản lý lỗi và ghi nhật ký.
    • Cung cấp các API và thư viện chuẩn để phát triển các ứng dụng Java.
    • Đảm bảo tính bảo mật của ứng dụng Java bằng cách kiểm soát quyền truy cập và cung cấp môi trường thực thi được kiểm soát.
    • Cung cấp khả năng giao tiếp với các thư viện native và các ứng dụng được viết bằng các ngôn ngữ khác như C hoặc C++ thông qua Java Native Interface (JNI).
    • Cung cấp định nghĩa cho các khu vực như khu vực bộ nhớ, định dạng tệp lớp, bộ đăng ký, bộ nhớ heap được thu gom rác và báo cáo lỗi nghiêm trọng.

    Tìm hiểu thêm: JRE là gì? Tìm hiểu chi tiết về Java Runtime Environment

    Kiến trúc của JVM là gì?

    Kiến trúc JVM (JVM Architecture) bao gồm các thành phần sau:

    Jvm La Gi Rikkei Academy
    Cấu trúc JVM trong Java

    Classloader

    Classloader là một hệ thống con của JVM được sử dụng để tải các tệp lớp và các tài nguyên của ứng dụng Java. Khi chúng ta chạy chương trình Java, nó sẽ được tải trước bởi classloader. Có ba classloader được tích hợp sẵn trong Java.

    • Bootstrap ClassLoader: Đây là classloader đầu tiên là siêu lớp của Extension classloader. Nó tải tệp rt.jar chứa tất cả các tệp lớp của Java Standard Edition như các lớp gói java.lang, java.net, java.util, java.io, java.sql v.v.
    • Extension ClassLoader: Đây là classloader con của Bootstrap và là classloader cha của System classloader. Được sử dụng để tải các tệp .jar chứa các lớp mở rộng của Java và các API của bên thứ ba.
    • System/Application ClassLoader: Đây là classloader con của Extension classloader. Nó tải các tệp lớp từ classpath – một biến môi trường hoặc một tùy chọn dòng lệnh cho phép người dùng chỉ định vị trí các tệp lớp được sử dụng trong ứng dụng Java.

    Class (Method) Area

    Class (Method) Area được sử dụng để lưu trữ các metadata của các lớp Java và các phương thức của chương trình.

    Heap

    Đây là nơi lưu trữ các đối tượng Java được cấp phát bởi chương trình. Khi một đối tượng Java được tạo ra, Heap sẽ lưu trữ đối tượng đó. Khi đối tượng không còn được sử dụng nữa, đối tượng sẽ bị xóa khỏi Heap bởi garbage collector và giải phóng không gian bộ nhớ.

    Stack

    Java Stack lưu trữ các frame. Nó giữ các biến cục bộ và kết quả phần (partial results), và đóng vai trò trong việc gọi và trả về phương thức.

    Mỗi luồng (threads) có một JVM stack riêng, được tạo cùng lúc với luồng.

    Một frame mới được tạo mỗi khi một phương thức được gọi. Frame bị hủy khi việc gọi phương thức của nó hoàn thành.

    Program Counter Register

    PC Register chứa địa chỉ của chỉ dẫn đang được thực hiện từ máy ảo Java. Khi chương trình Java được thực thi trên JVM, PC Register sẽ lưu trữ địa chỉ của lệnh tiếp theo mà chương trình sẽ thực thi. Khi lệnh hiện tại được thực thi, giá trị của PC Register sẽ được cập nhật để trỏ tới địa chỉ của lệnh tiếp theo trong chương trình.

    Native Method Stack

    Nó chứa tất cả các phương thức native được sử dụng trong ứng dụng.

    Execution Engine

    Nó bao gồm:

    • Một bộ xử lý ảo (virtual processor)
    • Trình thông dịch: Đọc luồng bytecode sau đó thực thi các hướng dẫn.
    • Trình biên dịch Just-In-Time (JIT): Được sử dụng để cải thiện hiệu suất. JIT biên dịch các phần của bytecode có chức năng tương tự cùng một lúc, giảm thời gian cần thiết cho biên dịch. Ở đây, thuật ngữ “trình biên dịch” đề cập đến một trình dịch từ bộ chỉ thị của máy ảo Java (JVM) sang bộ chỉ thị của một CPU cụ thể.

    Java Native Interface

    Java Native Interface (JNI) là một framework cung cấp một giao diện (interface) để giao tiếp với một ứng dụng khác được viết bằng một ngôn ngữ khác như C, C ++, Assembly… Java sử dụng khung JNI để gửi đầu ra đến Console hoặc tương tác với thư viện hệ điều hành.

    Tìm hiểu thêm: JDK Là Gì? Đây Là Những Thông Tin Bạn Cần Biết!

    Cách hoạt động của JVM trong Java

    Java Virtual Machine (JVM) đọc và thực thi mã bytecode được tạo ra từ mã nguồn Java sau khi được biên dịch. Khi chương trình Java được biên dịch, nó sẽ tạo ra một tệp mã bytecode, chứa các mã lệnh được mã hóa dưới dạng byte. JVM sẽ lấy tệp này và dịch nó thành mã máy tính để thực thi trên hệ thống.

    Jvm La Gi Rikkei Academy
    Cách hoạt động của JVM

    Cách tải JVM là gì?

    Với JVM, bạn sẽ không cài đặt một cách độc lập. Khi bạn tải và cài đặt JRE hoặc JDK thì JVM cũng được tải và cài đặt đồng thời. Việc tải JRE hoặc JDK sẽ phụ thuộc vào nhu cầu của bạn.

    Nếu bạn chỉ muốn chạy các ứng dụng Java mà không phải phát triển hoặc sửa đổi mã nguồn, bạn có thể tải và cài đặt JRE để sử dụng JVM.

    Nếu bạn muốn phát triển các ứng dụng Java hoặc sử dụng các công cụ phát triển như trình biên dịch và trình gỡ lỗi, bạn cần tải và cài đặt JDK.

    Tìm hiểu: Lộ trình học lập trình Java cơ bản

    Kết luận

    Qua bài viết này, Rikkei Academy đã cung cấp các thông tin cơ bản về JVM là gì, bao gồm khái niệm, nhiệm vụ, cách hoạt động và cấu trúc của JVM trong Java. Hy vọng qua đó đã giúp bạn hiểu rõ hơn về nền tảng Java nói riêng và ngôn ngữ lập trình Java nói chung.

    Nếu bạn đang muốn tìm kiếm khóa học Java với lộ trình tinh gọn, kiến thức, kỹ năng bám sát thực tế và cam kết việc làm thì hãy tham khảo Rikkei Academy! Để biết thêm thông tin chi tiết về khóa học lập trình tại Rikkei Academy, nhanh tay đăng ký để nhận tư vấn miễn phí ngay nhé!

    Nguồn tham khảo:

    https://www.javatpoint.com/jvm-java-virtual-machine

    https://www.w3schools.in/java/java-virtual-machine

    Bài viết cùng chủ đề

    • Học lập trình Đà Nẵng 20/12/202204 phút đọc Học lập trình ở đâu Thành phố Hồ Chí Minh
    • Học lập trình Đà Nẵng 21/12/202204 phút đọc HỌC LẬP TRÌNH Ở ĐÂU TỐT
    • Object Trong Java 28/05/202304 phút đọc Những Gì Bạn Cần Biết Về Đối Tượng (Object) Trong Java!
    • Interface Va Abstract Class Java 29/05/202304 phút đọc Interface Và Abstract Class Java: Khác Biệt Và Cách Sử Dụng
    • Thread Trong Java Rikkei Academy 18/07/202304 phút đọc Thread trong Java: 5 Phút Giải Mã Tất Tần Tật Về Luồng
    • lập trình java là gì 07/09/202204 phút đọc Java là gì? Có Nên Học Lập Trình Java Không?

    Khởi động hành trình của bạn

    Hãy bước vào hành trình mới để khám phá tiềm năng và chinh phục những mục tiêu của bạn ngay hôm nay.

    Liên hệ Nhận tư vấn

    HỌC VIỆN ĐÀO TẠO VÀ PHÁT TRIỂN TIẾNG NHẬT THỰC CHIẾN

    HỌC VIỆN ĐÀO TẠO VÀ PHÁT TRIỂN TIẾNG NHẬT THỰC CHIẾN

    THÔNG TIN LIÊN HỆ

    Địa chỉ: HPC Landmark 105 Văn Khê, La Khê, Hà Đông, Hà Nội

    Hotline: 0329 713 145

    Email: support@mankai.edu.vn

    LIÊN KẾT NHANH

    Giới thiệu
    JLPT
    Truyền nghề gió đông
    IT Talk
    Đào tạo Doanh ngiệp
    Bảng vàng Mankai
    Tin tức
    Liên hệ

    THEO DÕI CHÚNG TÔI TẠI

    Copyright 2024 © Mankai Academy All rights reserved.
    • Về chúng tôi
    • Khác
    • Bảng vàng Mankai
    • Tin tức
    • Liên hệ
    • Giới thiệu
      • Về Mankai
      • Đội ngũ
    • JLPT
    • Truyền nghề gió đông
    • IT Talk
    • Đào tạo doanh nghiệp