2013-08-01 42 views
18

asm.js đang đến. Bây giờ thậm chí còn có tin đồn về Chrome sớm hỗ trợ nó hoàn toàn.Biên dịch Java thành asm.js

Nhưng cho đến nay nó đã được sử dụng để biên dịch C/C++ nguồn vào JavaScript mà có thể chạy với gần mẹ đẻ tốc độ (phụ thuộc vào cách bạn định nghĩa gần mẹ đẻ ...)

Tôi đã được lên kế hoạch để sử dụng GWT để biến mã Java của tôi thành JavaScript, nhưng bây giờ tôi đã tự hỏi nếu hiện có một đường dẫn/thủ tục hiện có để biên dịch mã đơn giản Java mã sang ASM.JS, và nó sẽ là gì?

Một lý do nhiều lý do tại sao người ta có thể muốn điều đó: Java-to-ASM.js might very well run faster then Java-to-Dalvik on some Android phone!

+0

Một số lựa chọn thay thế khác, cho những người muốn chạy Java trong trình duyệt; mô phỏng hầu hết bản thân JVM: http://teavm.org/ và http://www.doppiojvm.org/ –

Trả lời

8

asm.js (hiện tại) được thiết kế như một mục tiêu cho các ngôn ngữ mà tự quản lý cấp phát bộ nhớ và giải phóng - như C/C++. Hiện tại, nó không thể xử lý ngôn ngữ với ngữ nghĩa thu gom rác, ngớ ngẩn vì có vẻ như JavaScript là một thời gian chạy được thu thập rác.

Nếu bạn thực sự muốn đi vòng quanh, hãy chuyển mã Java qua j2c và sau đó vượt qua đầu ra C++ đó thông qua emscripten sẽ biên dịch thành asm.js.

Một khả năng khác sẽ được vượt qua mã Java thông qua trình biên dịch LLVM sử dụng VMKit và thông qua đó thông qua emscripten asm.js llvm backend ...

+3

Lưu ý rằng việc thu thập rác trong Java được viết bằng C/C++. – Tim

2

Không chỉ rác thu gom nhưng máy ảo Java được viết bằng Các chú thích C/C++, asm.js trên the possibility biên dịch toàn bộ các máy ảo từ C/C++ sang JavaScript và triển khai các JIT phát JavaScript. "

Ngay bây giờ (tháng 6 năm 2015) khả năng này là xa thực tế, vì vậy hãy liên kết với GWT (Tôi sẽ không khuyến nghị) nếu bạn cảm thấy thích.