Question

Existe-t-il un compilateur de code machine natif pour JavaScript? Je ne parle pas d'une machine virtuelle. Si cela n'existe pas, peut-il être fait?
Je me demande s'il peut être compilé en binaire en raison de la nature dynamique de la langue.

Était-ce utile?

La solution

Pour autant que je sache, il n'y a pas de compilateurs statiques pour JavaScript. C'est certainement théoriquement possible; Cependant, une compilation statique de JavaScript aurait besoin d'un temps d'exécution très lourd pour prendre en charge toutes ses fonctionnalités (telles que le typage dynamique et l'évaluation). En dehors de côté, lorsqu'il est présenté avec la nécessité de compiler statiquement Python (une autre langue dynamique), le Py Les développeurs ont fini par créer un langage qui était un sous-ensemble très restreint de Python (appelé Rpython), vide de certaines des caractéristiques les plus dynamiques de Python, qui était capable d'être compilée statiquement.

Si vous demandez cela dans le but de créer un exécutable autonome à partir du code JavaScript, je suis sûr qu'il doit y avoir des emballages qui créeraient essentiellement un exécutable contenant votre script et une machine virtuelle JavaScript intégrée (malheureusement, je ne connais aucune main désactivée ).

Autres conseils

C'est vraiment faisable, bien que la seule façon dont je sais le faire pour le moment est un processus en deux étapes ...

  1. Compiler le javascript à Java en utilisant Mozilla Rhino JSC.
  2. Compiler le fichier de classe Java résultant à exécutable en utilisant quelque chose comme GCJ de GNU.

Pourquoi voudriez-vous, cependant? Quel avantage vous attendez-vous à trouver?

Google V8 Engine compile JavaScript dans le code machine natif. Cette fonction est utilisée dans le Fermeaux compilateur pour lequel j'ai écrit pour les projets Node.js et io.js.

Veuillez noter que toutes ces solutions sont DOMmoins, donc pas de bibliothèques comme angular.js ou jquery, seulement underscore.js/lodash

À la suite de Falainala réponse,Py a un dist pour Javascrip

Aussi, Appcelerator titanium a un js > JavaBit > android

Pour terminer, node.js peut utiliser nexeExpliqué dans cet autre réponse

Il est théoriquement possible, mais il y aura beaucoup de bagages de support d'exécution impliqués (et même un compilateur ou un interprète JavaScript complet pour prendre en charge eval).

Êtes-vous à la recherche d'un véritable compilateur de code natif, ou recherchez-vous quelque chose qui peut regrouper le code JavaScript avec un runtime en un seul binaire exécutable?

Je suis sûr que Microsoft a un compilateur JScript ("Microsoft's Javascrip

Si vous avez Windows: Si vous écrivez un fichier texte JavaScript, vous pouvez le compiler en: ouvrant l'invite de commande à l'aide du CD pour accéder au répertoire de fichier texte (si vous avez Windows) Type: C: Windows Microsoft.net Framework v2.0.50727 jsc.exe textfile.js

Sinon: Téléchargez un compilateur JScript Tapez le répertoire du compilateur JScript puis le nom du fichier texte JavaScript

Vous pouvez ajouter des variables d'environnement si vous ne souhaitez pas taper le nom du répertoire entier au compilateur.

Ce gars l'explique mieux:http://www.phpied.com/make-your-javascript-a-windows-exe/

Je pense personnellement que c'est vraiment cool. Je souhaite juste qu'il y ait plus de documentation pour cela.

Je suis à peu près sûr que c'est ce que vous cherchez, mais je suis un peu nouveau.

Tracemonkey Dans FF3.5, faites-le à certaines parties du code JavaScript. Vous pourrez peut-être obtenir des instructions à partir de là!

Le compilateur AOT d'Adobe Air pour iOS compile statiquement un sur-ensemble de JavaScript appelé ActionScript 3.0 jusqu'à ABC Bytecode, puis le code machine via LLVM. Si vous deviez écrire votre code AS3 sans classes et sans annotation de type, ce serait essentiellement JavaScript, puis le compilateur le compilerait avec plaisir vers le code machine. Malheureusement, ce n'est pas un logiciel open source, et vous n'avez accès à aucun DOM (à laquelle beaucoup de gens pensent lorsqu'ils pensent à JavaScript) car il fonctionne à l'intérieur d'une instance Flash Player.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top