Facebook JavaScript Engine (Hermes) przyspiesza React Native na Androida

Opublikowany: 2019-11-18
Facebook stworzył niesamowity silnik JavaScript o nazwie Hermes, aby usprawnić działanie aplikacji React Native na gadżetach Androida. Silnik Facebooka dla urządzeń z Androidem jest dobry do szybkiego uruchamiania, wykorzystania ściśle spakowanego kodu bajtowego i optymalizacji z wyprzedzeniem.

Wprowadzenie 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.

Pokaż spis treści
  • 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

AI-sztuczna-inteligencja-kod-skrypt-projekt-rozwój

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ą:

  1. TTI (czas interakcji): Jest to czas potrzebny do uruchomienia aplikacji do momentu ich pełnego załadowania.
  2. Rozmiar pobrań.
  3. Wykorzystanie pamięci.
 Polecane dla Ciebie: React Native vs Flutter vs PWA: Bitwa o popularne frameworki aplikacji mobilnych.

Funkcje nowego silnika JavaScript systemu Android

marketing-rozwoju-aplikacji-mobilnych

  • 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.
Poza tym aplikacja Facebook na urządzenia Samsung dodatkowo otwiera źródła do integracji Hermesa z React Native. Oznacza to, że programiści Androida będą mogli natychmiast korzystać z Hermesa.

Jak zdobyć Hermesa

Zadaj sobie trzy pytania, aby ocenić wyniki

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ć

React-JavaScript-Biblioteka Należy zauważyć, że JavaScript Facebook dla urządzeń z Androidem działa tylko z aplikacjami na Androida, które zostały zaprojektowane z React Native (strukturą aplikacji stworzoną przez Facebook). Główną zaletą tej struktury jest to, że kody działają w sposób natywny na większości platform.

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

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

Facebook JavaScript Engine zwiększa React Native na Androida – punkt 1 JavaScript Silnik Facebooka dla urządzeń z systemem Android automatycznie przeanalizuje źródło kodu JavaScript po załadowaniu. Spowoduje to utworzenie kodu bajtowego. Ta czynność opóźni rozpoczęcie wykonywania JavaScript

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

Facebook JavaScript Engine zwiększa React Native na Androida – punkt 2 Aby przyspieszyć wykonywanie, wiele powszechnie używanych silników JavaScript może źle kompilować interpretowane kody do kodów maszynowych za pomocą narzędzia JIT (just in time).

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

Facebook JavaScript Engine przyspiesza React Native na Androidzie – punkt 3 Dobre wykorzystanie pamięci ma kluczowe znaczenie w gadżetach mobilnych z Androidem. Gadżety niskiej jakości mają mniej pamięci, zamiana systemów operacyjnych nie jest możliwa, a system operacyjny zabija aplikacje, które wykorzystują dużo miejsca w pamięci. Po zabiciu aplikacji konieczne jest powolne ponowne uruchomienie, co wpływa na działanie tła.

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

Facebook JavaScript Engine przyspiesza React Native na Androidzie – podsumowanie

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.