Facebook JavaScript Engine (Hermes) steigert React Native auf Android
Veröffentlicht: 2019-11-18Die Einführung des neuen JavaScript-Tools Facebook für Android-Geräte kann die Startzeit verkürzen, die RAM-Nutzung verringern und zu einer geringeren Anwendungsgröße führen. Derzeit ist das Tool eine Opt-in-Funktion in React Native. Die meisten Facebook-React-Native-Android-Produkte der neuesten Version verwenden dieses JavaScript-Tool.
- Weitere Informationen zur JavaScript-Engine von Facebook für Android-Geräte
- Funktionen der neuen Android-JavaScript-Engine
- So erhalten Sie Hermes
- Reagieren
- Die wichtigste architektonische Entscheidung der Facebook-JavaScript-Engine für Android-Geräte
- 1. Bytecode-Vorkompilierung
- 2. Kein JIT
- 3. Abfallsammeltechnik
- Abschluss
Weitere Informationen zur JavaScript-Engine von Facebook für Android-Geräte
Das JavaScript-Tool Facebook für Android-Geräte wurde entwickelt, um die Funktionsweise großer Android-Anwendungen zu verbessern. Telefonanwendungen werden immer größer, was durchaus zu Problemen führen kann, beispielsweise wenn Sie die Facebook-App auf Geräten herunterladen, denen es an genügend Speicherplatz oder hoher Verarbeitungskapazität mangelt. Dies ist auch der Hauptgrund, warum Facebook und andere Unternehmen „Lite“-Android-Versionen für ihre Anwendungen entwickelt haben.
Jetzt ist es den Erstellern von Android-Anwendungen möglich, die Funktionsweise beliebiger Anwendungen mithilfe des JavaScript-Tools zu verbessern. Dieses Tool verringert die Größe eines Downloads und verbessert die Startfunktion. Das ist es, was Facebook Update für seine Anwendungen mithilfe der JavaScript-Engine von Facebook für Android-Geräte erreichen will.
Das Facebook-Team analysierte Leistungsinformationen und stellte fest, dass das JavaScript-Tool Facebook für Android-Geräte entscheidend für die Größe der Downloads und die allgemeine Startfunktion war. Da sie dies wussten, hatten sie das Gefühl, dass sie die normale Leistung von JavaScript in den stark unterdrückten Umgebungen tragbarer Geräte optimieren müssten. Die Desktop-Umgebung hingegen ist in Ordnung und die Facebook-Desktop-Version für Android funktioniert hervorragend.
Das JavaScript-Tool Facebook für Android-Geräte hilft bei der Verbesserung von drei Hauptfunktionen. Sie sind:
- TTI (Time to Interaction): Dies ist die Zeit, die vom Starten von Anwendungen bis zum vollständigen Laden benötigt wird.
- Die Größe der Downloads.
- Nutzung des Speichers.
Für Sie empfohlen: React Native vs. Flutter vs. PWA: Battle of Trending Mobile App Frameworks.
Funktionen der neuen Android-JavaScript-Engine
- Die Arbeit wird zur Erstellungszeit ausgeführt, anstatt JavaScript auf dem Gadget zu analysieren und zusammenzustellen, während eine Person wartet.
- Eine rechtzeitige Kompilierung ermöglicht weitergehende Optimierungen. Ähnliche Aktivitäten können in einem Programm angezeigt und dedupliziert werden. JavaScript-Codezeichenfolgen werden ohne Laufzeitaufwand gut gespeichert zusammengestellt.
- Eine winzige Android-APK-Größe, die es ermöglicht, eine Facebook-App oder andere Apps auf Geräten mit weniger Speicher zu installieren.
- Bytecode wird möglicherweise vom Speicher zugeordnet und je nach Bedarf zunehmend aus dem Flash-Speicher geladen.
- Der virtuelle Adressbereich wird bei Bedarf abschnittsweise zugewiesen. Dadurch entfällt die Notwendigkeit, die Größe des Heapspeichers zu bestimmen, und der Overhead wird minimiert.
- Implementierung der Standards von JavaScript mit Hermes für ECMAScript2015, das auch als ES6 bezeichnet wird. Die Funktionen von JavaScript, die in React Native-Anwendungen nicht oft verwendet werden, wurden entfernt.
So erhalten Sie Hermes
Die JavaScript-Facebook-Engine für Android-Geräte steht zum Download bereit. Sie können es nicht von Facebook herunterladen, es ist derzeit auf GitHub verfügbar. Richtlinien zur Verwendung finden Sie auf der React Native-Website.
Reagieren
Aber React Native hat ein paar Nachteile, weshalb es den meisten Leuten nicht gefällt. Zum Beispiel: Online-Gaming-Apps und andere Android-App-Funktionen benötigen nativen Code, etwa wenn sie die Integration zwischen der Kamera und dem Sensor sichern müssen. Außerdem müssen Android-Entwickler immer Brücken entwerfen, um die Lücken zwischen der Struktur und dem nativen Code zu schließen. Dies war auch der Grund, warum Airbnb sich entschieden hat, aufzuhören.
Aber die JavaScript-Engine von Facebook für Android-Geräte könnte für Facebook eine Möglichkeit sein, React Native mehr Leben einzuhauchen und mehr Menschen davon zu überzeugen, es zu akzeptieren.
Angesichts der Tatsache, dass sich die JavaScript-Engine von Facebook für Android-Geräte nur auf Apps konzentriert, gab Facebook bekannt, dass sie nicht planen, sie in Server oder Suchmaschinen zu integrieren.
Die JavaScript-Engine von Facebook für Android-Geräte ist das neueste Open-Source-Projekt von Facebook. Weitere aktuelle Android-Projekte sind:

- Pythia: Ein Framework für Deep Learning.
- DLRM: Ein Modell für Deep Learning.
- Spectrum: Ein Projekt, das das Hochladen von Bildern effizienter gestalten soll.
Vielleicht gefällt Ihnen: Einführung in die Programmierung: Ein Überblick über Node JS, Laravel, React, Ruby, Vue und Python.
Die wichtigste architektonische Entscheidung der Facebook-JavaScript-Engine für Android-Geräte
Die Einschränkungen mobiler Geräte, wie z. B. langsamer Flash und geringe RAM-Größe, veranlassten Facebook, einige architektonische Entscheidungen zu treffen. Im Folgenden sind die Dinge aufgeführt, die sie implementiert haben:
1. Bytecode-Vorkompilierung
Um dies zu vermeiden, nutzte die JavaScript-Engine der Facebook-App für Android-Geräte den Vorab-Compiler, der im Rahmen des App-Erstellungsprozesses ausgeführt wird. Dies führt dazu, dass mehr Zeit für die Bytecode-Optimierung aufgewendet wird. Dies bedeutet, dass der Bytecode kleiner und nützlicher ist.
Es kann eine Optimierung des gesamten Programms erfolgen. Dazu gehören die Deduplizierung des Vorgangs und das Packen der String-Tabelle.
Der Bytecode ist so aufgebaut, dass er während der Laufzeit im Speicher abgebildet und interpretiert wird, ohne dass die gesamte Datei durchgegangen werden muss. Der Flash-Speicher verbessert die Latenz bei den meisten mobilen Geräten mittlerer und schlechter Qualität. Dadurch wird bei Bedarf Bytecode aus dem Flash geladen, und die Optimierung des Bytecodes hinsichtlich der Größe bringt großartige TTI-Verbesserungen mit sich.
Da der Speicher außerdem nur zum Lesen zugeordnet ist und von einer Datei unterstützt wird, kann das Betriebssystem, das nicht auslagert, diese Seiten unter Speicherdruck möglicherweise dennoch entfernen. Dadurch werden Prozessabbrüche aufgrund von Speichermangel bei Geräten mit weniger Speicher minimiert.
Ein komprimierter Bytecode ist etwas größer als ein ebenfalls komprimierter JavaScript-Code. Dies liegt daran, dass der Code der JavaScript-Facebook-Engine für Android-Geräte klein ist. Die JavaScript-Engine von Facebook für Android-Geräte verringert die Größe von Android-Apps.
2. Kein JIT
Die JavaScript-Engine der Facebook-App für Android-Geräte verfügt nicht über das JIT-Tool, was bedeutet, dass sie vor allem bei Benchmarks, die auf der CPU basieren, keine gute Leistung erbringt. Diese Entscheidung war global. Die Benchmarks geben insgesamt nicht die Auslastung der Anwendungen wieder.
Facebook hat sogar verschiedene Tests mit JITs durchgeführt und ist davon überzeugt, dass es nie einfach sein wird, eine hohe Geschwindigkeit zu erreichen, ohne ihre Hauptkennzahlen zu verschlechtern. JTIs müssen sich zuerst auf den Start einer App vorbereiten, was die Verbesserung des TTI erschwert, es kann dem TTI sogar schaden. Darüber hinaus trägt JIT zur Größe des nativen Codes und zum Speicherverbrauch bei. Dies ruiniert die wichtigsten Kennzahlen von Facebook. Aus diesem Grund hat Facebook Android beschlossen, es zu ignorieren und stattdessen auf die Leistung des Interpreters als besten Kompromiss für die JavaScript-Engine von Facebook für Android-Geräte zu achten.
3. Abfallsammeltechnik
Bei den ersten Android-Tests von Facebook wurde festgestellt, dass der virtuelle Adressraum bei großen Apps auf 32-Bit-Geräten begrenzt sein kann.
Um den von der Engine genutzten Speicher und virtuellen Adressraum zu reduzieren, hat Facebook einen Abfallsammler mit den folgenden Funktionen entwickelt.
- Zuweisung nach Bedarf: Der virtuelle Adressraum wird bei Bedarf in Blöcken zugewiesen.
- Nicht zusammenhängend: Der virtuelle Adressraum sollte sich in einem Speicherbereich befinden, um Ressourcenbeschränkungen zu vermeiden.
- Verschieben: Das Verschieben von Objekten bedeutet, dass der Speicher fragmentiert werden kann, während unnötige Klumpen in ein Betriebssystem zurückgeführt werden.
Das könnte Ihnen auch gefallen: Angular vs. React: Welches Framework Sie 2019 wählen sollten.
Abschluss
Das JavaScript-Projekt Facebook für Android-Geräte gehört zu den vielen Projekten, an denen das Facebook-Team arbeitet. Das Team freut sich darauf, auch Möglichkeiten zur Gedächtnis- und Zeitanalyse zu entwickeln. Dies erleichtert Android-Experten die Verbesserung ihrer Anwendungen. Testen Sie die JavaScript-Engines von Facebook für Android-Geräte und sehen Sie sich deren Funktionen an. Teilen Sie Ihre Erfahrungen mit uns und Sie können uns auch Fragen stellen, wenn Sie welche haben.
Dieser Artikel wurde von Thomas Miller geschrieben. Er ist ein Android-Technologieexperte, der es liebt, Menschen über die neuesten Technologien zu informieren. Thomas liebt auch die Idee der JavaScript-Facebook-Engine für Android-Geräte, hat sie verwendet und mochte, wie sie funktioniert. Außerdem stellt er auf autoexpertguides.com die besten Expertenbewertungen für die Automobilbranche zusammen.