Facebook JavaScript Engine (Hermes) przyspiesza React Native na Androida
Opublikowany: 2019-11-18Wprowadzenie nowego narzędzia JavaScript Facebook dla urządzeń z systemem Android może wydłużyć czas uruchamiania, zmniejszyć zużycie pamięci RAM i doprowadzić do zmniejszenia rozmiaru aplikacji. W tej chwili narzędzie jest opcjonalną funkcją w React Native. Większość produktów Facebooka reagujących na najnowszą wersję Native Androida zaczęła używać tego narzędzia JavaScript.
- Więcej informacji o silniku JavaScript Facebooka dla urządzeń z systemem Android
- Funkcje nowego silnika JavaScript systemu Android
- Jak zdobyć Hermesa
- Reagować
- Główna decyzja architektoniczna silnika JavaScript Facebooka dla urządzeń z systemem Android
- 1. Wstępna kompilacja kodu bajtowego
- 2. Brak JIT
- 3. Technika zbierania odpadów
- Wniosek
Więcej informacji o silniku JavaScript Facebooka dla urządzeń z systemem Android
Narzędzie JavaScript Facebook dla urządzeń z Androidem zostało stworzone w celu usprawnienia funkcjonowania dużych aplikacji na Androida. Aplikacje na telefon stale się powiększają, co może powodować problemy, na przykład podczas pobierania aplikacji Facebook w gadżetach, które nie mają wystarczająco dużo miejsca lub dużych możliwości przetwarzania. Jest to również główny powód, dla którego Facebook i inne firmy opracowały „lekkie” wersje Androida dla swoich aplikacji.
Teraz twórcy aplikacji na Androida mogą usprawnić działanie dowolnych aplikacji za pomocą narzędzia JavaScript. To narzędzie zmniejsza rozmiar pobieranego pliku i usprawnia funkcję uruchamiania. To właśnie zamierza zrobić aktualizacja Facebooka dla swoich aplikacji wykorzystujących silnik JavaScript Facebooka dla urządzeń z Androidem.
Zespół Facebooka przeanalizował informacje o wydajności i odkrył, że narzędzie JavaScript Facebook dla urządzeń z Androidem miało kluczowe znaczenie dla wielkości pobrań i ogólnego funkcjonowania startupu. Wiedząc o tym, poczuli, że muszą zoptymalizować normalne działanie języka JavaScript w mocno represjonowanych środowiskach urządzeń przenośnych. Z drugiej strony środowisko pulpitu jest w porządku, a wersja Facebooka na komputery z Androidem działa doskonale.
Narzędzie JavaScript Facebook dla urządzeń z systemem Android pomaga udoskonalić 3 główne funkcje. Oni są:
- TTI (czas interakcji): Jest to czas potrzebny do uruchomienia aplikacji do momentu ich pełnego załadowania.
- Rozmiar pobrań.
- Wykorzystanie pamięci.
Polecane dla Ciebie: React Native vs Flutter vs PWA: Bitwa o popularne frameworki aplikacji mobilnych.
Funkcje nowego silnika JavaScript systemu Android
- Praca będzie wykonywana w czasie kompilacji, zamiast analizować i łączyć JavaScript w gadżecie, gdy osoba czeka.
- Kompilacja z wyprzedzeniem pozwala na bardziej zaawansowane optymalizacje. Podobne działania można zobaczyć w programie i usunąć duplikaty. Ciągi kodu JavaScript zostaną złożone w dobry sposób bez narzutu czasu wykonywania.
- Niewielki rozmiar Android APK umożliwiający zainstalowanie aplikacji Facebooka lub dowolnej innej aplikacji na urządzeniach z mniejszą ilością pamięci.
- Kod bajtowy może być mapowany przez pamięć i ładowany z pamięci flash w miarę potrzeb.
- Wirtualny obszar adresowy jest przydzielany w porcjach, gdy tylko jest to wymagane. Zapobiega to konieczności określania rozmiaru sterty, a także minimalizuje narzut.
- Implementacja standardów JavaScript z wykorzystaniem Hermesa ukierunkowanego na ECMAScript2015, który jest również określany jako ES6. Usunięto cechy JavaScript, które nie są często stosowane w aplikacjach React Native.
Jak zdobyć Hermesa
Silnik JavaScript Facebook dla urządzeń z systemem Android jest dostępny do pobrania. Nie możesz pobrać z Facebooka, na razie jest dostępny na GitHub. Wytyczne, jak z niego korzystać, dostępne są na stronie React Native.
Reagować
Ale React Native ma kilka wad, przez które większość ludzi go nie lubi. Na przykład: aplikacje do gier online i inne funkcje aplikacji na Androida wymagają natywnego kodu, na przykład wtedy, gdy muszą wykonać kopię zapasową integracji między aparatem a czujnikiem. Ponadto programiści Androida zawsze muszą projektować mosty, aby zapełnić przestrzenie między strukturą a kodem natywnym. To był również powód, dla którego Airbnb zdecydowało się z niego zrezygnować.
Jednak silnik JavaScript Facebooka dla urządzeń z systemem Android może być środkiem Facebooka do ożywienia React Native i przekonania większej liczby osób do zaakceptowania go.
Biorąc pod uwagę, że JavaScriptowy silnik Facebooka dla urządzeń z Androidem skupia się tylko na aplikacjach, Facebook ujawnił, że nie planuje integracji go z serwerami ani wyszukiwarkami.
JavaScript Silnik Facebooka dla urządzeń z Androidem to najnowszy projekt open-source pochodzący z Facebooka. Bardziej aktualne projekty Androida obejmują:

- Pythia: Framework do głębokiego uczenia się.
- DLRM: model głębokiego uczenia się.
- Spectrum: Projekt mający na celu usprawnienie procesu przesyłania zdjęć.
Może ci się spodobać: Wprowadzenie do programowania: krótki opis Node JS, Laravel, React, Ruby, Vue i Python.
Główna decyzja architektoniczna silnika JavaScript Facebooka dla urządzeń z systemem Android
Ograniczenia gadżetów mobilnych, takie jak wolne flashowanie i mała ilość pamięci RAM, skłoniły Facebooka do podjęcia pewnych decyzji architektonicznych. Poniżej znajdują się rzeczy, które wdrożyli:
1. Wstępna kompilacja kodu bajtowego
Aby tego uniknąć, silnik JavaScript aplikacji Facebook na urządzenia z Androidem wykorzystywał kompilator z wyprzedzeniem, który działa w ramach procesu tworzenia aplikacji. Powoduje to poświęcenie większej ilości czasu na optymalizację kodu bajtowego. Oznacza to, że kod bajtowy jest mały i bardziej użyteczny.
Optymalizacja całego programu może mieć miejsce. Obejmuje to usuwanie duplikatów operacji i pakowanie tabeli łańcuchów.
Kod bajtowy jest zbudowany w taki sposób, że w czasie wykonywania zostanie zmapowany w pamięci i zinterpretowany bez konieczności przeglądania całego pliku. Pamięć flash poprawia opóźnienia w przypadku większości gadżetów mobilnych średniej i niskiej jakości. W razie potrzeby ładuje to kod bajtowy z pamięci flash, a optymalizacja kodu bajtowego pod kątem rozmiaru zapewnia wspaniałe ulepszenia TTI.
Ponadto, ponieważ pamięć jest mapowana tylko do odczytu i obsługiwana przez plik, system operacyjny, który nie zamienia, może nadal usuwać te strony pod presją pamięci. Zminimalizuje to zabijanie procesów z powodu braku pamięci w gadżetach, które mają mniej pamięci.
Skompresowany kod bajtowy jest nieco większy niż kod JavaScript, który również jest skompresowany. Dzieje się tak, ponieważ kod silnika JavaScript Facebooka dla urządzeń z systemem Android jest niewielki. JavaScript Silnik Facebooka dla urządzeń z Androidem zmniejsza rozmiar aplikacji na Androida.
2. Brak JIT
Aplikacja Facebooka na urządzenia z Androidem Silnik JavaScript nie ma narzędzia JIT, co sugeruje, że nie radzi sobie dobrze głównie w testach porównawczych, które opierają się na procesorze. Ta decyzja była globalna. Benchmarki ogólnie nie odzwierciedlają obciążenia aplikacji.
Facebook przeprowadził nawet różne testy z JIT i są przekonani, że nigdy nie będzie łatwo osiągnąć wysoką prędkość bez pogorszenia ich głównych wskaźników. JTI muszą najpierw przygotować się za każdym razem, gdy uruchamiana jest aplikacja, co utrudnia ulepszanie TTI, a nawet może zaszkodzić TTI. Poza tym JIT przyczynia się do rozmiaru kodu natywnego i zużycia pamięci. To rujnuje główne wskaźniki Facebooka. Dlatego Facebook Android postanowił to zignorować i zamiast tego zwrócił uwagę na wydajność interpretera jako najlepszego kompromisu dla silnika JavaScript Facebook dla urządzeń z Androidem.
3. Technika zbierania odpadów
Podczas wstępnych testów Facebooka na Androida okazało się, że wirtualna przestrzeń adresowa może być ograniczona w dużych aplikacjach na 32-bitowych gadżetach.
Aby zmniejszyć ilość pamięci i wirtualnej przestrzeni adresowej wykorzystywanej przez silnik, Facebook zaprojektował moduł zbierania odpadów z poniższymi funkcjami.
- Alokacja na żądanie: W razie potrzeby wirtualna przestrzeń adresowa jest przydzielana w porcjach.
- Nieciągłe: Wirtualna przestrzeń adresowa powinna znajdować się w jednym zakresie pamięci, aby wyeliminować ograniczenia zasobów.
- Przenoszenie: Przenoszenie obiektów oznacza, że pamięć może ulec fragmentacji, podczas gdy niepotrzebne bryły są przenoszone z powrotem do systemu operacyjnego.
Może ci się spodobać również: Angular vs React: jaki framework wybrać w 2019 roku.
Wniosek
JavaScript Projekt Facebooka dla urządzeń z systemem Android jest jednym z wielu projektów, nad którymi pracuje zespół Facebooka. Zespół nie może się doczekać stworzenia sposobów analizy pamięci i czasu. Ułatwi to ekspertom Androida ulepszanie ich aplikacji. Przetestuj silniki JavaScript Facebook dla urządzeń z systemem Android i poznaj jego funkcje. Podziel się z nami swoimi doświadczeniami, a także możesz zadawać nam pytania, jeśli masz jakieś.
Ten artykuł został napisany przez Thomasa Millera. Jest ekspertem od technologii Androida, który uwielbia informować ludzi o najnowszych technologiach. Thomas jest również zachwycony pomysłem silnika JavaScript Facebooka dla urządzeń z systemem Android, który wykorzystał i spodobał mu się jego sposób działania. Na autoexpertguides.com zbiera również najlepsze recenzje ekspertów dla branży motoryzacyjnej.