Mobilentwicklung: JavaScript-Engine Hermes soll React-Native-Apps beschleunigen

Um aufwendigere Anwendungen auch auf Android-Geräten mit geringerer Leistung flüssig betreiben zu können, stellt Facebook eine neue JS-Engine quellfrei bereit.

In Pocket speichern vorlesen Druckansicht 12 Kommentare lesen
Mobilentwicklung: JavaScript-Engine Hermes soll React-Native-Apps beschleunigen

Hermes-Logo

(Bild: Facebook)

Lesezeit: 2 Min.
Von
  • Matthias Parbel

Im Rahmen der Chain-React-Konferenz hat Facebook die neue JavaScript-Engine Hermes vorgestellt, die sich an der ES6-Spezifikation anlehnt. Die Open-Source-Engine für Android ist darauf ausgelegt, größere und komplexere Apps insbesondere auf leistungsschwächeren Mobilgeräten – beispielsweise Smartphones mit weniger Speicher und einfacheren Prozessoren – zu beschleunigen. Hermes ist dabei im ersten Schritt auf die Optimierung von React-Native-Applikationen ausgerichtet, wie Facebook sie für die eigenen Dienste anbietet.

Den Facebook-Entwicklern zufolge erweist sich gerade auf Mobil-Hardware mit beschränktem und langsameren Memory sowie schwächeren CPUs die JavaScript-Engine häufig als limitierender Faktor bei der App-Performance. Startzeiten (time to interact – TTI), Downloadgröße (Umfang der Android APKs) und die Speicherauslastung sind dabei die entscheidenden Faktoren.

Zur Optimierung der Startzeiten baut Hermes auf einen Ahead-of-Time-Compiler, der bereits während des Build-Prozesses der Mobilanwendung zum Einsatz kommt. Dadurch entfällt das sonst übliche Parsen des JS-Sourcecodes zum Erzeugen des Bytecodes nach dem Laden. Entwicklern bleibt somit auch mehr Zeit, um den Bytecode kompakter und effizienter zu gestalten. Zudem lässt sich der Bytecode so konzipieren, dass er zur Laufzeit in den Speicher gemappt und interpretiert werden kann, ohne die gesamte Datei lesen zu müssen, um dem Latenzproblem des Flash-Speichers zu begegnen und die TTI zu verkürzen.

Obwohl zur Ausführungsbeschleunigung häufig JIT-Compiler (Just-in-Time) zum Einsatz kommen, haben sich die Hermes-Entwickler bewusst dagegen entschieden. Vergleichstests hätten gezeigt, dass JIT-Compiler häufig nicht nur umfassenderen Code produzieren und damit zu höherem Speicherbedarf beitragen, sondern auch die Optimierung der TTI durch Warm-up-Phasen beim Anwendungsstart erschweren.

Die Facebook-Entwickler haben Hermes zwar mit Blick auf die Beschleunigung der hauseigenen React-Native-Apps gebaut, da die JavaScript-Engine aber als Open Source unter MIT-Lizenz auf GitHub frei zur Verfügung steht, lässt sie sich für beliebige Android-Anwendungen nutzen. Um die Migration auf Hermes voranzutreiben und gleichzeitig an der Unterstützung von JavaScriptCore on iOS festzuhalten, stellt Facebook mit JSI eine API bereit, mit der sich JavaScript-Engines in C++-Anwendungen einbetten lassen. Weitere Informationen zu den technischen Details und zum Einsatz in eigenen Projekten finden sich darüber hinaus auf der Hermes-Website. (map)