Pregunta

¿Hay un compilador de código de máquina nativo para JavaScript? No estoy hablando de una VM. Si no existe, ¿se puede hacer?
Me pregunto si se puede compilar a binario debido a la naturaleza dinámica del lenguaje.

¿Fue útil?

Solución

Hasta donde yo sé, no hay compiladores estáticos para JavaScript. Ciertamente es teóricamente posible; Sin embargo, una compilación estática de JavaScript necesitaría un tiempo de ejecución de peso muy pesado para admitir todas sus características (como la tipificación y evaluación dinámica). Como un pequeño aparte, cuando se presenta con la necesidad de compilar estáticamente a Python (otro lenguaje dinámico), el Pypy Los desarrolladores terminaron creando un lenguaje que era un subconjunto muy restringido de Python (llamado Rpython), sin algunas de las características más dinámicas de Python, que era capaz de ser compilada estáticamente.

Si está pidiendo esto con el fin de crear un ejecutable independiente a partir del código JavaScript, estoy seguro de que debe haber envoltorios que esencialmente crearían un ejecutable que contenga su script y una VM JavaScript incrustada (lamentablemente, no conozco ningún imperio. ).

Otros consejos

Definitivamente es factible, aunque la única forma en que sé cómo hacerlo en este momento es un proceso de dos pasos ...

  1. Compilar el JavaScript a Java usando Mozilla Rhino JSC.
  2. Compilar el archivo de clase Java resultante al ejecutable usando algo como GCJ de GNU.

¿Por qué querrías hacerlo? ¿Qué ventaja esperas encontrar?

Google V8 Engine compila JavaScript en el código de máquina nativa. Esta característica se usa en el CloseJs compilador que escribí para los proyectos Node.js e IO.JS.

Tenga en cuenta que todas estas soluciones son DOMMenos, así que no hay bibliotecas como angular.js o jquery, solamente underscore.js/lodash

Seguir a FalainaRespuestaPypy si tiene un distrito para Javascript

También, Titanio de Apelerator tiene un js > JavaBit > android

Finalmente, node.js puedo usar nexeExplicado en este otro responder

Es teóricamente posible, pero habrá mucho equipaje de soporte de tiempo de ejecución involucrado (e incluso un compilador o intérprete de JavaScript completo para apoyar eval).

¿Está buscando un compilador de código nativo real o está buscando algo que pueda agrupar el código JavaScript junto con un tiempo de ejecución en un solo binario ejecutable?

Estoy seguro de que Microsoft tiene un compilador Jscript (JavaScript ") descargable (Microsoft")

Si tiene Windows: si escribe un archivo de texto JavaScript, puede compilarlo: abriendo el símbolo del sistema usando CD para llegar al directorio de archivos de texto (si tiene Windows) Tipo: C: Windows Microsoft.net Framework v2.0.50727 jsc.exe textfile.js

De lo contrario: descargue un compilador JScript, escriba el directorio del compilador JScript y luego el nombre del archivo de texto JavaScript

Puede agregar variables de entorno si no desea escribir todo el nombre del directorio al compilador.

Este tipo lo explica mejor:http://www.phpied.com/make-your-javascript-a-windows-exe/

Personalmente creo que esto es realmente genial. Solo desearía que hubiera más documentación para ello.

Estoy bastante seguro de que eso es lo que estás buscando, pero soy un poco nuevo.

Tracemonkey En FF3.5, haga esto a algunas partes del código JavaScript. ¡Es posible que pueda obtener algunas direcciones desde allí!

El compilador AOT de Adobe Air para iOS compila estáticamente un superconjunto de JavaScript llamado ActionScript 3.0 hasta ABC Bytecode, luego el código de máquina a través de LLVM. Si escribiera su código AS3 sin clases y sin anotación de tipo, esencialmente sería JavaScript, y luego el compilador lo compilaría felizmente al código de la máquina. Lamentablemente, esto no es un software de código abierto, y no tiene acceso a ningún DOM (que muchas personas piensan cuando piensan en JavaScript) porque se está ejecutando dentro esencialmente una instancia de reproductor Flash.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top