Facebook JavaScript エンジン (Hermes) が Android 上の React Native を強化
公開: 2019-11-18新しい JavaScript Facebook for Android デバイス ツールを導入すると、起動時間が短縮され、RAM の使用量が削減され、アプリケーションのサイズが小さくなります。 現時点では、このツールは React Native のオプトイン機能です。 Facebook React Native Android 最新バージョン製品の大部分は、この JavaScript ツールの使用を開始しています。
- Android デバイス用 Facebook JavaScript エンジンの詳細情報
- 新しい Android JavaScript エンジンの機能
- エルメスの入手方法
- 反応する
- Android デバイス用 Facebook JavaScript エンジンの主なアーキテクチャ上の決定
- 1. バイトコードのプリコンパイル
- 2. JIT なし
- 3. 廃棄物回収技術
- 結論
Android デバイス用 Facebook JavaScript エンジンの詳細情報
Android デバイス用 JavaScript Facebook ツールは、大規模な Android アプリケーションの機能を強化するために作成されました。 電話アプリケーションのサイズは増加し続けており、十分なスペースや優れた処理能力が不足しているガジェットに Facebook アプリをダウンロードする場合など、問題が発生する可能性が非常に高くなります。 これは、Facebook や他の企業がアプリケーション用の「ライト」Android バージョンを開発した主な理由でもあります。
Android アプリケーションの作成者は、JavaScript ツールを利用してアプリケーションの機能を強化できるようになりました。 このツールは、ダウンロードのサイズを削減し、起動機能を強化します。 これは、Facebook アップデートが Android デバイス用 JavaScript Facebook エンジンを使用してアプリケーションに対して行うことを意図していることです。
Facebook チームはパフォーマンス情報を分析し、Android デバイス用 JavaScript Facebook ツールがダウンロードのサイズと一般的な起動機能に重要であることを発見しました。 このことを知った彼らは、非常に抑圧されたポータブル デバイス環境で JavaScript が通常どのように動作するかを最適化する必要があると感じました。 一方、デスクトップ環境は良好で、Android 用 Facebook デスクトップ バージョンは非常に優れた機能を発揮します。
Android デバイス用 JavaScript Facebook ツールは、3 つの主要な機能の改善に役立ちます。 彼らです:
- TTI (対話時間):アプリケーションを起動して完全にロードされるまでにかかる時間です。
- ダウンロードのサイズ。
- メモリの活用。
あなたにおすすめ: React Native vs Flutter vs PWA: トレンドのモバイル アプリ フレームワークの戦い。
新しい Android JavaScript エンジンの機能
- 作業は、人が待っている間にガジェット上で JavaScript を解析してまとめるのではなく、ビルド時に実行されます。
- 事前コンパイルにより、より強化された最適化が可能になります。 同様のアクティビティがプログラム内で確認され、重複が排除される場合があります。 JavaScript コード文字列は、実行時のオーバーヘッドなしで適切に保存される方法でまとめられます。
- 小さなサイズの Android APK により、Facebook アプリやその他のアプリをメモリの少ないデバイスにインストールできるようになります。
- バイトコードはメモリによってマッピングされ、必要に応じてフラッシュ メモリからロードされる場合があります。
- 仮想アドレス領域は、必要に応じてチャンク単位で割り当てられます。 これにより、ヒープのサイズを決定する必要がなくなり、オーバーヘッドも最小限に抑えられます。
- ES6 とも呼ばれる ECMAScript2015 を対象とした、Hermes を使用した JavaScript の標準の実装。 React Native アプリケーションではあまり適用されない JavaScript の機能が削除されました。
エルメスの入手方法
Android デバイス用 JavaScript Facebook エンジンはダウンロードできます。 Facebook からダウンロードすることはできません。今のところ、GitHub で入手できます。 使用方法に関するガイドラインは React Native サイトで入手できます。
反応する
しかし、React Native にはいくつかの欠点があり、それがほとんどの人に好まれない理由です。 例: オンライン ゲーム アプリやその他の Android アプリの機能には、カメラとセンサーの統合をバックアップする必要がある場合など、ネイティブ コードが必要です。 また、Android 開発者は、構造とネイティブ コードの間のスペースを埋めるために、常にブリッジを設計する必要があります。 Airbnbが撤退を決めた理由もこれだった。
しかし、Android デバイス用 JavaScript Facebook エンジンは、Facebook が React Native にさらなる命を吹き込み、より多くの人にそれを受け入れるよう説得するための手段となる可能性があります。

Android デバイス用 JavaScript Facebook エンジンがアプリのみに焦点を当てていることを考慮して、Facebook はサーバーや検索エンジンと統合する計画がないことを明らかにしました。
Android デバイス用 JavaScript Facebook エンジンは、Facebook が提供する最新のオープンソース プロジェクトです。 現在の Android プロジェクトには次のものがあります。
- Pythia:深層学習用のフレームワーク。
- DLRM:ディープラーニングのモデル。
- Spectrum:写真をアップロードするプロセスを効率的に行うことを目的としたプロジェクト。
あなたは好きかもしれません:プログラミング入門: Node JS、Laravel、React、Ruby、Vue、Python の概要。
Android デバイス用 Facebook JavaScript エンジンの主なアーキテクチャ上の決定
遅いフラッシュや少ない RAM 量などのモバイル ガジェットの制限により、Facebook はいくつかのアーキテクチャ上の決定を下しました。 彼らが実装したものは次のとおりです。
1. バイトコードのプリコンパイル
これを回避するために、Facebook アプリの Android デバイスの JavaScript エンジンは、アプリ構築プロセスの下で実行される事前コンパイラーを利用しました。 その結果、バイトコードの最適化に費やす時間が長くなります。 これは、バイト コードが小さく、より有用であることを意味します。
プログラム全体の最適化を行うことができます。 これには、操作の重複排除と文字列テーブルのパッキングが含まれます。
バイト コードは、実行時にメモリ上にマップされ、ファイル全体を調べなくても解釈される方法で構築されます。 フラッシュ メモリにより、ほとんどの中品質および低品質のモバイル ガジェットの遅延が改善されます。 したがって、これにより、必要に応じてフラッシュからバイト コードがロードされ、バイト コードのサイズが最適化されることで、TTI が大幅に向上します。
さらに、メモリは読み取り専用にマップされ、ファイルによってサポートされるため、スワップを行わない OS はメモリ負荷がかかると依然としてそれらのページを削除する可能性があります。 これにより、メモリの少ないガジェットでのメモリ不足によるプロセスの強制終了が最小限に抑えられます。
圧縮されたバイト コードは、同じく圧縮された JavaScript コードよりもわずかに大きくなります。 これは、Android デバイス用 JavaScript Facebook エンジン コードのサイズが小さいためです。 Android デバイス用 JavaScript Facebook エンジンは、Android アプリのサイズを小さくします。
2. JIT なし
Android デバイス用 Facebook アプリ JavaScript エンジンには JIT ツールがないため、CPU に依存するベンチマークではほとんどパフォーマンスが良くありません。 その決定は世界的なものでした。 全体的なベンチマークは、アプリケーションのワークロードを表すものではありません。
Facebook は JIT を使用してさまざまなテストを実施しましたが、主要な指標を悪化させることなく高速化を実現するのは決して簡単ではないと確信しています。 JTI は、アプリが起動されるたびに最初に準備をする必要があるため、TTI を向上させることが困難になり、TTI に悪影響を与える可能性さえあります。 それに加えて、JIT はネイティブ コードのサイズとメモリの消費にも影響します。 これにより、Facebook の主要な指標が台無しになります。 これが、Facebook Android がこれを無視することを決定し、代わりに JavaScript Facebook for Android デバイス エンジンとの最良のトレードオフとしてインタープリタのパフォーマンスに注意を払った理由です。
3. 廃棄物回収技術
Facebook の最初の Android テスト中に、32 ビット ガジェット上の大きなアプリでは仮想アドレス空間が制限される可能性があることが判明しました。
エンジンによって使用されるメモリと仮想アドレス空間を削減するために、Facebook は以下の機能を備えたウェイスト コレクターを設計しました。
- オンデマンドの割り当て:仮想アドレス空間は、必要に応じてチャンク単位で割り当てられます。
- 不連続:リソース制限をなくすために、仮想アドレス空間は 1 つのメモリ範囲内にある必要があります。
- 移動:オブジェクトを移動すると、不要な塊が OS に戻される間にメモリが断片化される可能性があります。
こちらもお勧めです: Angular vs React: 2019 年に選択すべきフレームワーク。
結論
Android デバイス向け JavaScript Facebook プロジェクトは、Facebook チームが取り組んでいる多くのプロジェクトの 1 つです。 チームは、記憶と時間を分析する方法も作成することを楽しみにしています。 これにより、Android エキスパートはアプリケーションを簡単に強化できるようになります。 Android デバイス用 JavaScript Facebook エンジンをテストし、その機能を確認します。 あなたの経験を私たちと共有してください。また、何かあれば質問してください。
この記事はトーマス・ミラーによって書かれています。 彼は Android テクノロジーの専門家であり、最新のテクノロジーについて人々に知らせることが大好きです。 Thomas は、Android デバイス用 JavaScript Facebook エンジンのアイデアも気に入っており、これを使用し、その動作方法を気に入っています。 彼はまた、autoexpertguides.com で自動車分野に関する最良の専門家のレビューをまとめています。