52

JavaScript 用のネイティブ マシン コード コンパイラはありますか? 私はVMについて話しているのではありません。それが存在しない場合、それを行うことはできますか?
言語の動的な性質により、バイナリにコンパイルできるかどうか疑問に思っています。

4

8 に答える 8

34

私の知る限り、JavaScript用の静的コンパイラはありません。それは確かに理論的に可能です。ただし、JavaScriptの静的コンパイルでは、そのすべての機能(動的型付けや評価など)をサポートするために、非常に重いランタイムが必要になります。余談ですが、Python(別の動的言語)を静的にコンパイルする必要がある場合、PyPy開発者は、Pythonの非常に制限されたサブセット(RPythonと呼ばれる)であり、Pythonのより動的な機能の一部がない言語を作成することになりました。それは静的にコンパイルすることができました。

JavaScriptコードからスタンドアロンの実行可能ファイルを作成する目的でこれを求めている場合は、スクリプトと埋め込みJavaScript VMを含む実行可能ファイルを本質的に作成するラッパーが必要であると確信しています(残念ながら、私はオフハンドを知りません) )。

于 2009-07-13T07:57:15.110 に答える
29

間違いなく実行可能ですが、現時点で私が知っている唯一の方法は2段階のプロセスです...

  1. Mozilla Rhino JSCを使用して JavaScript を Java にコンパイルします。
  2. GNU の GCJなどを使用して、結果の Java クラス ファイルを実行可能ファイルにコンパイルします。

しかし、なぜあなたはしたいのですか?どのような利点が期待できますか?

于 2009-07-13T07:48:22.943 に答える
10

Google V8 エンジンは、JavaScript をネイティブ マシン コードにコンパイルします。この機能は、node.js および io.js プロジェクト用に作成したEncloseJSコンパイラで使用されます。

于 2015-02-08T12:56:06.343 に答える
3

理論的には可能ですが、多くのランタイム サポートが必要になります (さらには、完全な Javascript コンパイラーまたはインタープリターをサポートする必要がありますeval)。

実際のネイティブ コード コンパイラをお探しですか、それともランタイムと一緒に Javascript コードを単一の実行可能なバイナリにバンドルできるものをお探しですか?

于 2009-07-13T07:46:38.487 に答える
2

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/

個人的にはこれは本当に素晴らしいと思います。私はそれのためのより多くのドキュメントがあればいいのにと思います。

それがあなたが探しているものだと確信していますが、私は少し新しいです。

于 2014-09-02T23:55:23.213 に答える
1

FF3.5 のTraceMonkeyは、javascript コードの一部に対してこれを行います。そこから道案内ができるかも!

于 2009-07-13T07:49:04.863 に答える
1

Adobe AIR の iOS 用 AOT コンパイラは、Actionscript 3.0 と呼ばれる JavaScript のスーパーセットを ABC バイトコードに静的にコンパイルし、次に LLVM を介してマシン コードにコンパイルします。AS3 コードをクラスや型注釈なしで記述した場合、それは基本的に JavaScript であり、コンパイラは喜んでそれをマシン コードにコンパイルします。残念ながら、これはオープン ソース ソフトウェアではなく、基本的に Flash Player インスタンス内で実行されているため、DOM (多くの人が JavaScript を考えるときに思い浮かべる) にアクセスすることはできません。

于 2015-10-15T15:30:51.367 に答える