2009-07-20 10 views

答えて

7

V8を使ってJavaScriptを実行可能ファイルに直接変換することはできませんが、V8エンジンをJavaScriptとバンドルし、スタンドアロンとして実行するアプリケーションを作成することはおそらく可能です。

V8に関するすべての情報はits project pageです。

また、動的言語であるため、JavaScriptを完全にコンパイルすることはできません。 V8では、JITコンパイル済みです(.NETなど)。スタンドアロンの実行可能ファイル(.NETなど)にも変換できます。

スタンドアロンレンダリングにHTMLを使用するアプリケーションの場合は、Adobe Airもご覧ください。

+0

私は他の何かをしようとしています。 どうすればjavascriptをexeにバンドルできますか? –

+0

V8プロジェクトページの「埋め込み」部分を参照してください。 – Blixt

+0

Node-Webkitプロジェクト(https:// github)を使用して、JavaScriptを.exeに簡単にバンドルすることができます。com/rogerwang/node-webkit – denysonique

6

JavaScriptを1回コンパイルすることはできません。言語はかなり広く使用されているevalです。 (JSONの場合など)JITと実行時全体を持ち歩く必要があります。

ここでのJITは最適化であり、コンパイラ/インタプリタを取り除く方法ではありません。

+2

"JavaScriptコードは、最初に実行されたときにマシンコードに直接コンパイルされます。中間バイトコードもインタープリタもありません。プロパティアクセスは、他のマシン命令でパッチが適用されるインラインキャッシュコードによって処理されますV8が実行されるので。 –

+3

ええ、「最初に実行されたとき」の部分に注意してください。 JavaScriptは完全にバイトコードにコンパイルすることはできません。動的な性質のため、JavaScriptは実行時にコンパイルする必要があります。 – Blixt

+5

@the_drow:問題は、 'eval'を使うと常に新しいJavaScriptコードを入力することです。 – EFraim

3

Node.js V8が埋め込まれています。これは学ぶ良い例かもしれません。

3

jsをネイティブコードにする際にいくつかの試みがありましたが、それは何らかの手段で生産に使用できるものではなく、学問的興味があります。 java用Rhinoインタプリタには、jsを(java)バイトコードにするオプションがあります。そのため、バイトコードに変換し、バイトコードからGCJでネイティブに変換する方法があります。 RhinoとGCJについていくつかの議論がありますが、誰かが正確にそれを試みたかどうかはわかりません。 https://groups.google.com/forum/#!msg/netscape.public.mozilla.jseng/c3tqyLZ19fw/8V4HeuMtIXUJ

別のアプローチは、rPythonと呼ばれるPythonの非標準のサブセットで記述されている自身のPython、具体PY-Pyとを使用しています。 rPythonは人間のためのものではありませんが、ネイティブにコンパイルできるものであるという利点があります。興味深い(面白そうではありませんが)実験は、JavascriptをPythonにコンパイルすることでしたが、場合によってはPythonがrPythonとして有効で、rPythonコンパイラでネイティブにコンパイルできます。

http://mozakai.blogspot.com/2010/07/experiments-with-static-javascript-as.html

.exeファイルが本当に重要である場合は、ネイティブにJSをコンパイルすることができたとしても以来、私は自分のアプリでV8をバンドルでしょうあなたはどんなのevalを使用している場合、あなたはまだ(完全な通訳が必要)、または類似。ユーザーが8MBのexeファイルまたは8MBのV8.dllファイルを気にしない限り、すべてを.exeファイルにバンドルするためのツールを書くのは難しくありません。

最後に、Big GはChromeに基づいた「ネイティブ」アプリ(Googleの「Chromeパッケージアプリ」)の使用を開始しました。彼らは低レベルのシステムアクセスを持っており、WebKitレンダラを使用してCSSとHTMLでGUIを作成することができます。また、独自のウィンドウとアイコンを持っているので、クロムの中で実行されていることは明らかです。これはおそらくまだ時期尚早ですが、デスクトップアプリケーションの分野では注意が必要です。

関連する問題