Có một số công cụ hiện có ( Excelsior JET , v.v.) yêu cầu chuyển đổi ứng dụng Java thành các tệp thực thi gốc ( *.exe
). Tuy nhiên, theo hiểu biết của tôi thì các công cụ này thực sự chỉ là tạo các trình bao bọc gốc gọi / thực thi java
từ trình bao hoặc dòng lệnh.
Nếu sự hiểu biết đó là không chính xác, tôi không thấy nó có thể như thế nào. Nếu một JVM ( java
process) đang chạy về cơ bản là một trình thông dịch hiệu năng cao, việc tải mã byte từ các tệp lớp Java một cách nhanh chóng, thì tôi không thấy một ứng dụng Java (một tập hợp các tệp mã byte đóng vai trò đầu vào cho JVM) có thể như thế nào thực sự chuyển đổi thành một thực thi.
Điều này là do quá trình JVM đã là một tệp thực thi riêng, lấy các tập tin của mã byte làm đầu vào. Để hợp nhất các tệp mã byte đó và quy trình JVM thành một tệp thực thi riêng thống nhất, dường như không thể thực hiện được mà không cần viết lại hoàn toàn JVM và khử lan can từ đặc tả JVM.
Vì vậy, tôi hỏi: làm thế nào để các công cụ này thực sự "biến đổi" các tệp lớp Java thành một tệp thực thi riêng, hoặc chúng?