Câu trả lời:
Dường như Trình biên dịch GNU cho Java có thể chuyển đổi mã nguồn Java thành mã byte Java hoặc mã máy. Nó cũng có thể chuyển đổi mã byte Java hiện có thành mã máy. Tuy nhiên, tin tức mới nhất là từ năm 2009, vì vậy tôi không chắc nó hiện tại như thế nào và liệu nó có thể xử lý các tính năng mới nhất của ngôn ngữ Java hay không.
Không hoàn toàn trực tiếp trả lời OP, nhưng có lẽ là một điều thú vị sang một bên. Java có thể được chạy trong ba chế độ:
-Xint
cờ - Giải thích - Chỉ mã byte-Xcomp
cờ - Biên dịch - máy biên dịch-Xcomp
vì tôi không thể tìm thấy tài liệu đó trong tài liệu JDK 7 hoặc tài liệu tùy chọn HotSpot và không chắc chắn nếu bạn có một số bí mật danh sách gửi thư ẩn mà chúng tôi, những người bình thường, không biết :-)
javac
? Khi sử dụng -Xcomp, mặc định nó có xuất ra một tệp nhị phân không?
Có thể tốt hơn để phát hiện hệ điều hành bằng System.getProperty (INTERN os.name tựa) . Điều đó sẽ cho phép bạn chọn hỗ trợ nhiều hơn một HĐH, nhưng loại trừ các HĐH khác.
java -Dos.name=MacOS
.
Bây giờ: GraalVM cho phép bạn biên dịch các chương trình của mình trước thời hạn thành một tệp thực thi riêng. Hãy xem tính năng hình ảnh gốc :
Tóm tắt
https://www.graalvm.org/docs/getting-started/#native-images
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 soạn trước thời hạn'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Câu hỏi liên quan: 'Tôi có thể biên dịch Java thành mã gốc không?' https://stackoverflow.com/questions/2991799/can-i-compile-java-to-native-code/50555050#50555050
PS GCJ không được duy trì nữa.
Nguồn: 'Việc xóa gcj' http://tromey.com/blog/?p=911