Facebook JavaScript Engine (Hermes) ช่วยเพิ่ม React Native บน Android
เผยแพร่แล้ว: 2019-11-18การแนะนำเครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android ใหม่สามารถปรับปรุงเวลาเริ่มต้น ลดการใช้ RAM และทำให้แอปพลิเคชั่นมีขนาดเล็กลง ในขณะนี้ เครื่องมือนี้เป็นคุณสมบัติการเลือกใช้งานใน React Native Facebook ส่วนใหญ่ตอบสนองผลิตภัณฑ์เวอร์ชันล่าสุดของ Native Android ได้เริ่มใช้เครื่องมือ JavaScript นี้แล้ว
- ข้อมูลเพิ่มเติมเกี่ยวกับกลไก JavaScript ของ Facebook สำหรับอุปกรณ์ Android
- คุณสมบัติของเอ็นจิ้น Android JavaScript ใหม่
- วิธีการรับ Hermes
- ปฏิกิริยา
- การตัดสินใจทางสถาปัตยกรรมหลักของเอ็นจิ้น Facebook JavaScript สำหรับอุปกรณ์ Android
- 1. โค้ดไบต์ก่อนคอมไพล์
- 2. ไม่มี JIT
- 3. เทคนิคการเก็บขยะ
- บทสรุป
ข้อมูลเพิ่มเติมเกี่ยวกับกลไก JavaScript ของ Facebook สำหรับอุปกรณ์ Android

เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android ถูกสร้างขึ้นเพื่อปรับปรุงการทำงานของแอปพลิเคชัน Android ขนาดใหญ่ แอปพลิเคชั่นโทรศัพท์มีขนาดเพิ่มขึ้นเรื่อย ๆ ซึ่งสามารถสร้างปัญหาได้สูง เช่น เมื่อคุณดาวน์โหลดแอป Facebook ในแกดเจ็ตที่ไม่มีพื้นที่เพียงพอหรือความสามารถในการประมวลผลที่ยอดเยี่ยม นี่เป็นเหตุผลหลักที่ทำให้ Facebook และบริษัทอื่นๆ พัฒนาเวอร์ชัน "lite" สำหรับแอนดรอยด์สำหรับแอปพลิเคชันของตน
ตอนนี้ เป็นไปได้สำหรับผู้สร้างแอปพลิเคชัน Android ที่จะปรับปรุงการทำงานของแอปพลิเคชันใดๆ ผ่านความช่วยเหลือของเครื่องมือ JavaScript เครื่องมือนี้ลดขนาดการดาวน์โหลดและปรับปรุงฟังก์ชันการเริ่มต้น นั่นคือสิ่งที่ Facebook Update ตั้งใจจะทำสำหรับแอปพลิเคชันโดยใช้ JavaScript Facebook สำหรับอุปกรณ์ Android
ทีม Facebook วิเคราะห์ข้อมูลประสิทธิภาพและพบว่าเครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android มีความสำคัญต่อขนาดของการดาวน์โหลดและการทำงานเริ่มต้นทั่วไป เมื่อทราบสิ่งนี้แล้ว พวกเขารู้สึกว่าจำเป็นต้องเพิ่มประสิทธิภาพการทำงานของ JavaScript ตามปกติในสภาพแวดล้อมของอุปกรณ์พกพาที่มีการกดขี่สูง ในทางกลับกันสภาพแวดล้อมเดสก์ท็อปนั้นใช้ได้และเวอร์ชันเดสก์ท็อป Facebook สำหรับ Android นั้นใช้งานได้ดีเยี่ยม
เครื่องมือ JavaScript Facebook สำหรับอุปกรณ์ Android ช่วยในการปรับปรุงคุณสมบัติหลัก 3 ประการ พวกเขาคือ:
- TTI (เวลาที่โต้ตอบ): นี่คือเวลาที่ใช้ในการเปิดแอปพลิเคชันจนถึงเวลาที่โหลดเสร็จ
- ขนาดของการดาวน์โหลด
- การใช้หน่วยความจำ
แนะนำสำหรับคุณ: 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 ถูกลบออกไป
วิธีการรับ Hermes

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

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

เมื่อพิจารณาว่า JavaScript Facebook สำหรับอุปกรณ์ Android นั้นเน้นที่แอพเท่านั้น Facebook เปิดเผยว่าพวกเขาไม่ได้วางแผนที่จะรวมเข้ากับเซิร์ฟเวอร์หรือเครื่องมือค้นหา
JavaScript Facebook สำหรับอุปกรณ์ Android เป็นโครงการโอเพ่นซอร์สใหม่ล่าสุดที่มาจาก Facebook โครงการ Android ในปัจจุบันเพิ่มเติม ได้แก่ :
- Pythia: เฟรมเวิร์กสำหรับการเรียนรู้เชิงลึก
- DLRM: แบบจำลองสำหรับการเรียนรู้เชิงลึก
- สเปกตรัม: โปรเจ็กต์มีจุดมุ่งหมายเพื่อให้กระบวนการอัปโหลดรูปภาพมีประสิทธิภาพ
คุณอาจชอบ: บทนำสู่การเขียนโปรแกรม: A Brief of Node JS, Laravel, React, Ruby, Vue & Python
การตัดสินใจทางสถาปัตยกรรมหลักของเอ็นจิ้น Facebook JavaScript สำหรับอุปกรณ์ Android

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

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

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

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

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