11
votes

Comment transformer le V8 compilé JavaScript en un exe?

Je sais que le V8 de Google compile JavaScript dans une machine natale (binaire si je comprends correctement).
Existe-t-il un moyen de prendre la sortie et de le transformer en exe?


0 commentaires

4 Réponses :


8
votes

Je ne pense pas que vous puissiez transformer directement un morceau de JavaScript en une exécutable en utilisant V8, mais vous pouvez probablement faire une application qui regroupe le moteur V8 avec le JavaScript et le gère comme étant autonome.

Vous pouvez trouver toutes les informations sur V8 sur sa page de projet .

Notez également que JavaScript ne peut pas être complètement compilé car il s'agit d'une langue dynamique. Avec V8, il est jit-compilé (comme .NET, par exemple.) Il est toujours possible de le transformer en une exécutable autonome, cependant (comme .NET, par exemple.)

Si vous souhaitez développer des applications autonomes qui utilisent HTML pour le rendu, vous pouvez consulter Adobe Air aussi.


3 commentaires

J'essaie de faire autre chose. Comment pouvez-vous regrouper le JavaScript dans l'EXE alors?


Voir la partie "Incorporation" de la page du projet V8.


Vous pouvez regrouper très facilement JavaScript dans un fichier .exe à l'aide du node-webkit Project - Github.com/Rogerwang/ nœud-webkit



6
votes

JavaScript ne peut pas être compilé une seule fois. La langue a eval qui est assez largement utilisée. (Pour JSON, par exemple), vous devez porter autour du JIT et tout le temps d'exécution.

JIT ici n'est qu'une optimisation, et non la façon de vous débarrasser du compilateur / interprète.


3 commentaires

"V8 compile le code source JavaScript directement dans le code de la machine lorsqu'il est exécuté pour la première fois. Il n'y a pas de codes d'octets intermédiaires, aucun interprète. L'accès à la propriété est géré par le code de cache en ligne pouvant être corrigé avec d'autres instructions de la machine que V8 s'exécute."


Ouais, mais notez le "quand il est d'abord exécuté". JavaScript ne peut pas être entièrement compilé au code d'octet, il doit être compilé car il fonctionne, en raison de sa nature dynamique.


@Le_Drow: Le problème est que, avec "eval", vous nourrissez le nouveau code JavaScript tout le temps.



3
votes

nœud.js Incorde V8. Cela pourrait être un bon exemple à apprendre de.


0 commentaires

3
votes

Il y a eu quelques essais à faire du JS en code natif, ce n'est pas quelque chose qui peut être utilisé en production par aucun moyen, plus d'un intérêt académique. L'interpréteur de rhinocéros pour Java a une option pour rendre JS dans (Java) Bytecode afin que une approche consiste à convertir en bytecode puis à partir de bytecode à Natif avec GCJ. Il y a des discussions sur Rhino et GCJ, mais je ne sais pas si quelqu'un a déjà essayé exactement cela. https://groups.google.com/forum /#!msg/netscape.public.mozilla.jseng/c3tqylz19fw/8v4Heumtixuj

Une autre approche consiste à utiliser Python, plus particulièrement py-py, qui est écrite dans un sous-ensemble non standard de Python appelé Rpython. Rpython n'est pas destiné à la consommation humaine, mais cela bénéficie d'une chose qui peut être compilée à l'origine. Une expérience intéressante (bienveillante) consistait à compiler JavaScript à Python, puis dans certains cas, le python est valide comme Rpython et peut être compilé à des natifs avec le compilateur Rpython.

http://mozakai.blogspot.com/ 2010/07 / expériences-with-static-javascript-as.html

Si un fichier .exe est vraiment important, je voudrais regrouper V8 avec votre application car même si vous pouvez compiler JS à Native, vous avez toujours besoin d'un interprète complet si vous utilisez n'importe quel eval () ou similaire. Il ne serait pas difficile d'écrire un outil pour tout regrouper dans un fichier .exe tant que vos utilisateurs ne se dérangent pas non plus un fichier EXE de 8 Mo ou 8MB v8.dll.

En tant que pensée en dernier lieu, Big G a commencé à autoriser des applications "natives" basées sur Chrome (Google: "applications emballées chromées"). Ils ont accès à un système de niveau bas et peuvent utiliser le webkit Renderer vous permettant de créer votre interface graphique dans CSS et HTML et ils ont leurs propres fenêtres et icônes, il n'est donc pas évident qu'ils fonctionnent à l'intérieur de Chrome. Ceci est probablement toujours prématuré mais c'est quelque chose à garder un œil sur le champ Applications de bureau.


0 commentaires