2009-07-20 2 views

ответ

7

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

Вы можете найти всю информацию о V8 по телефону its project page.

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

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

+0

Я пытаюсь сделать что-то еще. Как вы можете объединить javascript в exe? –

+0

См. «Встраивание» части страницы проекта V8. – Blixt

+0

Вы можете легко скомпилировать JavaScript в .exe, используя проект Node-Webkit - https: // github.com/rogerwang/node-webkit – denysonique

6

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

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

+2

«V8 компилирует исходный код JavaScript непосредственно в машинный код при его первом запуске. Нет промежуточных байтовых кодов, нет интерпретатора. Доступ к свойствам обрабатывается встроенным кодом кеша, который может быть исправлен с помощью других машинных инструкций как V8 выполняет ». –

+3

Да, но обратите внимание на часть «когда она впервые выполнена». JavaScript не может быть полностью скомпилирован для байтового кода, его нужно скомпилировать по мере его запуска из-за его динамического характера. – Blixt

+5

@the_drow: Проблема в том, что с 'eval' вы постоянно загружаете новый код JavaScript. – EFraim

3

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

3

Было несколько попыток сделать js в собственный код, это не то, что можно использовать в производстве любыми способами, более академическими. У интерпретатора Rhino для java есть возможность сделать js в (java) байт-код, поэтому одним из способов является преобразование в байт-код, а затем из байт-кода в native с 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 и может быть скомпилирован до native с помощью компилятора rPython.

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

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

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