Java chạy trên một cỗ máy không hề tồn tại: JVM giải thích trong 13 phút
Hidden Layer
0:00 / 0:00
Java chạy trên một cỗ máy không hề tồn tại: JVM giải thích trong 13 phút
143 просмотра · 3 нед. назад
Hidden Layer
26 подписчиков
143 просмотра · 3 нед. назад
#HiddenLayer #CongNghe #KienThucCongNghe
Khi bạn chạy một chương trình Java, thứ đầu tiên nhận lệnh không phải Windows, không phải Mac, cũng không phải con chip trong máy bạn. Đó là một cỗ máy không hề tồn tại: máy ảo Java (JVM).
Tập 2 của series Java trên Hidden Layer đi vào bên trong JVM:
• Nguồn gốc: một dự án nhỏ ở Sun Microsystems từ năm 1991, nhắm tới tivi tương tác, thiết bị Star7 và cái tên Oak.
• Giải pháp: thay vì viết cho từng loại chip, tạo ra một "con chip tưởng tượng" và dịch code sang ngôn ngữ của nó: bytecode.
• Vì sao mọi file .class đều mở đầu bằng CAFEBABE.
• Cái giá của lớp trung gian, và cách HotSpot cùng kỹ thuật JIT giúp Java nhanh hơn rất nhiều.
• Vì sao ứng dụng Android viết bằng Java hay Kotlin lại không chạy trên JVM.
Lời hứa "Viết một lần, chạy mọi nơi" chưa bao giờ đúng tuyệt đối, nhưng ý tưởng viết cho một lớp trung gian vẫn sống: .NET và WebAssembly cũng đi theo cùng cách nghĩ.
Bạn đã bao giờ gặp cảnh code chạy ngon trên máy mình, sang máy khác thì hỏng chưa? Kể ở phần bình luận.
Tập 1 — Phân biệt Java và JavaScript: [link tập 1]
Danh sách phát Câu chuyện Java: [link playlist]
CHƯƠNG
00:00 Code Java không chạy trên máy bạn?
00:55 Dự án nhỏ ở Sun và thiết bị Star7
02:18 Bài toán: mỗi con chip một thứ tiếng
03:14 Giải pháp: JVM, cỗ máy tưởng tượng
04:42 Bytecode và bí mật CAFEBABE
06:20 Cái giá: chậm và "gỡ lỗi mọi nơi"
07:32 HotSpot: tìm những điểm nóng
08:23 JIT: phiên dịch viên có cuốn sổ
09:16 JVM không biết Java: Kotlin, Scala và hệ sinh thái
10:21 Android: ngoại lệ trong túi quần
11:41 Ghép lại bức tranh và tập sau
NGUỒN CHÍNH
• The Java Virtual Machine Specification (Oracle): docs.oracle.com/javase/specs
• Java HotSpot VM: en.wikipedia.org/wiki/HotSpot_(virtual_machine)
• UCSD Pascal và p-Machine: en.wikipedia.org/wiki/UCSD_Pascal
• Java class file (CAFEBABE): en.wikipedia.org/wiki/Java_class_file
• Android Runtime (ART): source.android.com/docs/core/runtime/configure
• Sun kiện Microsoft (1997): en.wikipedia.org/wiki/Microsoft_Java_Virtual_Machine
Lưu ý: ngưỡng 10.000 lần gọi là thiết lập mặc định của HotSpot bản máy chủ thời đó; JVM hiện nay dùng biên dịch nhiều tầng với ngưỡng khác.
#Java #JVM #LapTrinh