Facebook JavaScriptエンジン(Hermes)がAndroidでReactNativeを強化
公開: 2019-11-18新しいJavaScriptFacebookfor Androidデバイスツールを導入すると、起動時間が長くなり、RAMの使用量が減り、アプリケーションのサイズが小さくなります。 現時点では、このツールはReactNativeのオプトイン機能です。 FacebookのReactNativeAndroidの最新バージョンの製品の大部分は、このJavaScriptツールの使用を開始しています。
- FacebookforAndroidデバイスのJavaScriptエンジンに関する詳細情報
- 新しいAndroidJavaScriptエンジンの機能
- エルメスの入手方法
- React
- Androidデバイス用のFacebookJavaScriptエンジンの主なアーキテクチャ上の決定
- 1.バイトコードの事前コンパイル
- 2.JITなし
- 3.ごみ収集技術
- 結論
FacebookforAndroidデバイスのJavaScriptエンジンに関する詳細情報

JavaScript Facebook for Androidデバイスツールは、大規模なAndroidアプリケーションの機能を強化するために作成されました。 電話アプリケーションはサイズが大きくなり続けており、十分なスペースや優れた処理能力が不足しているガジェットにFacebookアプリをダウンロードする場合など、問題を引き起こす可能性が非常に高くなります。 これは、Facebookや他の企業が自社のアプリケーション用に「ライト」なAndroidバージョンを開発した主な理由でもあります。
これで、Androidアプリケーションの作成者は、JavaScriptツールを使用して任意のアプリケーションの機能を強化できます。 このツールは、ダウンロードのサイズを小さくし、起動機能を強化します。 これは、FacebookアップデートがAndroidデバイスエンジン用のJavaScriptFacebookを使用するアプリケーションに対して行うことを意図していることです。
Facebookチームはパフォーマンス情報を分析し、Androidデバイス用のJavaScript Facebookツールが、ダウンロードのサイズと一般的なスタートアップ機能において重要であることを発見しました。 これを知った彼らは、非常に抑圧されたポータブルデバイス環境でJavaScriptが通常どのように機能するかを最適化する必要があると感じました。 一方、デスクトップ環境は問題なく、Android用のFacebookデスクトップバージョンは優れた機能を発揮します。
JavaScript Facebook for Androidデバイスツールは、3つの主要な機能の改善を支援します。 彼らです:
- TTI(対話する時間):これは、アプリケーションが完全にロードされるまでにアプリケーションを起動するのにかかる時間です。
- ダウンロードのサイズ。
- メモリの利用。
おすすめ: React Native vs Flutter vs PWA:トレンドのモバイルアプリフレームワークの戦い。
新しいAndroidJavaScriptエンジンの機能

- 人が待っている間にJavaScriptをガジェット上で解析してまとめるのではなく、ビルド時に作業が実行されます。
- 事前にコンパイルすることで、より高度な最適化が可能になります。 同様の活動がプログラムで見られ、複製が解除される場合があります。 JavaScriptコード文字列は、実行時のオーバーヘッドなしに、適切に保存された方法でまとめられます。
- 小さなサイズのAndroidAPKにより、メモリの少ないデバイスにFacebookアプリやその他のアプリをインストールできます。
- バイトコードはメモリによってマップされ、必要に応じてフラッシュメモリからロードされる可能性があります。
- 仮想アドレス領域は、必要なときにいつでもチャンクで割り当てられます。 これにより、ヒープのサイズを決定する必要がなくなり、オーバーヘッドも最小限に抑えられます。
- ES6とも呼ばれるECMAScript2015をターゲットとするHermesを使用してJavaScriptの標準を実装します。 ReactNativeアプリケーションではあまり適用されないJavaScriptの機能が削除されました。
エルメスの入手方法

Androidデバイスエンジン用のJavaScriptFacebookがダウンロードできます。 Facebookからダウンロードすることはできません。現在、GitHubで入手できます。 使用方法のガイドラインは、ReactNativeサイトで入手できます。
React

しかし、React Nativeにはいくつかの欠点があり、それがほとんどの人がそれを好まない理由です。 例:オンラインゲームアプリやその他のAndroidアプリの機能には、カメラとセンサーの統合をバックアップする必要がある場合など、ネイティブコードが必要です。 また、Android開発者は、構造とネイティブコードの間のスペースを埋めるために、常にブリッジを設計する必要があります。 これがAirbnbが辞めることにした理由でもあります。
しかし、Androidデバイスエンジン用のJavaScript Facebookは、FacebookがReact Nativeにより多くの生命をもたらし、より多くの人々にそれを受け入れるように説得する手段になる可能性があります。

Androidデバイスエンジン用のJavaScriptFacebookはアプリのみに焦点を当てていることを考えると、Facebookは、サーバーや検索エンジンとの統合を計画していないことを明らかにしました。
JavaScript Facebook for Androidデバイスエンジンは、Facebookが提供する最新のオープンソースプロジェクトです。 現在のAndroidプロジェクトは次のとおりです。
- Pythia:ディープラーニングのフレームワーク。
- DLRM:ディープラーニングのモデル。
- スペクトラム:写真を効率的にアップロードするプロセスを作成することを目的としたプロジェクト。
あなたが好きかもしれません:プログラミング入門:ノードJS、Laravel、React、Ruby、Vue&Pythonの概要。
Androidデバイス用のFacebookJavaScriptエンジンの主なアーキテクチャ上の決定

遅いフラッシュや少量のRAMなどのモバイルガジェットの制限により、Facebookはいくつかのアーキテクチャ上の決定を下しました。 以下は彼らが実装したものです:
1.バイトコードの事前コンパイル

これを回避するために、FacebookアプリのAndroidデバイスのJavaScriptエンジンは、アプリ構築プロセスで実行される事前コンパイラーを利用していました。 これにより、バイトコードの最適化により多くの時間が費やされます。 これは、バイトコードが小さくて便利であることを意味します。
プログラム全体の最適化を行うことができます。 これには、操作の重複排除と文字列テーブルのパッキングが含まれます。
バイトコードは、実行時にメモリにマップされ、ファイル全体を調べることなく解釈されるように構築されています。 フラッシュメモリは、ほとんどの中品質および低品質のモバイルガジェットの遅延を改善します。 したがって、これは必要に応じてフラッシュからバイトコードをロードし、サイズに合わせてバイトコードを最適化すると、TTIが大幅に強化されます。
さらに、メモリはファイルによって読み取られてサポートされるだけでマップされるため、スワップしないOSは、メモリ不足下でそれらのページを削除する可能性があります。 これにより、メモリの少ないガジェットでのメモリ不足プロセスの強制終了が最小限に抑えられます。
圧縮されたバイトコードは、同じく圧縮されたJavaScriptコードよりもわずかに大きくなります。 これは、Androidデバイス用のJavaScriptFacebookエンジンコードのサイズが小さいためです。 JavaScript Facebook for Androidデバイスエンジンは、Androidアプリのサイズを縮小します。
2.JITなし

Androidデバイス用のFacebookアプリJavaScriptエンジンにはJITツールがありません。これは、CPUに依存するベンチマークではほとんどの場合うまく機能しないことを意味します。 その決定はグローバルでした。 全体としてのベンチマークは、アプリケーションのワークロードを表すものではありません。
FacebookはJITを使ってさまざまなテストを行っており、主要な指標を悪化させずに高速を達成することは決して容易ではないと確信しています。 JTIは、アプリが起動するたびに最初に準備する必要があり、TTIの強化が困難になり、TTIに害を及ぼす可能性さえあります。 それに加えて、JITはネイティブコードのサイズとメモリの消費に貢献します。 これはFacebookの主要な指標を台無しにします。 これが、Facebook Androidがそれを無視することを決定し、代わりに、Androidデバイスエンジン用のJavaScriptFacebookの最良のトレードオフとしてインタープリターのパフォーマンスに注意を払った理由です。
3.ごみ収集技術

Facebook Androidの最初のテスト中に、32ビットガジェットの大きなアプリでは仮想アドレス空間が制限されている可能性があることがわかりました。
エンジンが使用するメモリと仮想アドレス空間を削減するために、Facebookは以下の機能を備えた廃棄物コレクターを設計しました。
- オンデマンドでの割り当て:仮想アドレス空間は、必要に応じてチャンクで割り当てられます。
- 非連続:リソース制限を排除するために、仮想アドレス空間は1つのメモリ範囲内にある必要があります。
- 移動:オブジェクトの移動は、不要な塊がOSに戻されるときに、メモリが断片化する可能性があることを意味します。
あなたも好きかもしれません: Angular vs React:2019年に選択するフレームワーク。
結論

JavaScript Facebook for Androidデバイスプロジェクトは、Facebookチームが取り組んでいる多くのプロジェクトの1つです。 チームはまた、記憶と時間の分析方法を作成することを楽しみにしています。 これにより、Androidの専門家がアプリケーションを簡単に拡張できるようになります。 Androidデバイスエンジン用のJavaScriptFacebookをテストし、その機能を確認します。 私たちとあなたの経験を共有してください、そしてあなたが何かあれば私たちに質問することもできます。
この記事はThomasMillerによって書かれました。 彼はAndroidテクノロジーの専門家であり、最新のテクノロジーについて人々に知らせるのが大好きです。 トーマスはまた、Androidデバイスエンジン用のJavaScript Facebookのアイデアを気に入っており、それを使用して、それがどのように機能するかを気に入っています。 彼はまた、autoexpertguides.comで自動車セクターの最高の専門家レビューをまとめています。
