自从两年前见识了浏览器里用JavaScript运行Linux后,看看如今JavaScript交叉编译的进展。看来我也要考虑一下这东西的实用性了。
以下为翻译转述。
常见交叉编译器:
C/C++: Emscripten, Mandreel
Java: Google Web Toolkit (GWT)
C#: JSIL, Script#
Python: pyjs
Lua: lua.js
另: coffee script的GitHub wiki里列出了几乎上百个各种相关项目。参见 https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
大企业用例:
Blogger和一些企业应用使用了Java(GWT)
微软的Office Web Apps使用了C#(Script#)
JavaScript面向交叉编译器的的高效底层功能子集asm.js的性能(以C/C++交叉编译的结果测试):
通常在native的40%-90%之间,少量在10%左右的数量级。个别测试用例甚至超过了Java。
连bullet(著名开源物理引擎)交叉编译后都可以达到native的30%-60%,很是令人惊叹。