Trình biên dịch Java hoạt động thế nào?

Ngày đăng: 19/06/2020   -    Cập nhật: 19/06/2020
Từ bao lâu nay việc tương tác giữa người và máy tính như một điều hiển nhiên mà chẳng ai quan tâm đến phương thức tương tác đó là gì.

Máy tính thật ra là vật vô tri vô giác không thể suy nghĩ và hành động được như con người chúng ta.

Nhưng nhờ các lập trình viên mà máy tính đã làm nên những điều thực sự kỳ diệu.

Chúng ta thường hay hiểu nhầm rằng là máy tính hiểu được những gì chúng ta ra lệnh cho nó, nhưng bản chất bên trong không phải như thế.

Cơ chế giao tiếp giữa người với máy tính phải thông qua một quá trình biên dịch và thông dịch, quá trình này chúng ta không thể nhìn thấy được và cũng không phải là khái niệm dành cho người dùng phổ thông.

Đặc biệt là trong lập trình, chúng ta thường xuyên nghe đến khái niệm trình biên dịch, vậy trình biên dịch là gì? Và cụ thể, trình biên dịch Java hoạt động như thế nào?


Cách trình biên dịch Java hoạt động


Trình biên dịch Java hoạt động như thế nào?

Trình biên dịch Java hoạt động như thế nào?
 
Thực tế, trình biên dịch trong Java cũng là một chương trình máy tính – làm nhiệm vụ dịch mã nguồn từ ngôn ngữ Java của bạn sang một thứ ngôn ngữ mà máy tính có thể hiểu và thực thi được hay còn được gọi là ngôn ngữ máy.

Giống như việc bạn đang nói chuyện với một người Mỹ tên là Michael:


  • Bạn nói tiếng Việt
  • Michael nói tiếng Anh
  • Mỗi người nói một thứ tiếng khác nhau và bạn cần một người phiên dịch để bạn và Michael có thể giao tiếp được với nhau thuận tiện hơn, thì trình biên dịch cũng đóng vai trò như người phiên dịch trên.

Trình biên dịch còn được giao nhiệm vụ đảm bảo rằng các câu lệnh bạn viết ra phải đúng cú pháp, nó giống như được tạo ra để vừa biên dịch và vừa kiểm tra chính tả cho lập trình viên vậy.

Nó vốn được viết ra từ một loại ngôn ngữ khác, nên cũng giống như bao ngôn ngữ lập trình mà bạn đã biết, trình biên dịch làm mọi việc theo một trình tự logic và khoa học dưới dạng một bộ khung đã thiết kế sẵn.



Cách trình biên dịch Java hoạt động

Cách trình biên dịch Java hoạt động

 
Đầu tiên, với các mã nguồn Java được viết ra, IDE - cái vốn đã được tích hợp trình biên dịch, cứ mỗi ký tự code được viết ra, nó sẽ tự kiểm tra cú pháp và thông báo để người lập trình có thể sửa kịp thời.

> Đọc thêm: TOP IDE Java tốt nhất

File code trong Java sẽ được lưu dưới dạng [tên-class].java

Tiếp đến, khi code được xem như là hoàn thành, bạn cần thực thi mã code bạn viết ra.

Trình biên dịch tiến hành compile (translate) mã nguồn thành mã máy dưới dạng byte code.

Tức là từ mà nguồn dạng [tên-class].java sẽ được biên dịch thành [tên-class].class.

Cuối cùng, file Java  dạng [tên-class].class sẽ được thực thi tại bất cứ hệ điều hành nào, từ Windows, Linux đến MacOs, chỉ cần có cài sẵn máy ảo JVM là được.

Chẳng hạn như với File nguồn (Ahehe.java) có mã như sau:




public class Ahehe {
    public static void main(String[] args) {
        System.out.println(3 + 4);
    }
}
 

 
Thì sau khi biên dịch thành công, ta nhận được một File Ahehe.class mà khi xem thì nội dung chỉ nhìn thấy được như sau:

Ví dụ nội dung trong file Java class

Ví dụ nội dung trong file Java class

Nội dung này rất ít lập trình viên có thể hiểu được. Nhưng JVM lại hiểu được và biết cần làm gì với chúng.

Trong ví dụ trên, ta có thể hiểu nôm na theo ngôn ngữ tự nhiên rằng là trình biên dịch sẽ chuyển lần 3, 4 và dấu cộng (+) vào một ngăn xếp (stack).

Phương thức p
rintln() sẽ lấy các giá trị từ trên xuống trong ngăn xếp, thực thi phép tính và in kết quả ra màn hình, sau đó ngăn xếp lại rỗng.

Thông dịch và Biên dịch khác nhau ở điểm nào?


Nhiều bạn đã code Java được một thời gian nhưng vẫn nhầm lẫn giữa trình biên dịch và thông dịch.

Vậy, cụ thể chúng khác nhau như thế nào?

Như đã nói, trình biên dịch có chức năng dịch mã nguồn thành ngôn ngữ máy để máy tín có thể hiểu và thực thi.

Trình biên dịch vừa phân tích từ ngữ, cú pháp và ngữ nghĩa -> tạo mã trung gian đến tối ưu và mã hoá thì mới xong một quy trình biên dịch và xem như hoàn thành nhiệm vụ.

Trình thông dịch là một thay thế để thực thi một ngôn ngữ lập trình và thực hiện công việc tương tự như một trình biên dịch.

Nhưng trình thông dịch xử lý cây cú pháp trực tiếp để truy cập các biểu thức và thực thi câu lệnh thay vì tạo mã trung gian.

Một trình thông dịch có thể yêu cầu xử lý cùng một cây cú pháp nhiều lần, đó là lý do tại sao tốc độ sẽ đối chậm hơn so với thực hiện chương trình được biên dịch.

Cả trình biên dịch và trình thông dịch đều có cùng một công việc nhưng khác nhau về quy trình vận hành.

Trình biên dịch lấy mã nguồn theo cách tổng hợp (lấy một cục và thực thi hết)

Trong khi Trình thông dịch lấy các phần cấu thành của mã nguồn (lấy và thực thi từng ít một).
 
Mặc dù cả trình biên dịch và trình thông dịch đều có những ưu điểm và nhược điểm nhất định.

Với trình thông dịch thì mã nguồn có thể thực thi ở mọi nơi mà không cần phải biên dịch trước.

Nhưng bù lại thì trình biên dịch sẽ tiết kiệm thời gian thực thi hơn.


Tổng kết


Trên đây là một chút kiến thức về trình biên dịch Java. Hi vọng nó không khiến bạn hoa mắt, chóng mặt.

Khi bạn mới Học Java thì bạn cũng không cần hiểu quá nhiều về trình biên dịch Java đâu.

Vì hầu hết, các lập trình viên Java như chúng ta không mấy bận tâm đến cách chúng hoạt động như thế nào và hoạt động ra sao.

Nhưng nó sẽ hữu ích và rất cần thiết nếu bạn là một kiến trúc sư phần mềm – người thiết kế và đưa ra các giải pháp cho các chương trình.

> Đọc thêm: 10 Thư viện Java thường sử dụng nhất



---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150 
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate

Khóa học Lập trình Android tại Hà Nội

59 giờ
NIIT - ICT Hà Nội cung cấp khóa học Lập trình Android với ngôn ngữ lập trình Java. Chương trình cung ứng lập trình viên Android theo yêu cầu doanh nghiệp.

Lập trình Android Nâng cao

56 giờ
Khóa học Android nâng cao cung cấp kiến thức và kỹ năng chuyên sâu về lập trình Android. Phát triển ứng dụng tiên triến như: Lập trình giao diện tùy biến, xử lý dữ liệu nâng cao
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!