Я знаю, что v8 Google компилирует javascript в собственный компьютер (двоичный, если я правильно понимаю) код.
Есть ли способ сделать вывод и превратить его в exe?Как превратить V8 скомпилированный javascript в EXE?
ответ
Я не думаю, что вы можете прямо превратить фрагмент JavaScript в исполняемый файл с помощью V8, но вы, вероятно, можете сделать приложение, которое связывает движок V8 с JavaScript и запускает его как автономное.
Вы можете найти всю информацию о V8 по телефону its project page.
Также обратите внимание, что JavaScript нельзя полностью скомпилировать, так как это динамический язык. С V8 он скомпилирован JIT (например, .NET). Однако его можно превратить в автономный исполняемый файл (например, .NET).
Если вы хотите разработать автономный приложения, которые используют HTML для рендеринга, вы также можете посмотреть на Adobe Air.
Javascript нельзя скомпилировать только один раз. Язык имеет eval, который довольно широко используется. (например, для JSON). Вам нужно носить с собой JIT и всю рабочую среду.
JIT здесь - это только оптимизация, а не способ избавиться от компилятора/интерпретатора.
«V8 компилирует исходный код JavaScript непосредственно в машинный код при его первом запуске. Нет промежуточных байтовых кодов, нет интерпретатора. Доступ к свойствам обрабатывается встроенным кодом кеша, который может быть исправлен с помощью других машинных инструкций как V8 выполняет ». –
Да, но обратите внимание на часть «когда она впервые выполнена». JavaScript не может быть полностью скомпилирован для байтового кода, его нужно скомпилировать по мере его запуска из-за его динамического характера. – Blixt
@the_drow: Проблема в том, что с 'eval' вы постоянно загружаете новый код JavaScript. – EFraim
Node.js Вставляет V8. Это может быть хорошим примером для изучения.
Было несколько попыток сделать 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, и у них есть свои собственные окна и значки, поэтому не очевидно, что они работают внутри хрома. Это, вероятно, еще преждевременно, но это то, что нужно следить в области настольных приложений.
Я пытаюсь сделать что-то еще. Как вы можете объединить javascript в exe? –
См. «Встраивание» части страницы проекта V8. – Blixt
Вы можете легко скомпилировать JavaScript в .exe, используя проект Node-Webkit - https: // github.com/rogerwang/node-webkit – denysonique