是否有JavaScript的本地机器代码编译器?

是否有JavaScript的本地机器代码编译器? 我不是在谈论虚拟机。 如果不存在可以这样做吗?
我想知道是否可以编译为二进制由于语言的dynamic性质。

据我所知,JavaScript没有静态编译器。 这当然是理论上可行的; 然而,JavaScript的静态编译需要一个非常重的运行时来支持其所有function(如dynamictypes和eval)。 作为一个小问题,当需要静态编译Python(另一种dynamic语言)时, PyPy开发者最终创build了一种语言,它是Python的一个非常有限的子集(称为RPython),没有Python的一些更dynamic的特性,那是能够被静态编译的。

如果你问这是为了从JavaScript代码创build一个独立的可执行文件的目的,我敢肯定,必须有包装本质上会创build一个可执行文件包含您的脚本和一个embedded式的JavaScript VM(不幸的是,我不知道任何徒手)。

这绝对是可行的,尽pipe目前我知道如何做的唯一方法是两个步骤。

  1. 使用Mozilla Rhino JSC将JavaScript编译为Java。
  2. 使用像GNU的GCJ这样的东西编译生成的java类文件到可执行文件。

为什么你想要,但? 你期望find什么优势?

Google V8引擎将JavaScript编译为本机机器码。 这个特性被用在我为node.js和io.js项目编写的EncloseJS编译器中。

请注意,所有这些解决scheme都是DOMless,所以没有像angular.jsjquery库,只有underscore.js / lodash

Falaina的回答之后, PyPy 确实对JavaScript 有所了解

另外, Appcelerator Titanium有一个js > JavaBit > android

最后, node.js可以使用nexe解释在这个其他的答案

这在理论上是可行的,但是会涉及很多运行时支持(甚至包括一个完整的Javascript编译器或解释器来支持eval )。

你正在寻找一个真正的本地代码编译器,或者你在寻找一些可以将Javascript代码和运行时一起捆绑到一个可执行二进制文件中的东西吗?

我确信微软有一个可下载的Jscript(“微软的JavaScript”)编译器

如果你有窗口:如果你写一个JavaScript文本文件,你可以编译它:打开命令提示符使用cd进入文本文件目录(如果有窗口)键入:C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ jsc.exe textfile.js

否则:下载一个jscript编译器,inputjscript编译器的目录,然后inputjavascript文本文件的名称

你可以添加环境variables,如果你不想输出整个目录名称的编译器。

这家伙更好地解释它: http : //www.phpied.com/make-your-javascript-a-windows-exe/

我个人认为这真的很酷。 我只是希望有更多的文件。

我很确定这就是你要找的,但我有点新。

在FF3.5 TraceMonkey这样做的JavaScript代码的一些部分。 你可能能从那里得到一些方向!

用于iOS的Adobe AIR的AOT编译器静态编译JavaScript的超集称为Actionscript 3.0,直到ABC字节码,然后通过LLVM编写机器代码。 如果你编写的AS3代码没有类,也没有types注释,那么它本质上就是JavaScript,然后编译器会很高兴地把它编译成机器代码。 不幸的是,这不是开源软件,你不能访问任何DOM(很多人想到JavaScript时),因为它本质上是一个Flash Player实例。

Interesting Posts