Sé que la v8 de google compila código javascript en la máquina nativa (binario si lo entiendo correctamente).
¿Hay alguna manera de tomar la salida y convertirla en un exe?¿Cómo convertir el javascript compilado de V8 en un EXE?
Respuesta
No creo que pueda convertir directamente un fragmento de JavaScript en un ejecutable utilizando V8, pero probablemente pueda crear una aplicación que agrupe el motor V8 con JavaScript y lo ejecute de forma independiente.
Puede encontrar toda la información sobre V8 en its project page.
También tenga en cuenta que JavaScript no se puede compilar por completo, ya que es un lenguaje dinámico. Con V8, está compilado JIT (como .NET, por ejemplo). Todavía es posible convertirlo en un ejecutable independiente (como .NET, por ejemplo).
Si desea desarrollar autónomamente aplicaciones que hacen uso de HTML para la representación, también puede consultar Adobe Air.
Javascript no se puede compilar solo una vez. El lenguaje tiene eval que es bastante ampliamente utilizado. (para JSON, por ejemplo). Necesitas llevar el JIT y todo el tiempo de ejecución.
JIT aquí es solo una optimización, no la forma de deshacerse del compilador/intérprete.
"V8 compila el código fuente de JavaScript directamente en el código de máquina cuando se ejecuta por primera vez. No hay códigos de bytes intermedios ni intérpretes. El acceso a la propiedad se maneja mediante código de caché en línea que puede ser parcheado con otras instrucciones de máquina como se ejecuta V8 ". –
Sí, pero tenga en cuenta la parte "cuando se ejecuta por primera vez". JavaScript no puede compilarse completamente en byte-code, tiene que ser compilado mientras se ejecuta, debido a su naturaleza dinámica. – Blixt
@the_drow: El problema es que con 'eval' alimentas el nuevo código JavaScript todo el tiempo. – EFraim
Node.js incrustaciones V8. Este podría ser un buen ejemplo para aprender.
Ha habido algunos intentos para convertir js en código nativo, no es algo que se pueda usar en la producción de ninguna manera, sino más bien de interés académico. El intérprete de Rhino para Java tiene una opción para convertir js en bytecode (java), por lo que un enfoque es convertir a bytecode y luego de bytecode a native con GCJ. Hay un poco de discusión sobre Rhino y GCJ, pero no sé si alguien alguna vez intentó exactamente eso. https://groups.google.com/forum/#!msg/netscape.public.mozilla.jseng/c3tqyLZ19fw/8V4HeuMtIXUJ
Otro enfoque es el uso de Python, específicamente Py Py que está escrito en un subconjunto no estándar de Python llamado rPython. rPython no está diseñado para el consumo humano, pero tiene el beneficio de ser algo que se puede compilar en nativo. Un experimento interesante (aunque alocado) fue compilar Javascript para Python y luego, en algunos casos, Python pasa a ser válido como rPython y puede compilarse como nativo con el compilador rPython.
http://mozakai.blogspot.com/2010/07/experiments-with-static-javascript-as.html
Si un archivo .exe es realmente importante, me Bundle V8 con su aplicación, ya que incluso si se puede compilar a js nativa, usted todavía necesita un intérprete completo si se utiliza cualquier eval() o similar . No sería difícil escribir una herramienta para agrupar todo en un archivo .exe, siempre y cuando a sus usuarios no les importe un archivo exe 8MB o un archivo V8.dll de 8MB.
Como último pensamiento, Big G ha comenzado a permitir aplicaciones "nativas" basadas en chrome (google: "chrome packaged apps"). Tienen acceso de bajo nivel al sistema y pueden usar el renderizador WebKit, lo que le permite crear su GUI en CSS y HTML, y tienen sus propias ventanas e iconos, por lo que no es obvio que se estén ejecutando dentro de Chrome. Esto probablemente aún sea prematuro, pero es algo a tener en cuenta en el campo de aplicaciones de escritorio.
- 1. ¿Cómo fusiona un archivo .ico con el archivo compilado .exe?
- 2. ¿Cómo descompilar un archivo exe compilado por py2exe?
- 3. Cómo convertir valor v8 a matriz
- 4. Google Javascript V8 - multithreading
- 5. ¿Cómo puedo convertir un archivo JAR en un archivo EXE?
- 6. ¿Cómo puedo convertir un .jar en un .exe?
- 7. convertir html + js a exe
- 8. Ejecutando V8 Javascript Engine Independiente
- 9. Javascript regex cuelga (usando v8)
- 10. JavaScript Standard Library for V8
- 11. pila y montón en V8 (JavaScript)
- 12. Convertir el sitio php en .exe aplicación de escritorio
- 13. ¿Cómo puedo convertir Java Para Exe
- 14. Ejecutando .exe desde Javascript
- 15. ¿Cómo uso v8 en un hilo?
- 16. ¿Cómo puedo extraer Java exe en jar
- 17. ¿Se podría compilar Python para ejecutar en el motor V8?
- 18. Perl: Javascript :: Plantillas V8 - del perl
- 19. Sistema de archivos de E/S en Javascript usando V8
- 20. Exprimir el rendimiento de v8
- 21. Javascript: bajo rendimiento en V8 de funciones agregadas a String.prototype?
- 22. ¿Puedo ejecutar un tiempo de ejecución de JavaScript (como v8) en el iPhone?
- 23. Convertir el proyecto .exe a la biblioteca de clases
- 24. Cómo "bloquear" V8?
- 25. ¿Cómo puedo convertir una aplicación de WPF a exe
- 26. ¿Por qué un .NET EXE, compilado como x86, se ejecuta como x64?
- 27. Obteniendo el patrón de un re compilado?
- 28. Cómo descompilar un exe o un dll en el ensamblado
- 29. Usando stringify desde el shell v8
- 30. ¿Cómo puedo usar el intérprete de JavaScript V8 de Google Chrome de Delphi?
Estoy tratando de hacer otra cosa. ¿Cómo se puede agrupar el javascript en el exe entonces? –
Consulte la parte "incrustación" de la página del proyecto V8. – Blixt
Puede agrupar JavaScript muy fácilmente en un .exe utilizando el proyecto Node-Webkit - https: // github.com/rogerwang/node-webkit – denysonique