Programmiertrends heute und morgen

Coding im Wandel der Zeit

12.10.2015
Von Thomas Drilling

C++-zu-JavaScript Compiler

Für viele Entwickler ist es einfacher, Ihre Geschäftslogik mit traditionellen Programmiersprachen wie C++ zu verfassen. Soll eine solche Anwendung internetfähig gemacht, also als Client/Server-orientierte Web-Anwendung realisiert werden, kann der Code mit Hilfe von Tools wie Mozillas LLVM-zu-JavaScript-Compiler Emscripten konvertiert werden. Emscripten ist in der Lage, LLVM-Assemblercode in Standard-JavaScript zu konvertieren, unterstützt aber auch andere Programmiersprachen. Dabei kommen je nach Sprache verschiedene Wege der Umsetzung zum Einsatz.

Die Portiertung der Unreal4-Game-Engine auf JavaScript wurde mit Hilfe von Mozilla Emscripten umgesetzt.
Die Portiertung der Unreal4-Game-Engine auf JavaScript wurde mit Hilfe von Mozilla Emscripten umgesetzt.

Eine Möglichkeit besteht darin, den Sourcecode direkt von LLVM-Bytecode in JavaScript zu übersetzen. Das funktioniert beispielsweise mit C/C++. Es kann aber auch die Ausführungsumgebung der Programmiersprache in JavaScript übersetzt werden. Diese kompilierte Ausführungsumgebung kann dann dazu verwendet werden, den eigentlichen Code der jeweiligen Programmiersprache auszuführen. Obwohl bei Emscripten der Fokus auf C/C++ liegt, lassen sich mit dem Tool eine ganze Reihe von Programmiersprachen verwenden. Der Port der Unreal 4 Engine auf JavaScript wurde beispielsweise mit Emscripten realisiert.

Brandaktuell und in direkter Konkurrenz zu Emscripten steht das Projekt Duetto. Dieses wurde von dem Unternehmen Learning Technologies erst Ende letzten Jahres erstmals präsentiert. Vor wenigen Tagen wurde eine erste stabile Version 1.0 der inzwischen in Cheerp unbenannten Software zum Download freigegeben. Cheerp ist ähnlich wie Emscripten ein Compiler, der C++-Code in JavaScript umwandeln kann und wahlweise in einer Open-Source-Version oder als kommerzielles Angebot für Linux, Windows und Mac OS X verfügbar.

Mit Cheerp können Sie in C oder C++ verfassten Code zur Verwendung als Web-Anwendung komfortabel in JavaScript-Apps integrieren. Eine in C++ verfasste Methode kann dann recht einfach mit Hilfe des [[client]]-Tags in eine JavaScript-App eingebettet werden, um dann die Browser-API aus dem Client Namespace ansprechen. Cheerp braucht dazu im Gegensatz zu Emscripten keinen Wrapper und ermöglicht damit echte bidirektionale Interoperabilität zwischen C/C++- und JS-Code. So können Sie mit Cheerp beispielsweise Ihre in C++ verfasste Geschäftslogik mit einer JavaScript-Oberfläche ausstatten. Cheerp bringt zudem eine reguläre Clang/GCC-Schnittstell mit und fügt sich so nahtlos in bestehende Toolchains ein. Darüber hinaus verwendet Cheerp dynamischer Speicherverwaltung und unterstützt JavaScript-Source-Maps. Dies erlaubt ein komfortables Debuggen.

Zur Startseite