Ein LLVM nach JavaScript Compiler
Emscripten macht es möglich, für bereits in unterschiedlichen Sprachen vorhandene Software, das Internet als Plattform zu nutzen. Der Ansatz, hierfür JavaScript zu verwenden, wirkt zuerst etwas umständlich:
Damit eine gute Ausführungsgeschwindigkeit erreicht wird, werden die JavaScript-Engines angepasst und man entfernt sich sogar von der ursprünglichen Sprache selbst. Dadurch wird JavaScript als eine Art Web-Bytecode zweckentfremdet. Dafür war JavaScript ursprünglich nicht gedacht und die Sprache ist für so etwas nicht entworfen worden.
Der wesentlich logischere Ansatz wäre es, einen richtigen Web-Bytecode für diesen Zweck zu spezifizieren. Dieser könnte beispielsweise ähnlich wie die LLVM Sprache aufgebaut sein, aber mit dem Hintergedanken eines Browsers als Laufzeitumgebung. Das würde eine Performanz ermöglichen, die man nicht mit JavaScript erreichen kann. Eine Umsetzung dieser Art gibt es sogar bereits mit Google Native Client.
Dies bringt aber wieder einige Nachteile anfangs erwähnter Plugins mit sich. Um universell einsetzbar zu sein, muss jeder Browser auf jeder Hardwarearchitektur dieses Konzept implementieren. Eine Etablierung würde daher sehr lange dauern. Der große Vorteil von Emscripten ist also, dass die übersetzten Anwendungen bereits jetzt überall laufen, insofern sie nicht zu komplex sind. Außerdem sind die an JavaScript-Engines nötigen Anpassungen zur Unterstützung von asm.js vergleichsweise einfach, im Gegensatz zur Implementierung einer ganz neuen VM im Browser.
Insgesamt ermöglicht es Emscripten also tatsächlich, nicht zu ressourcenhungrige Anwendung relativ performant im Web auszuführen. Die Ausführungsgeschwindigkeit hängt zur Zeit jedoch noch stark von der JavaScript-Engine ab.