Facebook JavaScript Engine (Hermes) เพิ่ม React Native บน Android

เผยแพร่แล้ว: 2019-11-18
Facebook ได้สร้างเครื่องมือ JavaScript ที่น่าทึ่งชื่อ Hermes เพื่อปรับปรุงการทำงานของแอปพลิเคชัน React Native บนอุปกรณ์ Android เครื่องมือ Facebook สำหรับอุปกรณ์ Android นั้นดีสำหรับการเริ่มต้นอย่างรวดเร็ว ใช้ประโยชน์จาก bytecode ที่บรรจุไว้อย่างใกล้ชิดและปรับแต่งล่วงหน้า

การแนะนำเครื่องมือ JavaScript ใหม่ Facebook สำหรับอุปกรณ์ Android สามารถเพิ่มเวลาเริ่มต้น ลดการใช้ RAM และทำให้ขนาดแอปพลิเคชันน้อยลง ในขณะนี้ เครื่องมือนี้เป็นคุณสมบัติการเลือกรับใน React Native Facebook ส่วนใหญ่ตอบสนองต่อผลิตภัณฑ์เวอร์ชันล่าสุดของ Native Android ได้เริ่มใช้เครื่องมือ JavaScript นี้แล้ว

แสดง สารบัญ
  • ข้อมูลเพิ่มเติมเกี่ยวกับกลไก JavaScript สำหรับอุปกรณ์ Android ของ Facebook
  • คุณสมบัติของเอ็นจิ้น Android JavaScript ใหม่
  • วิธีรับเฮอร์มีส
    • ตอบสนอง
  • การตัดสินใจทางสถาปัตยกรรมหลักของเอ็นจิ้น Facebook JavaScript สำหรับอุปกรณ์ Android
    • 1. การรวบรวมรหัสไบต์ล่วงหน้า
    • 2. ไม่มี JIT
    • 3. เทคนิคการเก็บขยะ
  • บทสรุป

ข้อมูลเพิ่มเติมเกี่ยวกับกลไก JavaScript สำหรับอุปกรณ์ Android ของ Facebook

AI-ปัญญาประดิษฐ์-โค้ด-สคริปต์-การออกแบบ-การพัฒนา

เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android ถูกสร้างขึ้นเพื่อปรับปรุงการทำงานของแอปพลิเคชัน Android ขนาดใหญ่ แอปพลิเคชันโทรศัพท์มีขนาดเพิ่มขึ้นเรื่อย ๆ ซึ่งมีความสามารถสูงในการทำให้เกิดปัญหา เช่น เมื่อคุณดาวน์โหลดแอป Facebook ในแกดเจ็ตที่ไม่มีพื้นที่เพียงพอหรือความสามารถในการประมวลผลที่ดี นี่เป็นเหตุผลหลักที่ทำให้ Facebook และบริษัทอื่นๆ พัฒนา Android เวอร์ชัน "lite" สำหรับแอปพลิเคชันของตน

ตอนนี้เป็นไปได้สำหรับผู้สร้างแอปพลิเคชัน Android เพื่อปรับปรุงการทำงานของแอปพลิเคชันใด ๆ ผ่านความช่วยเหลือของเครื่องมือ JavaScript เครื่องมือนี้ลดขนาดของการดาวน์โหลดและปรับปรุงฟังก์ชันเริ่มต้น นั่นคือสิ่งที่การอัปเดต Facebook ตั้งใจที่จะทำสำหรับแอปพลิเคชันโดยใช้เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android

ทีมงาน Facebook วิเคราะห์ข้อมูลประสิทธิภาพและพบว่าเครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android มีความสำคัญต่อขนาดของการดาวน์โหลดและการทำงานเริ่มต้นทั่วไป เมื่อรู้เรื่องนี้แล้ว พวกเขารู้สึกว่าจำเป็นต้องเพิ่มประสิทธิภาพการทำงานของ JavaScript ในสภาพแวดล้อมของอุปกรณ์พกพาที่มีความกดดันสูง ในทางกลับกัน สภาพแวดล้อมเดสก์ท็อปนั้นใช้ได้ และเวอร์ชันเดสก์ท็อปของ Facebook สำหรับ Android ก็ใช้งานได้อย่างดีเยี่ยม

เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android ช่วยในการปรับปรุงคุณสมบัติหลัก 3 ประการ พวกเขาคือ:

  1. TTI (เวลาในการโต้ตอบ): นี่คือเวลาที่ใช้ในการเปิดแอปพลิเคชันจนถึงช่วงเวลาที่โหลดเสร็จสมบูรณ์
  2. ขนาดของการดาวน์โหลด
  3. การใช้งานหน่วยความจำ
 แนะนำสำหรับคุณ: React Native vs Flutter vs PWA: Battle of Trending Mobile App Frameworks

คุณสมบัติของเอ็นจิ้น Android JavaScript ใหม่

มือถือ-แอพ-แอพพลิเคชั่น-การตลาด-การพัฒนา

  • งานจะดำเนินการในเวลาสร้างแทนการแยกวิเคราะห์และรวบรวม JavaScript บนแกดเจ็ตในขณะที่คนกำลังรอ
  • การคอมไพล์ล่วงหน้าก่อนกำหนดช่วยให้สามารถเพิ่มประสิทธิภาพได้มากขึ้น อาจเห็นกิจกรรมที่คล้ายกันในโปรแกรมและยกเลิกการทำซ้ำ สตริงรหัส JavaScript จะรวบรวมในลักษณะที่เก็บไว้อย่างดีโดยไม่มีค่าใช้จ่ายรันไทม์
  • Android APK ขนาดเล็กทำให้สามารถติดตั้งแอพ Facebook หรือแอพอื่น ๆ บนอุปกรณ์ที่มีหน่วยความจำน้อย
  • Bytecode อาจได้รับการแมปโดยหน่วยความจำและโหลดจากหน่วยความจำแฟลชมากขึ้นเรื่อยๆ ตามความจำเป็น
  • พื้นที่ที่อยู่เสมือนถูกกำหนดให้เป็นส่วนๆ เมื่อใดก็ตามที่จำเป็น สิ่งนี้ทำให้ไม่จำเป็นต้องกำหนดขนาดของฮีปและยังช่วยลดค่าใช้จ่ายอีกด้วย
  • การใช้มาตรฐานของ JavaScript โดยใช้ Hermes ที่กำหนดเป้าหมาย ECMAScript2015 ซึ่งเรียกอีกอย่างว่า ES6 ฟีเจอร์ของ JavaScript ที่ไม่ได้ใช้บ่อยในแอปพลิเคชัน React Native ถูกลบออก
นอกจากนั้น แอพ Facebook สำหรับอุปกรณ์ Samsung ยังเปิดแหล่งที่มาสำหรับการรวม Hermes กับ React Native นั่นหมายความว่านักพัฒนา Android จะสามารถใช้ Hermes ได้ทันที

วิธีรับเฮอร์มีส

ถามตัวเองสามคำถามเพื่อประเมินผลลัพธ์

เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android พร้อมให้ดาวน์โหลดแล้ว คุณไม่สามารถดาวน์โหลดจาก Facebook ได้ สำหรับตอนนี้สามารถดาวน์โหลดได้ที่ GitHub แนวทางการใช้งานมีอยู่ในไซต์ React Native

ตอบสนอง

React-JavaScript-Library สิ่งสำคัญคือต้องสังเกตว่า JavaScript Facebook สำหรับอุปกรณ์ Android ทำงานเฉพาะกับแอปพลิเคชัน Android ที่ได้รับการออกแบบด้วย React Native (โครงสร้างแอปที่สร้างโดย Facebook) จุดขายหลักของโครงสร้างนี้คือรหัสทำงานในลักษณะดั้งเดิมบนแพลตฟอร์มส่วนใหญ่

แต่ React Native มีข้อเสียเล็กน้อยซึ่งเป็นสาเหตุที่คนส่วนใหญ่ไม่ชอบ ตัวอย่างเช่น: แอปเกมออนไลน์และฟังก์ชันแอป Android อื่นๆ ต้องมีโค้ดเนทีฟ เช่น เมื่อต้องสำรองข้อมูลการผสานรวมระหว่างกล้องและเซ็นเซอร์ นอกจากนี้ นักพัฒนา Android จำเป็นต้องออกแบบบริดจ์เสมอเพื่อเสียบช่องว่างระหว่างโครงสร้างและโค้ดเนทีฟ นี่เป็นเหตุผลที่ Airbnb ตัดสินใจเลิกใช้

แต่เอ็นจิ้น JavaScript Facebook สำหรับอุปกรณ์ Android อาจเป็นวิธีการของ Facebook ในการทำให้ React Native มีชีวิตมากขึ้นและโน้มน้าวให้ผู้คนยอมรับมากขึ้น

เมื่อพิจารณาว่าเครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android มุ่งเน้นไปที่แอพเท่านั้น Facebook เปิดเผยว่าพวกเขาไม่ได้วางแผนที่จะรวมเข้ากับเซิร์ฟเวอร์หรือเครื่องมือค้นหา

JavaScript Facebook สำหรับอุปกรณ์ Android เป็นโครงการโอเพ่นซอร์สใหม่ล่าสุดที่มาจาก Facebook โครงการ Android ในปัจจุบัน ได้แก่ :

  • Pythia: กรอบการเรียนรู้เชิงลึก
  • DLRM: แบบจำลองสำหรับการเรียนรู้เชิงลึก
  • สเปกตรัม: โครงการหมายถึงการทำให้กระบวนการอัปโหลดรูปภาพมีประสิทธิภาพ
 คุณอาจชอบ: Introduction to Programming: A Brief of Node JS, Laravel, React, Ruby, Vue & Python.

การตัดสินใจทางสถาปัตยกรรมหลักของเอ็นจิ้น Facebook JavaScript สำหรับอุปกรณ์ Android

แอนดรอยด์

ข้อจำกัดของอุปกรณ์เคลื่อนที่ เช่น แฟลชช้าและจำนวน RAM น้อยทำให้ Facebook ตัดสินใจเกี่ยวกับสถาปัตยกรรมบางอย่าง ด้านล่างนี้คือสิ่งที่พวกเขานำมาใช้:

1. การรวบรวมรหัสไบต์ล่วงหน้า

Facebook JavaScript Engine เพิ่ม React Native บน Android - จุดที่ 1 เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android จะแยกวิเคราะห์แหล่งที่มาของ JavaScript โดยอัตโนมัติเมื่อโหลด สิ่งนี้จะสร้างรหัสไบต์ กิจกรรมนี้จะทำให้การเริ่มต้นการทำงานของ JavaScript ล่าช้า

เพื่อหลีกเลี่ยงปัญหานี้ เอ็นจิ้น JavaScript ของอุปกรณ์ Android ของแอพ Facebook ใช้คอมไพเลอร์ล่วงหน้าที่ทำงานภายใต้กระบวนการสร้างแอพ ส่งผลให้มีเวลามากขึ้นในการเพิ่มประสิทธิภาพ bytecode นี่หมายความว่ารหัสไบต์มีขนาดเล็กและมีประโยชน์มากกว่า

การเพิ่มประสิทธิภาพทั้งโปรแกรมสามารถเกิดขึ้นได้ ซึ่งรวมถึงการขจัดความซ้ำซ้อนของการดำเนินการและการบรรจุตารางสตริง

รหัสไบต์ถูกสร้างขึ้นในลักษณะที่ระหว่างรันไทม์ จะถูกแมปบนหน่วยความจำและถูกตีความโดยไม่ต้องผ่านทั้งไฟล์ หน่วยความจำแฟลชช่วยปรับปรุงเวลาแฝงบนอุปกรณ์พกพาคุณภาพปานกลางและคุณภาพต่ำส่วนใหญ่ ดังนั้นสิ่งนี้จะโหลดรหัสไบต์จากแฟลชเมื่อจำเป็น และการเพิ่มประสิทธิภาพของรหัสไบต์สำหรับขนาดนำมาซึ่งการปรับปรุง TTI ที่ยอดเยี่ยม

นอกจากนี้ เนื่องจากหน่วยความจำถูกแมปเฉพาะไฟล์ที่อ่านและรองรับเท่านั้น ระบบปฏิบัติการที่ไม่ได้สลับอาจยังคงลบหน้าเหล่านั้นภายใต้ความกดดันของหน่วยความจำ วิธีนี้จะลดการฆ่ากระบวนการหน่วยความจำในโปรแกรมเบ็ดเตล็ดที่มีหน่วยความจำน้อย

รหัสไบต์ที่ถูกบีบอัดจะใหญ่กว่าโค้ด JavaScript ซึ่งถูกบีบอัดเล็กน้อย ที่เป็นเช่นนี้เนื่องจากโค้ดเอ็นจิ้น JavaScript Facebook สำหรับอุปกรณ์ Android มีขนาดเล็ก เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android ลดขนาดของแอพ Android

2. ไม่มี JIT

Facebook JavaScript Engine เพิ่ม React Native บน Android - จุดที่ 2 เพื่อให้การดำเนินการเร็วขึ้น เอ็นจิ้น JavaScript ที่ใช้กันทั่วไปจำนวนมากอาจคอมไพล์โค้ดที่ตีความแล้วเป็นโค้ดเครื่องได้ไม่ดีโดยใช้เครื่องมือ JIT (ทันเวลาพอดี)

แอพ Facebook สำหรับอุปกรณ์ Android เครื่องมือ JavaScript ไม่มีเครื่องมือ JIT ที่บ่งบอกว่าทำงานได้ไม่ดีในเกณฑ์มาตรฐานที่ใช้ CPU เป็นส่วนใหญ่ การตัดสินใจนั้นเป็นไปทั่วโลก เกณฑ์มาตรฐานโดยรวมไม่ได้แสดงถึงปริมาณงานของแอปพลิเคชัน

Facebook ยังได้ทำการทดสอบต่างๆ กับ JIT และพวกเขาเชื่อมั่นว่าจะไม่ง่ายเลยที่จะบรรลุความเร็วสูงโดยไม่ทำให้เมตริกหลักแย่ลง JTI ต้องเตรียมตัวก่อนทุกครั้งที่เปิดแอปซึ่งทำให้ยากต่อการปรับปรุง TTI ซึ่งอาจส่งผลเสียต่อ TTI ได้ นอกจากนั้น JIT ยังสนับสนุนขนาดของรหัสเนทีฟและการใช้หน่วยความจำ สิ่งนี้ทำลายเมตริกหลักของ Facebook นี่คือเหตุผลที่ Facebook Android ตัดสินใจที่จะเพิกเฉยและให้ความสนใจกับประสิทธิภาพของล่ามแทนซึ่งเป็นการแลกเปลี่ยนที่ดีที่สุดสำหรับเครื่องมือจาวาสคริปต์ Facebook สำหรับอุปกรณ์ Android

3. เทคนิคการเก็บขยะ

Facebook JavaScript Engine เพิ่ม React Native บน Android - จุดที่ 3 การใช้หน่วยความจำที่ดีเป็นสิ่งสำคัญในแกดเจ็ตมือถือ Android แกดเจ็ตคุณภาพต่ำมีหน่วยความจำน้อย ไม่สามารถสลับระบบปฏิบัติการได้ และระบบปฏิบัติการจะฆ่าแอปที่ใช้พื้นที่หน่วยความจำจำนวนมาก เมื่อหยุดใช้งานแอปพลิเคชัน จำเป็นต้องเริ่มระบบใหม่อย่างช้าๆ และการทำงานของพื้นหลังจะได้รับผลกระทบ

ในระหว่างการทดสอบ Facebook Android เบื้องต้น พบว่าพื้นที่ที่อยู่เสมือนอาจถูกจำกัดในแอพขนาดใหญ่บนอุปกรณ์ 32 บิต

เพื่อลดหน่วยความจำและพื้นที่ที่อยู่เสมือนที่เครื่องยนต์ใช้ Facebook ได้ออกแบบตัวเก็บขยะด้วยคุณสมบัติด้านล่าง

  • การจัดสรรตามต้องการ: พื้นที่ที่อยู่เสมือนถูกกำหนดเป็นกลุ่มเมื่อจำเป็น
  • ไม่ติดกัน: พื้นที่ที่อยู่เสมือนควรอยู่ในช่วงหน่วยความจำเดียวเพื่อลดขีดจำกัดของทรัพยากร
  • การย้าย: การย้ายวัตถุหมายความว่าหน่วยความจำอาจถูกแยกส่วนในขณะที่ก้อนที่ไม่จำเป็นถูกนำกลับไปที่ระบบปฏิบัติการ
 คุณอาจชอบ: Angular vs React: Framework ใดให้เลือกในปี 2019

บทสรุป

Facebook JavaScript Engine เพิ่ม React Native บน Android - สรุป

โครงการ JavaScript Facebook สำหรับอุปกรณ์ Android เป็นหนึ่งในหลายโครงการที่ทีมงาน Facebook กำลังดำเนินการ ทีมงานกำลังรอคอยที่จะสร้างวิธีวิเคราะห์หน่วยความจำและเวลาด้วย สิ่งนี้จะทำให้ผู้เชี่ยวชาญ Android สามารถปรับปรุงแอปพลิเคชันของตนได้ง่าย ทดสอบเครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android และดูการทำงานของมัน แบ่งปันประสบการณ์ของคุณกับเราและคุณสามารถถามคำถามเราได้หากคุณมี

 บทความนี้เขียนโดย Thomas Miller เขาเป็นผู้เชี่ยวชาญด้านเทคโนโลยี Android ที่ชอบแจ้งให้ผู้คนทราบเกี่ยวกับเทคโนโลยีล่าสุด โทมัสชอบแนวคิดของ JavaScript Facebook สำหรับอุปกรณ์ Android และได้ใช้มันและชอบวิธีการทำงาน นอกจากนี้ เขายังรวบรวมบทวิจารณ์จากผู้เชี่ยวชาญที่ดีที่สุดสำหรับภาคยานยนต์ที่ autoexpertguides.com