Подтвердить что ты не робот

Есть ли собственный компилятор машинного кода для JavaScript?

Есть ли собственный компилятор машинного кода для JavaScript? Я не говорю о виртуальной машине. Если он не существует, это можно сделать?
Мне интересно, может ли он быть скомпилирован в двоичный файл из-за динамической природы языка.

4b9b3361

Ответ 1

Насколько я знаю, для JavaScript не существует статических компиляторов. Это, безусловно, теоретически возможно; однако для статической компиляции JavaScript потребуется очень тяжелая версия для поддержки всех ее функций (таких как динамическая типизация и eval). В качестве небольшого аспекта, когда ему необходимо статически компилировать Python (другой динамический язык), PyPy разработчики закончили создание языка, который был очень ограниченным подмножеством Python (называемым RPython), лишенным некоторых более динамических функций Python, которые могли быть статически скомпилированы.

Если вы спрашиваете об этом с целью создания автономного исполняемого файла из кода JavaScript, я уверен, что должны быть обертки, которые, по сути, создавали бы исполняемый файл, содержащий ваш script и встроенную JavaScript-виртуальную машину (к сожалению, я не "не знаю, кто-то из рук в руки).

Ответ 2

Это определенно выполнимо, хотя единственный способ, которым я знаю, как это сделать на данный момент, - это двухэтапный процесс...

  • Скомпилируйте javascript на Java, используя Mozilla Rhino JSC.
  • Скомпилируйте полученный файл java-класса в исполняемый файл, используя что-то вроде GNU GCJ.

Зачем вам это нужно? Какое преимущество вы ожидаете найти?

Ответ 3

Двигатель Google V8 компилирует JavaScript в собственный машинный код. Эта функция используется в компиляторе EncloseJS, который я написал для проектов node.js и io.js.

Ответ 4

Обратите внимание, что все эти решения меньше DOM, поэтому нет библиотек, таких как angular.js или jquery, только underscore.js/lodash

После ответа Фалаины, PyPy имеет значение JavaScript

Кроме того, Appcelerator Titanium имеет js > JavaBit > android

Наконец, node.js может использовать nexe Объясняется в этом другом ответе

Ответ 5

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

Вы ищете настоящий компилятор собственного кода или ищете что-то, что может связывать Javascript-код вместе с исполняемой средой в один исполняемый двоичный файл?

Ответ 6

Я уверен, что у microsoft есть загружаемый компилятор Jscript ( "Microsoft javascript" )

Если у вас есть окна: Если вы пишете текстовый файл javascript, вы можете скомпилировать его: открытие командной строки используя cd, чтобы перейти в каталог текстовых файлов (если у вас есть окна) введите: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe textfile.js

в противном случае: скачать компилятор jscript введите каталог компилятора jscript и затем имя текстового файла javascript

вы можете добавить переменные среды, если вы не хотите вводить полное имя каталога в компилятор.

этот парень объясняет это лучше: http://www.phpied.com/make-your-javascript-a-windows-exe/

Я лично считаю, что это действительно круто. Я просто хочу, чтобы для этого было больше документации.

Я уверен, что это то, что вы ищете, но я немного новичок.

Ответ 7

TraceMonkey в FF3.5 сделать это с некоторыми частями кода javascript. Вы можете получить некоторые направления оттуда!

Ответ 8

Компилятор Adobe AIR AOT для iOS статически компилирует надмножество JavaScript под названием ActionScript 3.0 вплоть до ABC-байт-кода, а затем машинный код через LLVM. Если вы хотите написать свой AS3-код без классов и без аннотации типа, это будет по существу JavaScript, а затем компилятор с радостью скомпилирует его до машинного кода. К сожалению, это не программное обеспечение с открытым исходным кодом, и вы не получаете доступ к какой-либо DOM (о которой многие думают, когда думают о JavaScript), потому что она работает внутри по существу экземпляра Flash Player.