Meine Blog-Beiträge

Facebook startet Hermes, eine Open-Source-JavaScript-Engine zum Ausführen von React Native-Apps auf Android

Facebook startet Hermes, eine Open-Source-JavaScript-Engine zum Ausführen von React Native-Apps auf Android


Facebook-Software-Ingenieur Marc Horowitz stellte Hermes gestern auf der Chain React 2019 Konferenz in Portland, Oregon vor. Hermes ist ein neues Tool für Entwickler, um die App-Startleistung zu verbessern, wie es Facebook für Apps tut, und um Apps auf minderwertigen Smartphones effizienter zu machen.

Der Standardvorteil von Hermes besteht darin, dass Entwickler alle drei mobilen Plattformen mit einer einzigen Codebasis ansprechen können. Wie in jedem plattformübergreifenden Framework gibt es jedoch Unterschiede in Leistung, Sicherheit und Flexibilität. GitHub hat GitHub'da Hermes für alle Entwickler. Es hat auch einen eigenen Twitter-Account und eine Eigene Seite.

Horowitz betonte, dass Hermes die APK-Größe auf die Hälfte seiner 41 MB reduzierte und ein Viertel der Speichernutzung der Anwendung entfernte.

Mit anderen Worten, mit Hermes können Entwickler Benutzern die schnellere Interaktion mit einer Anwendung mit weniger Blöcken ermöglichen, z. B. Einschränkungen, die durch mehrere Anwendungen verursacht werden, die auf niedrigen Downloadzeiten und begrenzten Speicherquellen, insbesondere auf Telefonen mit niedriger Qualität, gemeinsam genutzt werden.

Und das sind genau die Telefone, die Facebook mit Hermes anvisiert. Im Vergleich zu den hochwertigen Telefonen, die bezahlte Entwickler in der Regel verwenden.

"Als Entwickler neigen wir dazu, die neuesten Flaggschiff-Geräte zu tragen. Die meisten Benutzer in der Welt haben nicht "gesagt" Häufig verwendete Android-Geräte verfügen über weniger Speicher und weniger Speicher als die neuesten Telefone und viel weniger Speicher als der Desktop. Dies gilt insbesondere außerhalb der Vereinigten Staaten. Mobiler Blitz ist auch relativ langsam und hoch, was zu I/O-Verzögerungführt. "

Dies ist nicht jeden Tag, wenn eine neue JavaScript-Engine entsteht, aber während es viele Browser gibt, die Googles V8 zur Verfügung stehen, stellt Mozilla fest, dass SpiderMonkey, Microsofts Chakra, Horowitz Hermes nicht auf Browser oder wie man serverseitig auf node.js basiert.

"Wir versuchen nicht, im Browserbereich oder im Serverbereich zu konkurrieren. Hermes hätte in der Theorie für solche Fälle der Verwendung sein können, was nie unser Ziel war.

Die Aufzeichnungen berichten, dass Facebook keine Pläne hat, Hermes über The Nation.js hinaus über React Native hinaus zu schieben oder es zur Basis eines Browsers der Marke Facebook zu machen. Dies liegt daran, dass es für mobile Apps optimiert ist und keine Vorteile gegenüber anderen Engines in anderen Nutzungsszenarien bietet.

Anstatt JavaScript zu installieren und dann zu analysieren, versucht Hermes, durch eine Bytecode-Vorkompilierung effizient zu sein. Hermes verwendet eine vorgefertigte (AO) Assembly während der Erstellung mobiler Apps, um eine umfassendere Bytecodeoptimierung zu ermöglichen. In ähnlicher Weise ist der Fuchsia Dart Compiler für iOS ein AOT-Compiler.

Es gibt andere Möglichkeiten, um mehr Leistung von JavaScript zu erhalten, zum Beispiel bietet die V8-Engine eine Funktion namens benutzerdefinierte Snapshots. Dies ist jedoch technisch etwas schwieriger als mit Hermes.

Hermes gibt auch den Full-Time (JIT)-Compiler auf, der von anderen JavaScript-Engines verwendet wird, um häufig interpretierten Code im Maschinencode zu kompilieren. Im Kontext von React Native trägt JIT nicht viel zur Vereinfachung der Workloads mobiler Apps bei.

Der Grund für Hermes Existenz ist es, React Native besser zu machen, wie es auf Facebook tut. "Hermes ermöglicht mehr Optimierung auf Mobilgeräten, da Entwickler den Build-Stack steuern", mailte ein Facebook-Sprecher The Register. "Wir haben beispielsweise eine Bytecode-Vorkompilierung angewendet, um die Leistung zu verbessern, und eine effizientere Garbage Collection entwickelt, um die Speichernutzung zu reduzieren."

In einem Gespräch mit Hacker News behauptet Microsoft-Entwickler Andrew Coates, dass Hermes interne Tests und 21,5 MB Laufzeitspeichereffekt hat, verglichen mit 1,4s für tti V8, 1.1sec de Hermes in Verbindung mit Microsoft Office für Android Indigenous Response im Vergleich zu 30 MB mit diesem V8.

Hermes ist größtenteils mit ES6 JavaScript kompatibel. Es gibt keine Unterstützung für einige Sprachfeatures wie Ausdrücke und lokalen Modus eval (um das Modul klein zu halten).

Ein Facebook-Sprecher sagte The Register, dass sie nächste Woche Benchmark-Zahlen veröffentlichen wollen, um Leistungsansprüche zu unterstützen.



Diesen Artikel teilen


Kommentare (1)

  • 
                                                                                                                          John McCain
    John McCain Antwort

    Vielen Dank für diese Info

    vor 1 Jahr

Kommentar