2013-08-01 5 views
18

asm.js ist im Kommen. Jetzt gibt es sogar Gerüchte von Chrome, die es bald vollständig unterstützen.Kompilieren Sie Java zu asm.js

Aber so weit ist es verwendet wurde, C/C++ Quelle in JavaScript zu kompilieren, die mit in der Nähe von nativen Geschwindigkeit laufen würde (hängt davon ab, wie definieren Sie in der Nähe von einheimischen ...)

Ich habe geplant, zu verwenden GWT, um meinen Java-Code in JavaScript umzuwandeln, aber jetzt fragte ich mich, ob es derzeit einen existierenden Pfad/Prozedur gibt, um Java-Quellcode zu ASM.JS zu kompilieren, und was wäre das?

Ein Grund mehr, warum man das wollen könnte: Java-to-ASM.js might very well run faster then Java-to-Dalvik on some Android phone!

+0

Einige andere Alternativen, für diejenigen, die Java im Browser ausführen möchten; emuliert die meisten der JVM selbst: http://teavm.org/ und http://www.doppiojvm.org/ –

Antwort

8

asm.js (derzeit) wird als Ziel für Sprachen entwickelt, die manuell Speicherzuordnung verwalten und freigeben - wie C/C++. Es kann derzeit keine Sprachen mit Garbage-Collection-Semantik verarbeiten, so doof, wie es scheint, wenn man bedenkt, dass es sich um JavaScript handelt, das eine Garbage Collection Runtime ist.

Wenn Sie wirklich den runden Weg gehen wollten, übergeben Sie den Java-Code durch j2c und geben Sie dann diese C++ - Ausgabe durch emscripten, die zu asm.js kompilieren wird.

Eine andere Möglichkeit wäre es, die Java-Code durch den LLVM Compiler den VMKit verwenden und dass Backend durch die Emscripten asm.js llvm passieren passieren ...

+3

Beachten Sie, dass die Müllsammlung in Java in C/C++ geschrieben ist. – Tim

2

Nicht nur der Müll sammeln, sondern die Java VM geschrieben in C/C++, asm.js kommentiert the possibility des Kompilierens "gesamter VMs von C/C++ zu JavaScript und implementieren JavaScript-emittierende JITs".

Gerade jetzt (Juni 2015) ist diese Möglichkeit nicht real, also bleib bei GWT (ich würde es nicht empfehlen) wenn du Lust hast.