JavaScriptのネイティブマシンコードコンパイラはありますか? VMのことではありません。それが存在しない場合、それは可能ですか?
言語の動的な性質により、バイナリにコンパイルできるかどうか疑問に思っています。
私の知る限り、JavaScript用の静的コンパイラはありません。それは確かに理論的には可能です。ただし、JavaScriptの静的コンパイルでは、そのすべての機能(動的型付けやevalなど)をサポートするために非常に重いランタイムが必要になります。ちなみに、Python(別の動的言語))を静的にコンパイルする必要があると、開発者は PyPy 開発者が非常に制限されたサブセットである言語を作成してしまいましたof Python(RPythonと呼ばれる)、静的にコンパイルできるPythonのより動的な機能の一部を無効にします。
JavaScriptコードからスタンドアロンの実行可能ファイルを作成する目的でこれを要求している場合、スクリプトと埋め込まれたJavaScriptを含む実行可能ファイルを本質的に作成するラッパーがあるはずですVM(悲しいことに、私はオフハンドを知りません)。
それは確かに実行可能ですが、現時点で私がそれを行う方法を知る唯一の方法は、2ステップのプロセスです...
なぜあなたがしたいのですか?どのような利点が見つかると思いますか?
Google V8エンジンは、JavaScriptをネイティブマシンコードにコンパイルします。この機能は、node.jsおよびio.jsプロジェクト用に作成した EncloseJS コンパイラで使用されます。
これらのソリューションはすべてDOM
lessであるため、angular.js
やjquery
などのライブラリはなく、underscore.js
/lodash
のみであることに注意してください
Falainaの回答まで、PyPyはJavaScript のdist
また、 Appcelerator Titanium にはjs
> JavaBit
> Android
があります
Microsoftにはダウンロード可能なJscript(「Microsoftのjavascript」)コンパイラがあると確信しています
windowsの場合:JavaScriptのテキストファイルを作成する場合は、次の方法でコンパイルできます。コマンドcdを使用してプロンプトを開き、テキストファイルのディレクトリに移動します(Windowsの場合)タイプ:C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe textfile.js
それ以外の場合:jscriptコンパイラをダウンロードし、jscriptコンパイラのディレクトリを入力してから、javascriptテキストファイルの名前を入力します。
ディレクトリ名全体をコンパイラに入力したくない場合は、環境変数を追加できます。
この男はそれをよりよく説明しています: http://www.phpied.com/make-your-javascript-a-windows-exe/
個人的にはこれがすごくかっこいいと思います。それについてもっと多くのドキュメントがあればいいのに。
それはあなたが探しているものだと確信していますが、私は少し新しいです。
理論的には可能ですが、多くのランタイムサポートの手荷物が必要になります(さらに、eval
をサポートする完全なJavascriptコンパイラーまたはインタープリターも)。
実際のネイティブコードコンパイラを探していますか、それともランタイムと一緒にJavascriptコードを単一の実行可能バイナリにバンドルできるものを探していますか?
Adobe AIRのiOS用AOTコンパイラーは、Actionscript 3.0と呼ばれるJavaScriptのスーパーセットをABCバイトコードに静的にコンパイルしてから、LLVMを介してコードをマシン化します。クラスや型注釈のないAS3コードを記述する場合、それは基本的にJavaScriptであり、コンパイラーはそれを喜んでマシンコードにコンパイルします。残念なことに、これはオープンソースソフトウェアではありません。また、本質的にFlash Playerインスタンス内で実行されているため、DOMにアクセスできません(JavaScriptを考えると多くの人が考えます)。
TraceMonkey FF3.5では、JavaScriptコードの一部に対してこれを行います。あなたはそこからいくつかの道順を得ることができるかもしれません!