Как превратить скомпилированный JavaScript V8 в EXE? - PullRequest
9 голосов
/ 20 июля 2009

Я знаю, что Google v8 компилирует JavaScript в нативный (двоичный, если я правильно понимаю) код.
Есть ли способ взять вывод и превратить его в exe?

Ответы [ 4 ]

7 голосов
/ 20 июля 2009

Я не думаю, что вы можете напрямую превратить кусок JavaScript в исполняемый файл с помощью V8, но вы, вероятно, можете сделать приложение, которое связывает движок V8 с JavaScript и запускает его как отдельный.

Всю информацию о V8 можно найти на странице его проекта .

Также обратите внимание, что JavaScript не может быть полностью скомпилирован, так как это динамический язык. В V8 он JIT-скомпилирован (как, например, .NET.) Тем не менее, его можно превратить в автономный исполняемый файл (например, .NET, например.)

Если вы хотите разрабатывать автономные приложения, которые используют HTML для рендеринга, вы также можете взглянуть на Adobe Air .

6 голосов
/ 20 июля 2009

Javascript не может быть скомпилирован только один раз. Язык имеет eval , который довольно широко используется. (например, для JSON). Вы должны носить с собой JIT и всю среду выполнения.

JIT - это всего лишь оптимизация, а не способ избавиться от компилятора / интерпретатора.

3 голосов
/ 09 декабря 2012

Было несколько попыток превратить js в нативный код, это не то, что может быть использовано в производстве любыми средствами, скорее академический интерес. Интерпретатор Rhino для java имеет возможность превратить js в (java) байт-код, поэтому один из подходов заключается в преобразовании в байт-код, а затем из байт-кода в нативный с GCJ. Есть некоторая дискуссия о Rhino и GCJ, но я не знаю, пытался ли кто-нибудь когда-либо делать именно это. https://groups.google.com/forum/#!msg/netscape.public.mozilla.jseng/c3tqyLZ19fw/8V4HeuMtIXUJ

Другой подход заключается в использовании Python, в частности Py-Py, который сам по себе написан в нестандартном подмножестве Python под названием rPython. rPython не предназначен для потребления человеком, но имеет то преимущество, что его можно скомпилировать в нативный. Один интересный (хотя и дурацкий) эксперимент состоял в том, чтобы скомпилировать Javascript в Python, а затем в некоторых случаях Python оказывается действительным как rPython и может быть скомпилирован до нативного с помощью компилятора rPython.

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

Если файл .exe действительно важен, я бы связал V8 с вашим приложением, поскольку даже если вы можете скомпилировать js в native, вам все равно нужен полный интерпретатор, если вы используете какой-либо eval () или аналогичный. Нетрудно написать инструмент для объединения всего в файл .exe, если ваши пользователи не возражают против 8 МБ exe-файла или 8 МБ V8.dll файла.

Как последняя мысль, Big G начал разрешать «нативные» приложения на основе Chrome (Google: «Chrome Packaged Apps»). Они имеют низкоуровневый доступ к системе и могут использовать средство визуализации WebKit, позволяющее вам создавать графический интерфейс в CSS и HTML, и у них есть собственные окна и значки, поэтому не очевидно, что они работают внутри Chrome. Это, вероятно, все еще преждевременно, но за этим нужно следить в области настольных приложений.

3 голосов
/ 10 сентября 2009

Node.js встраивает V8. Это может быть хорошим примером для изучения.

...