JavaScript用のネイティブマシンコードコンパイラはありますか? [閉まっている
-
12-09-2019 - |
質問
JavaScript用のネイティブマシンコードコンパイラはありますか?私はVMについて話していません。それが存在しない場合、それはできますか?
言語の動的な性質のために、バイナリにコンパイルできるかどうか疑問に思っています。
解決
私の知る限り、JavaScriptの静的コンパイラはありません。それは確かに理論的に可能です。ただし、JavaScriptの静的な編集には、すべての機能(動的タイピングや評価など)をサポートするために非常にヘビー級のランタイムが必要です。小さい場合、Python(別のダイナミック言語)を静的にコンパイルする必要があると提示された場合、 パイキー 開発者は、Python(Rpythonと呼ばれる)の非常に制限されたサブセットである言語を作成することになりました。これは、静的にコンパイルできるPythonのよりダイナミックな機能のいくつかを無効にしました。
JavaScriptコードからスタンドアロン実行可能ファイルを作成する目的でこれを求めている場合、スクリプトと埋め込まれたJavaScript VMを含む実行可能ファイルを基本的に作成するラッパーが必要だと確信しています(残念ながら、私はオフにわからない)。
他のヒント
それは間違いなく実行可能ですが、現時点でそれを行う方法を知っている唯一の方法は2段階のプロセスです...
- JavaScriptを使用してJavaにコンパイルします Mozilla Rhino JSC.
- 結果のJavaクラスファイルを、次のようなものを使用して実行可能にコンパイルします GNUのGCJ.
なぜあなたはしたいのですか?どのような利点を見つけることを期待していますか?
Google V8エンジンはJavaScriptをネイティブマシンコードにコンパイルします。この機能はで使用されます enclosejs node.jsおよびio.jsプロジェクトのために書いたコンパイラ。
これらのソリューションはすべてです DOM
少ないので、ライブラリはありません angular.js
また jquery
, 、 それだけ underscore.js
/lodash
に続く ファライナ答え、パイキー を持っている dist for JavaScript
また、 Appceleratorチタン があります js
> JavaBit
> android
理論的には可能ですが、多くのランタイムサポート手荷物が関与することになります(そして、サポートするための完全なJavaScriptコンパイラや通訳もあります eval
).
実際のネイティブコードコンパイラを探していますか、それともJavaScriptコードを1つの実行可能バイナリにランタイムでバンドルできるものをお探しですか?
Microsoftにはダウンロード可能なJScript(「Microsoft's 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/
私は個人的にこれは本当にクールだと思います。もっとドキュメントがあればいいのにと思います。
私はそれがあなたが探しているものだと確信していますが、私は少し新しいです。
tracemonkey FF3.5では、これをJavaScriptコードの一部に行います。そこからいくつかの方向を得ることができるかもしれません!
iOS用のAdobe AirのAOTコンパイラは、ABC Bytecodeに並んでいるActionScript 3.0と呼ばれるJavaScriptのスーパーセットを静的にコンパイルし、次にLLVMを介してマシンコードをコンパイルします。クラスなしでタイプの注釈なしでAS3コードを書く場合、それは基本的にJavaScriptになり、コンパイラはそれを喜んでマシンコードにコンパイルします。悲しいことに、これはオープンソースソフトウェアではなく、DOM(JavaScriptについて考えるときに多くの人が考える)にアクセスできません。