Googleのv8がjavascriptをネイティブマシン(正しく理解すればバイナリ)にコンパイルすることはわかっています。
出力を取り出してexeに変換する方法はありますか?V8コンパイルされたjavascriptをEXEにするには?
答えて
V8を使ってJavaScriptを実行可能ファイルに直接変換することはできませんが、V8エンジンをJavaScriptとバンドルし、スタンドアロンとして実行するアプリケーションを作成することはおそらく可能です。
V8に関するすべての情報はits project pageです。
また、動的言語であるため、JavaScriptを完全にコンパイルすることはできません。 V8では、JITコンパイル済みです(.NETなど)。スタンドアロンの実行可能ファイル(.NETなど)にも変換できます。
スタンドアロンレンダリングにHTMLを使用するアプリケーションの場合は、Adobe Airもご覧ください。
JavaScriptを1回コンパイルすることはできません。言語はかなり広く使用されているevalです。 (JSONの場合など)JITと実行時全体を持ち歩く必要があります。
ここでのJITは最適化であり、コンパイラ/インタプリタを取り除く方法ではありません。
"JavaScriptコードは、最初に実行されたときにマシンコードに直接コンパイルされます。中間バイトコードもインタープリタもありません。プロパティアクセスは、他のマシン命令でパッチが適用されるインラインキャッシュコードによって処理されますV8が実行されるので。 –
ええ、「最初に実行されたとき」の部分に注意してください。 JavaScriptは完全にバイトコードにコンパイルすることはできません。動的な性質のため、JavaScriptは実行時にコンパイルする必要があります。 – Blixt
@the_drow:問題は、 'eval'を使うと常に新しいJavaScriptコードを入力することです。 – EFraim
Node.js V8が埋め込まれています。これは学ぶ良い例かもしれません。
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を作成することができます。また、独自のウィンドウとアイコンを持っているので、クロムの中で実行されていることは明らかです。これはおそらくまだ時期尚早ですが、デスクトップアプリケーションの分野では注意が必要です。
- 1. V8エンジンでコンパイルされた命令を印刷するには?
- 2. 窓にV8をコンパイル
- 3. V8 javascriptエンジンはすべてのjavascriptを機械語にコンパイルしますか?
- 4. 実行時コンパイルで生成されたexeファイルを保存するには
- 5. V8のコンパイルされた手順をChromiumコンソールに印刷するにはどうすればよいですか?
- 6. Python3.6をexeまたは他のオプションにコンパイルするには?
- 7. PythonでIDLコンパイルされたEXEを実行する
- 8. のコメントは.netの.exeにコンパイルされますか?
- 9. TypeScriptは、以前にコンパイルされたJavaScriptファイルが削除された場合にのみコンパイルされます。
- 10. V8がgn build(gypとは対照的に)で構築された後にv8js拡張をコンパイルする
- 11. exeまたはdllをアセンブリに逆コンパイルする方法
- 12. v8新しいコンテキストでコンパイルされたスクリプトからプロパティにアクセスできない
- 13. .libは.exeプログラムをコンパイルするときに生成されます
- 14. V8だけをコンパイルしてChromiumに置き換えるには?
- 15. Bingマップv8 IE11にキャッシュされたAPI
- 16. exeが動的にコンパイルされることは何を意味しますか?
- 17. コンパイルされた実行ファイルをProject32.exeおよびProject64.exeとして自動的にセットアップします。
- 18. v8で生成されたバイナリにネイティブのjavascriptのソースコードが保存されるのはなぜですか?
- 19. Pygame - Cx_Freezeでexeにコンパイル
- 20. Javascript - String.prototypeに追加された関数のV8でパフォーマンスが悪いですか?
- 21. .exeをjarファイルに逆コンパイルするには?
- 22. JavaScriptのexeから返される値
- 23. cx_freezeでコンパイルされたexeを実行しているときにエラーメッセージを表示する方法は?
- 24. V8では、JavaScriptの対応部分がガベージコレクションされた後に、ラップされたC++オブジェクトを削除するにはどうすればよいですか?
- 25. 逆コンパイルqt exe
- 26. Delphiでビルドされたexeのファイルサイズを分析するには?
- 27. Delphi 2007 VCLプロジェクト名はコンパイルされたExe名と異なりますか?
- 28. Delphi 7でコンパイルされたexeファイルはOSXでも動作しますか?
- 29. それぞれの再コンパイル後にexeチェックサムが異なる
- 30. C#のコンパイルは、exeファイルへ
私は他の何かをしようとしています。 どうすればjavascriptをexeにバンドルできますか? –
V8プロジェクトページの「埋め込み」部分を参照してください。 – Blixt
Node-Webkitプロジェクト(https:// github)を使用して、JavaScriptを.exeに簡単にバンドルすることができます。com/rogerwang/node-webkit – denysonique