Frage

Gibt es einen nativen Maschinencode -Compiler für JavaScript? Ich spreche nicht von einer VM. Wenn es nicht existiert, kann es getan werden?
Ich frage mich, ob es aufgrund der dynamischen Natur der Sprache mit Binär zusammengestellt werden kann.

War es hilfreich?

Lösung

Soweit ich weiß, gibt es keine statischen Compiler für JavaScript. Es ist sicherlich theoretisch möglich; Eine statische Zusammenstellung von JavaScript müsste jedoch eine sehr schwere Laufzeit benötigen, um alle Funktionen (wie dynamisches Typing und Eval) zu unterstützen. Abgesehen davon, wenn sie mit der Notwendigkeit präsentiert werden, Python (eine andere dynamische Sprache) statisch zu kompilieren, die Pypy Die Entwickler schafften eine Sprache, die eine sehr eingeschränkte Untergruppe von Python (Rpython genannt) war, die von einigen der dynamischeren Merkmale von Python leer ist und statisch zusammengestellt werden konnte.

Wenn Sie dies darum bitten, eine eigenständige ausführbare Datei aus dem JavaScript -Code zu erstellen, muss es sicher Wrapper geben, die im Wesentlichen eine ausführbare Datei erstellen würden, die Ihr Skript und ein eingebettetes JavaScript -VM enthält (leider kenne ich keine Aussehnung nicht. ).

Andere Tipps

Es ist definitiv machbar, obwohl ich gerade weiß, wie ich es im Moment macht, ist ein zweistufiger Prozess ...

  1. Kompilieren Sie das JavaScript mit Java mithilfe Mozilla Rhino JSC.
  2. Kompilieren Sie die resultierende Java -Klassendatei in ausführbare Datei mit etwas wie Gnu's GCJ.

Warum willst du allerdings? Welchen Vorteil erwarten Sie zu finden?

Google V8 Engine kompiliert JavaScript in nativen Maschinencode. Diese Funktion wird in der verwendet Einschließen Compiler, für den ich für Node.js und IO.js -Projekte geschrieben habe.

Bitte beachten Sie, dass all diese Lösungen sind DOMWeniger, also keine Bibliotheken mögen angular.js oder jquery, nur underscore.js/lodash

Folgen bis FalainaAntwort,Pypy hat ein dist für JavaScript

Ebenfalls, Appcelerator Titanium hat ein js > JavaBit > android

Endlich, node.js Kann benutzen NexeIn diesem anderen erklärt Antworten

Es ist theoretisch möglich, aber es wird viel Laufzeit -Support -Gepäck enthalten (und sogar einen vollständigen JavaScript -Compiler oder -interpreter, um sie zu unterstützen eval).

Suchen Sie einen tatsächlichen nativen Code -Compiler oder suchen Sie nach etwas, das Javascript -Code zusammen mit einer Laufzeit in eine einzelne ausführbare Binärdatum bündeln kann?

Ich bin sicher

Wenn Sie Windows haben: Wenn Sie eine JavaScript -Textdatei schreiben, können Sie sie kompilieren, indem Sie die Eingabeaufforderung mit CD öffnen, um zum Textdateiverzeichnis (falls Windows zu erhalten). Typ: C: Windows Microsoft.net Framework v2.0.50727 jsc.exe textfile.js

Ansonsten: Laden Sie einen Jscript -Compiler herunter, geben Sie das Verzeichnis des Jscript -Compilers und dann den Namen der JavaScript -Textdatei ein

Sie können Umgebungsvariablen hinzufügen, wenn Sie den gesamten Verzeichnisnamen nicht an den Compiler eingeben möchten.

Dieser Typ erklärt es besser:http://www.phpied.com/make-your-javascript-a-windows-exe/

Ich persönlich denke, das ist wirklich cool. Ich wünschte nur, es gäbe mehr Dokumentation dafür.

Ich bin mir ziemlich sicher, wonach Sie suchen, aber ich bin ein bisschen neu.

Tracemonkey In ff3.5 tun Sie dies mit einigen Teilen des JavaScript -Codes. Möglicherweise können Sie einige Anweisungen von dort bekommen!

Der AOT -Compiler von Adobe Air für iOS erstellt statisch ein Superset von JavaScript mit dem Namen ActionScript 3.0 bis ABC -Bytecode und dann über LLVM. Wenn Sie Ihren AS3 -Code ohne Klassen und ohne Typ -Annotation schreiben würden, wäre er im Wesentlichen JavaScript, und dann würde der Compiler ihn glücklich zum Maschinencode kompilieren. Leider ist dies keine Open -Source -Software, und Sie erhalten keinen Zugriff auf ein DOM (an die viele Menschen denken, wenn sie an JavaScript denken), weil sie im Wesentlichen in einer Flash -Player -Instanz ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top