Làm thế nào khả thi để chuyển một ứng dụng C ++ sang mã byte Java bằng LLVM (tôi đoán LLJVM)?
Vấn đề là hiện tại chúng tôi có một quy trình được viết bằng C ++ nhưng một máy khách mới đã bắt buộc phải có khả năng chạy chương trình theo cách đa nền tảng, sử dụng Máy ảo Java rõ ràng không có mã gốc (không có JNI). Ý tưởng là có thể lấy jar được tạo và sao chép vào các hệ thống khác nhau (Linux, Win, 32 bit - 64 bit) và nó sẽ hoạt động.
Nhìn xung quanh có vẻ như có thể biên dịch mã C ++ sang LLVM IR và sau đó mã đó thành mã byte java. Không cần mã được tạo để có thể đọc được.
Tôi đã kiểm tra một chút với những thứ tương tự bằng cách sử dụng emscripten, điều này cần mã C ++ và biên dịch nó thành JavaScript. Kết quả là JS hợp lệ nhưng hoàn toàn không thể đọc được (trông giống như kẻ lừa đảo).
- Có ai đã thực hiện một cổng của một ứng dụng từ C ++ sang mã byte Java bằng cách sử dụng tecnique này không?
- Những vấn đề chúng ta có thể phải đối mặt?
- Là một cách tiếp cận hợp lệ cho mã sản xuất?
Để làm rõ hơn quan điểm của tôi sau một số ý kiến, có thể cổng không được sử dụng tốt, tôi không mong đợi mã nguồn có thể đọc được, do đó chỉ là mã byte java, vì vậy nó không phải là một 'cổng' sẽ được phát triển nữa, chỉ là plattform đích phải là java JVM chứ không phải assamblear riêng.
Lưu ý: Tôi biết rằng hiện tại chúng tôi có một số thư viện nguồn C ++ và nguồn đóng không chuẩn, chúng tôi đang tìm cách loại bỏ mã không chuẩn này và tất cả các thư viện nguồn đóng và sử dụng Phần mềm nguồn mở Libre miễn phí, vì vậy, giả sử tất cả mã là mã C ++ tiêu chuẩn với tất cả các mã có sẵn tại thời gian biên dịch.
Lưu ý2: Không phải là một tùy chọn để viết mã C ++ di động và sau đó biên dịch nó sang nền tảng đích mong muốn, chương trình được biên dịch phải là đa nền tảng, do đó sử dụng JVM.
Note3: Hiện tại chúng tôi không xem xét các giải pháp tương tự được áp dụng cho Python hoặc cơ sở ngôn ngữ khác, nhưng tôi cũng muốn nghe về nó. Với điều này, ý tôi là mục tiêu thực thi của chúng ta phải là mã byte java nhưng nếu có các tùy chọn để biên dịch C ++ thành mã được biên dịch python hợp lệ, tôi cũng muốn nghe về chúng.