Facebook JavaScript 引擎 (Hermes) 提升 Android 上的 React Native

已發表: 2019-11-18
Facebook 創建了一個名為 Hermes 的驚人 JavaScript 引擎,以增強 Android 設備上的 React Native 應用程序運行。 適用於 Android 設備的 Facebook 引擎非常適合快速啟動、利用緊密打包的字節碼和提前優化。

引入適用於 Android 設備的新 JavaScript Facebook 工具可以縮短啟動時間、降低 RAM 使用率並縮小應用程序大小。 目前,該工具是 React Native 中的一個可選功能。 大多數 Facebook React Native Android 最新版本產品已經開始使用這個 JavaScript 工具。

目錄顯示
  • 有關適用於 Android 設備的 Facebook JavaScript 引擎的更多信息
  • 新的 Android JavaScript 引擎的特性
  • 如何獲得愛馬仕
    • 反應
  • Android 設備的 Facebook JavaScript 引擎的主要架構決策
    • 1.字節碼預編譯
    • 2.沒有JIT
    • 3、垃圾收集技術
  • 結論

有關適用於 Android 設備的 Facebook JavaScript 引擎的更多信息

AI-人工智能-代碼-腳本-設計-開發

JavaScript Facebook for Android 設備工具的創建是為了增強大型 Android 應用程序的功能。 手機應用程序的大小不斷增加,這很可能會帶來問題,例如當您在空間不足或處理能力不足的小工具中下載 Facebook 應用程序時。 這也是 Facebook 和其他公司為其應用程序開發“精簡版”Android 版本的主要原因。

現在,Android 應用程序創建者可以藉助 JavaScript 工具增強任何應用程序的功能。 此工具降低了下載的大小並增強了啟動功能。 這就是 Facebook 更新打算為其使用 JavaScript Facebook for Android 設備引擎的應用程序做的事情。

Facebook 團隊分析了性能信息,發現 JavaScript Facebook for Android 設備工具對於下載量和一般啟動功能至關重要。 知道這一點後,他們覺得需要優化 JavaScript 在高度受壓的便攜式設備環境中的正常執行方式。 另一方面,桌面環境很好,適用於 Android 的 Facebook 桌面版功能非常出色。

適用於 Android 設備的 JavaScript Facebook 工具有助於改進 3 個主要功能。 他們是:

  1. TTI(交互時間):這是應用程序啟動到完全加載所需的時間。
  2. 下載的大小。
  3. 內存的使用。
 為您推薦: React Native vs Flutter vs PWA:趨勢移動應用程序框架之戰。

新的 Android JavaScript 引擎的特性

移動應用程序應用程序營銷開發

  • 工作將在構建時間執行,而不是在人們等待時在小工具上解析和組合 JavaScript。
  • 提前編譯允許更強大的優化。 可以在程序中看到類似的活動並進行重複數據刪除。 JavaScript 代碼字符串將以良好的存儲方式放在一起,而不會產生運行時開銷。
  • 一個很小的 Android APK,可以在內存較少的設備上安裝 Facebook 應用程序或任何其他應用程序。
  • 字節碼可能會被內存映射,並根據需要越來越多地從閃存中加載。
  • 虛擬地址區域在需要時以塊的形式分配。 這避免了確定堆大小的需要,並且還最大限度地減少了開銷。
  • 使用 Hermes 實現 JavaScript 的標準,目標是 ECMAScript2015,也稱為 ES6。 在 React Native 應用程序中不常應用的 JavaScript 功能已被刪除。
除此之外,適用於三星設備的 Facebook 應用程序還開放了 Hermes 與 React Native 集成的源代碼。 這意味著 Android 開發人員將立即能夠使用 Hermes。

如何獲得愛馬仕

問自己三個問題來評估結果

適用於 Android 設備的 JavaScript Facebook 引擎可供下載。 你不能從 Facebook 下載,目前,它可以在 GitHub 上獲得。 React Native 網站上提供了有關如何使用它的指南。

反應

React-JavaScript-庫 請務必注意,用於 Android 設備引擎的 JavaScript Facebook 僅適用於使用 React Native(Facebook 創建的應用程序結構)設計的 Android 應用程序。 這種結構的主要賣點是代碼在大多數平台上以本機方式運行。

但是 React Native 有一些缺點,這就是為什麼大多數人不喜歡它的原因。 例如:在線遊戲應用程序和其他 Android 應用程序功能需要本地代碼,例如當它們需要備份相機和傳感器之間的集成時。 此外,Android 開發人員總是需要設計橋樑以插入結構和本機代碼之間的空間。 這也是Airbnb決定退出的原因。

但 JavaScript Facebook for Android 設備引擎可能是 Facebook 為 React Native 帶來更多活力並說服更多人接受它的一種手段。

考慮到 JavaScript Facebook for Android 設備引擎只專注於應用程序,Facebook 透露他們不打算將其與服務器或搜索引擎集成。

JavaScript Facebook for Android 設備引擎是來自 Facebook 的最新開源項目。 目前更多的 Android 項目包括:

  • Pythia:深度學習框架。
  • DLRM:深度學習模型。
  • Spectrum:一個旨在高效上傳圖片的項目。
 您可能喜歡:編程簡介:Node JS、Laravel、React、Ruby、Vue 和 Python 簡介。

Android 設備的 Facebook JavaScript 引擎的主要架構決策

安卓

移動設備的局限性(例如閃存速度慢和 RAM 容量小)使 Facebook 做出了一些架構決策。 以下是他們實施的事情:

1.字節碼預編譯

Facebook JavaScript 引擎提升 Android 上的 React Native - 第 1 點 Android 設備引擎的 JavaScript Facebook 將在加載時自動解析 JavaScript 的源代碼。 這將創建一個字節代碼。 此活動將延遲 JavaScript 執行的開始

為避免這種情況,Facebook 應用程序安卓設備 JavaScript 引擎使用了在應用程序構建過程中運行的提前編譯器。 這導致更多時間花在字節碼優化上。 這意味著字節碼很小而且更有用。

可以優化整個程序。 這包括去重操作和打包字符串表。

字節碼的構建方式是在運行時將映射到內存並在不需要遍歷整個文件的情況下進行解釋。 閃存改善了大多數中等和劣質移動設備的延遲。 因此,這會在必要時從閃存中加載字節代碼,字節代碼的大小優化帶來了巨大的 TTI 增強。

此外,由於內存只映射為文件讀取和支持,因此不交換的操作系統可能仍會在內存壓力下刪除這些頁面。 這將最大限度地減少內存較少的小工具中的內存不足進程終止。

壓縮後的字節碼比同樣壓縮後的 JavaScript 代碼稍大。 這是因為適用於 Android 設備的 JavaScript Facebook 引擎代碼的大小很小。 適用於 Android 設備的 JavaScript Facebook 引擎降低了 Android 應用程序的大小。

2.沒有JIT

Facebook JavaScript 引擎提升 Android 上的 React Native - 第 2 點 為了加快執行速度,許多常用的 JavaScript 引擎可能無法使用 JIT(及時)工具將解釋代碼編譯為機器代碼。

適用於 Android 設備的 Facebook 應用程序 JavaScript 引擎沒有 JIT 工具,這意味著它在依賴 CPU 的基準測試中表現不佳。 這個決定是全球性的。 整體基準並不代表應用程序的工作負載。

Facebook 甚至對 JIT 進行了各種測試,他們相信在不惡化其主要指標的情況下實現高速絕非易事。 每當應用程序啟動時,JTI 必須首先做好準備,這使得增強 TTI 變得困難,甚至可能損害 TTI。 除此之外,JIT 會增加本機代碼的大小和內存消耗。 這破壞了 Facebook 的主要指標。 這就是為什麼 Facebook Android 決定忽略它,轉而關註解釋器的性能,作為 JavaScript Facebook for Android 設備引擎的最佳權衡。

3、垃圾收集技術

Facebook JavaScript 引擎提升 Android 上的 React Native - 第 3 點 良好的內存使用在 Android 移動設備中至關重要。 低質量的小工具內存較少,無法更換操作系統,操作系統會殺死佔用大量內存空間的應用程序。 殺死應用程序後,需要緩慢重啟並影響後台功能。

在最初的 Facebook Android 測試中,發現虛擬地址空間可能在 32 位設備上的大型應用程序中受到限制。

為了減少引擎使用的內存和虛擬地址空間,Facebook 設計了一個具有以下功能的垃圾收集器。

  • 按需分配:虛擬地址空間在必要時分塊分配。
  • 非連續的:虛擬地址空間應該在一個內存範圍內以消除資源限制。
  • 移動:移動對象意味著內存可能會碎片化,而不必要的塊將被帶回操作系統。
 您可能還喜歡: Angular 與 React:2019 年選擇哪個框架。

結論

Facebook JavaScript 引擎提升了 Android 上的 React Native——結論

適用於 Android 設備的 JavaScript Facebook 項目是 Facebook 團隊正在進行的眾多項目之一。 該團隊還期待創建內存和時間分析方法。 這將使 Android 專家可以輕鬆地增強他們的應用程序。 為 Android 設備引擎測試 JavaScript Facebook 並查看其功能。 與我們分享您的經驗,如果您有任何問題,也可以向我們提問。

 本文由托馬斯·米勒撰寫。 他是一位 Android 技術專家,喜歡向人們介紹最新技術。 Thomas 也喜歡 JavaScript Facebook for Android 設備引擎的想法,並使用過它並且喜歡它的工作方式。 他還在 autoexpertguides.com 上彙編了汽車行業的最佳專家評論。