Xin chào, bài viết này sẽ trình bày một điều rất cần thiết khi bắt đầu học Java. Đó chính là Java hoạt động như thế nào? . Điều này giúp hiểu bản chất của Java mà mình đã không làm được khi mới bắt đầu.
Java hoạt động như thế nào
Chắc hẳn các bạn đã biết đến câu nói đầy quyến rũ “Write-one/Run-anywhere”. Tại sao có thể viết code một lần mà chạy trên tất cả mọi nơi (thiết bị) như: điện thoại, máy tính, laptop, điện thoại cục gạch, hãy xem ví dụ và hình ảnh dưới đây.
Mục tiêu: Yêu cầu coder Tùng Mây viết một con game Caro và có thể chạy trên các thiết bị: điện thoại, máy tính và máy tính bảng
- File source code sau khi được Tùng Mây sử dụng ngôn ngữ Java để viết mã.
- Chạy file source code bằng trình biên dịch (compiler). Compiler sẽ kiểm tra lỗi, biên dịch sẽ hoàn tất nếu không có lỗi xảy ra.
- Compiler tạo ra file mới, được mã hóa thành Java bytecode. Bất kì thiết bị nào có khả năng chạy Java đều có thể thông dịch (interpret) file này sang thứ gì đó mà nó có thể chạy.
- Các thiết bị được cài đặt máy ảo Java (JVM – Java virtual machine). Khi các thiết bị chạy game, JVM sẽ đọc và chạy các file bytecode.
Ví dụ thực tế
Sau khi nắm được cơ bản cách mà Java hoạt động thì hãy thực hành luôn một ví dụ cụ thể. Công việc bạn cần làm là: Viết file mã nguồn, biên dịch nó sang file bytecode bằng trình biên dịch bằng cách chạy câu lệnh javac, sau đó chạy file bytecode trên JVM.
1. Tạo file source code và lưu là HelloWord.java
2. Biên dịch file HelloWord.java bằng câu lệnh javac (ứng dụng trình biên dịch). Nếu thành công sẽ có một file HelloWord.class. File .class này được trình biên dịch tạo nên từ các mã bytecode.
3. Mã bytecode của file HelloWord.class sau khi được biên dịch
4. Chạy chương trình bằng cách khởi động JVM với file HelloWorld.class. JVM sẽ dịch mã bytecode thành thứ mà nền tảng nó hiểu được và chạy được.
Kết luận
Như vậy là các bạn có thể giải thích được thuật ngữ “Write-one/Run-anywhere” sau khi hiểu được cách hoạt động của Java. Chỉ cần viết code một lần, biên dịch nó thành bytecode và mang đi bất cứ đâu mà JVM hoạt động. JVM sẽ làm nốt nhiệm vụ còn lại mà mình không cần quan tâm. Ví dụ như viết code ở hệ điều hành Windows, biên dịch sang bytecode và mang sang hệ điều hành Ubuntu để chạy chẳng hạn.
Nối tiếp bài viết này là bài viết có nội dung về JDK, JRE và JVM.
Tài liệu tham khảo
- Wiki: Java bytecode – Wikipedia
- Oracle documentation: Overview of Oracle JVM