Có cách nào để biên dịch từ Java sang mã máy (hoặc thư viện) độc lập mà không yêu cầu JVM không?
Có cách nào để biên dịch từ Java sang mã máy (hoặc thư viện) độc lập mà không yêu cầu JVM không?
Câu trả lời:
Đã từng có một công cụ gọi là GCJ là một phần của GCC, nhưng nó đã bị loại bỏ . Bây giờ, tất cả các liên kết trong trang GCC lại chuyển hướng đến các liên kết không phải GCJ của chúng.
NB: tất cả các nhận xét đều đề cập đến câu trả lời ban đầu của tôi nói rằng bạn có thể biên dịch Java sang mã gốc với GCJ.
Đúng!
Oracle đã và đang làm việc trên GraalVm, hỗ trợ Hình ảnh gốc. Kiểm tra tại đây: https://www.graalvm.org/
Hình ảnh gốc Tính năng hình ảnh gốc với GraalVM SDK giúp cải thiện thời gian khởi động của các ứng dụng Java và mang lại cho chúng một dấu ấn nhỏ hơn. Một cách hiệu quả, nó chuyển đổi mã bytecode chạy trên JVM (trên bất kỳ nền tảng nào) sang mã gốc cho một hệ điều hành / nền tảng cụ thể - đó là nguồn gốc của hiệu suất. Nó sử dụng các tính năng tối ưu hóa trước thời gian (AOT) tích cực để đạt được hiệu suất tốt.
Xem thêm:
Tóm tắt
https://www.graalvm.org/docs/getting-started/#native-images
Bản trình diễn: Hình ảnh gốc để khởi động nhanh hơn
https://www.graalvm.org/docs/examples/native-list-dir/
Chi tiết: 'Biên dịch trước thời gian'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Windows
chỉ có các chương trình đồ chơi hoạt động nhưng bất kỳ thứ gì cao cấp hơn và / hoặc khi sử dụng GUI
vẫn chưa hoàn thiện. Twitter
có thể sử dụng Linux
mà không có bất kỳ GUI
nhưng có lẽ họ cũng sử dụng phiên bản thương mại trong khi tôi chỉ dùng thử một phiên bản cộng đồng. Nó có thể hoạt động đối với một số trường hợp sử dụng nhưng các Windows
ứng dụng máy tính để bàn Java không phải là một trong số chúng, điều này vẫn khiến dự án hơi thất vọng. Excelsior JET
có thể làm điều này một cách đáng tin cậy nhưng nó đã ngừng hoạt động.
Excelsior JET là một trình biên dịch mã gốc sang Java thương mại. Tuy nhiên, nó đã bị ngừng sản xuất vào tháng 5 năm 2019.
Vâng, JIT trong JVM thực hiện chính xác điều đó cho bạn.
Trên thực tế, nó có thể tạo ra mã nhanh hơn so với việc biên dịch mã trước vì nó có thể tạo mã được tối ưu hóa cho nền tảng cụ thể dựa trên cách mã được sử dụng trong thời gian chạy.
JVM luôn có liên quan ngay cả khi một tỷ lệ phần trăm rất cao được biên dịch sang mã gốc vì bạn có thể tải và chạy mã byte động.
Một khả năng khác sẽ là RoboVM
. Tuy nhiên, nó dường như chỉ hoạt động Linux
, iOS
và Mac OS X
.
Cho đến ngày hôm nay, dự án vẫn còn tồn tại phần nào trái ngược với một số bài đăng trên mạng cho rằng dự án đã chết .