¿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 en binario debido a la naturaleza dinámica del lenguaje.¿Hay un compilador nativo de código de máquina para JavaScript?
Respuesta
Por lo que 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 muy pesado para admitir todas sus características (como el tipado dinámico y la evaluación). Como pequeño detalle, cuando se presentó la necesidad de compilar estáticamente Python (otro lenguaje dinámico), los desarrolladores de PyPy 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, eso fue capaz de ser compilado estáticamente.
Si está pidiendo esto con el propósito 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 contiene su script y una máquina virtual JavaScript incorporada (por desgracia, no saber cualquier cosa improvisada).
El primer JIT basado en navegador fue lanzado con FF 3.5 aproximadamente un mes antes de que se respondiera esta pregunta. –
+1 para PyPy. 'RPython' no está compilado estáticamente per se, sino que el programa' RPython' se inicia en 'CPython' normal, y se toma una instantánea de todos los objetos actualmente en la memoria. Eso asegura que todo tipo de especialización, etc. ya está hecho. Eso también significa que la entrada del programa RPython está severamente restringida, p. no es posible 'json.load' algo y obtener tipos sobre la marcha. –
Teóricamente es posible, pero habrá una gran cantidad de equipaje de soporte en tiempo de ejecución involucrado (e incluso un compilador o intérprete completo de Javascript para admitir eval
).
¿Está buscando un compilador de código nativo real, o está buscando algo que pueda agrupar código JavaScript junto con un tiempo de ejecución en un solo binario ejecutable?
Estoy buscando un compilador de código nativo real –
Es sin duda factible, aunque la única manera que sé cómo hacerlo en este momento es un proceso de dos pasos ...
- Compila el javascript para Java usando Mozilla Rhino JSC.
- Compila el archivo resultante de la clase Java en ejecutable usando algo como GNU's GCJ.
¿Por qué querrías, sin embargo? ¿Qué ventaja esperas encontrar?
Es solo por curiosidad. Me gusta mucho javascript. –
TraceMonkey en FF3.5 hacen esto en algunas partes del código javascript. ¡Podrás obtener algunas indicaciones desde allí!
No realmente. No he encontrado nada útil allí. –
Esto no ayuda, ya que Tracemonkey no puede hacer esto a * todas * partes del código. – Bergi
Estoy seguro de que Microsoft tiene un JScript descargable ("javascript de Microsoft") compilador
si tiene ventanas: Si se escribe un archivo de texto javascript Se puede compilar por: abrir el símbolo del sistema usando cd para llegar al directorio de archivos de texto (si tiene ventanas) escriba: C: \ wINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ jsc.exe textfile.js
lo contrario: descargar un compilador de JScript escriba el directorio del compilador jscript y luego el nombre del javascript tex t archivo
puede agregar variables de entorno si no desea escribir todo el nombre del directorio en el 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 hubiese más documentación para eso.
Estoy bastante seguro de que es lo que estás buscando, pero soy un poco nuevo.
Compilación de .net IL-code no se está compilando en un idioma nativo como cuestionado, IL-code también es interpretado (Justo a tiempo). Para que lo sepas;) – Remco
@Remco: IL ** siempre ** compilado a las instrucciones del código de la máquina, antes de que se ejecute. A diferencia del bytecode de Java, IL nunca se interpreta. – IInspectable
Tenga en cuenta que todas estas soluciones son DOM
menos, así que no hay bibliotecas como angular.js
o jquery
, solamente underscore.js
/lodash
En seguimiento a la respuesta Falaina 's, PyPytiene una dist para JavaScript
Además, Appcelerator Titanium tiene js
>JavaBit
>android
Por último, node.js
puede utilizar nexe se explica en este otro answer
motor V8 de Google compila JavaScript en código máquina nativo. Esta característica se utiliza en el compilador EncloseJS que escribí para los proyectos node.js y io.js.
¿Cómo puedo hacerlo? –
(* Meta *) No es ni debe ser molesto, pero un simple * my * en el lugar correcto es suficiente. Seguí adelante y edité tu respuesta aquí. Por favor, tenga esto en cuenta para futuras respuestas. –
El compilador AOT de Adobe AIR para iOS compila estáticamente un superconjunto de JavaScript llamado Actionscript 3.0 hasta el bytecode ABC, luego el código de máquina a través de LLVM. Si tuviera que escribir su código AS3 sin clases y sin anotación de tipo, sería esencialmente JavaScript, y luego el compilador lo compilaría felizmente en código máquina. Lamentablemente, este 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 ejecuta esencialmente dentro de una instancia de Flash Player.
- 1. Cómo traducir código Byte a código nativo de la máquina
- 2. Android: ¿hay alguna herramienta para crear un código nativo?
- 3. inspeccionar el código nativo
- 4. ¿Hay una implementación de JavaScript nativo de document.ready() de jQuery?
- 5. compilador de máquina de estados finitos
- 6. ¿Hay algún compilador/intérprete para ejecutar código para php 5.3?
- 7. ¿Hay algún intérprete de código abierto para JavaScript?
- 8. Hacer un compilador JIT
- 9. ¿Hay un compilador como servicio para C++?
- 10. ver código nativo de Eclipse
- 11. ¿Se permite a un compilador de C++ emitir código de máquina diferente compilando el mismo programa?
- 12. Android: MediaRecorder @ Código nativo
- 13. ¿Hay un compilador C portátil para Windows?
- 14. ¿Cuál es la diferencia entre el código nativo, el código de máquina y el código de ensamblaje?
- 15. ¿Puedo compilar Java con código nativo?
- 16. SSA para el código de máquina de pila
- 17. ¿Hay alguna manera de ver el código nativo producido por theJITter para C#/CIL dado?
- 18. Javascript check para soporte de marcador nativo en IE8
- 19. ¿Hay un compilador Ruby .NET?
- 20. Javascript equivalente nativo para jQuery event.preventDefault
- 21. ¿Hay un tipo .NET nativo para las subredes CIDR?
- 22. Extensión de Firefox: ¿ejecución de código nativo?
- 23. ¿Cómo encuentro cómo el compilador de C++ implementa algo, excepto la inspección del código máquina emitido?
- 24. ¿Cómo generar y ejecutar código nativo de forma dinámica?
- 25. ¿Hay alguna herramienta para comentar el código de JavaScript?
- 26. javascript input via popup nativo
- 27. Ejecutando código nativo en Azure
- 28. Método nativo de Javascript en GWT
- 29. de código abierto máquina virtual
- 30. Three.js portado al código nativo?
¿Estaba hablando de JScript.NET? – Shimmy
Pido una pequeña aclaración: por "compilador nativo de código de máquina", ¿te refieres a un compilador que toma un programa Javascript y produce un ejecutable (Compilación estática), o simplemente quieres decir que es posible traducir el código javascript a la máquina? código en absoluto (Por ejemplo, los compiladores JIT en Tracemonkey (Firefox) y V8 (Chrome) generarán código de máquina nativo a partir de la ejecución actual de javascript, por lo que no tiene que interpretarlos varias veces). – Falaina
Estoy pidiendo compilación estática . –