Facebook JavaScript 엔진(Hermes), Android에서 React Native 향상
게시 됨: 2019-11-18Android 기기용 새로운 JavaScript Facebook 도구를 도입하면 시작 시간을 단축하고 RAM 사용량을 줄이며 애플리케이션 크기를 줄일 수 있습니다. 현재 이 도구는 React Native의 옵트인 기능입니다. 대부분의 Facebook 반응 Native Android 최신 버전 제품은 이 JavaScript 도구를 사용하기 시작했습니다.
- Android 기기용 Facebook JavaScript 엔진에 대한 추가 정보
- 새로운 Android JavaScript 엔진의 기능
- 에르메스를 얻는 방법
- 반응
- Android 기기용 Facebook JavaScript 엔진의 주요 아키텍처 결정
- 1. 바이트 코드 사전 컴파일
- 2. JIT 없음
- 3. 폐기물 수집 기술
- 결론
Android 기기용 Facebook JavaScript 엔진에 대한 추가 정보

JavaScript Android 기기용 Facebook 도구는 대규모 Android 애플리케이션의 기능을 향상시키기 위해 만들어졌습니다. 전화 애플리케이션은 공간이 부족하거나 처리 능력이 뛰어난 가제트에서 Facebook 앱을 다운로드할 때와 같이 문제를 일으킬 수 있는 크기가 계속 증가합니다. 이것은 Facebook과 다른 회사들이 자신들의 애플리케이션을 위한 "라이트" Android 버전을 개발한 주된 이유이기도 합니다.
이제 Android 애플리케이션 작성자는 JavaScript 도구를 통해 모든 애플리케이션의 기능을 향상할 수 있습니다. 이 도구는 다운로드 크기를 줄이고 시작 기능을 향상시킵니다. 이것이 바로 Facebook 업데이트가 Android 장치 엔진용 JavaScript Facebook을 사용하는 응용 프로그램에 대해 수행하려는 것입니다.
Facebook 팀은 성능 정보를 분석한 결과 Android 기기용 JavaScript 도구인 Facebook 도구가 다운로드 크기와 일반적인 시작 기능에 결정적인 역할을 한다는 것을 알아냈습니다. 이 사실을 알게 된 그들은 고도로 억압된 휴대용 장치 환경에서 JavaScript가 정상적으로 작동하는 방식을 최적화할 필요가 있다고 느꼈습니다. 반면에 데스크톱 환경은 괜찮고 안드로이드용 페이스북 데스크톱 버전은 훌륭하게 작동합니다.
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 개발자는 구조와 네이티브 코드 사이의 공간을 연결하기 위해 항상 브리지를 설계해야 합니다. 에어비앤비가 탈퇴를 결정한 이유이기도 하다.
그러나 Android 기기용 JavaScript Facebook 엔진은 React Native에 더 많은 생명을 불어넣고 더 많은 사람들이 이를 받아들이도록 설득하는 Facebook의 수단이 될 수 있습니다.

안드로이드 기기용 자바스크립트 페이스북 엔진이 앱에만 집중한다는 점을 감안하면 페이스북은 서버나 검색엔진과 연동할 계획은 없다고 밝혔다.
Android 기기용 JavaScript Facebook 엔진은 Facebook에서 제공하는 최신 오픈 소스 프로젝트입니다. 최신 Android 프로젝트에는 다음이 포함됩니다.
- Pythia: 딥 러닝을 위한 프레임워크.
- DLRM: 딥 러닝을 위한 모델입니다.
- 스펙트럼: 사진을 효율적으로 업로드하는 프로세스를 만들기 위한 프로젝트입니다.
다음을 좋아할 수 있습니다. 프로그래밍 소개: 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 엔진에는 CPU에 의존하는 벤치마크에서 대부분 잘 수행되지 않는다는 JIT 도구가 없습니다. 그 결정은 세계적이었습니다. 전반적으로 벤치마크는 애플리케이션의 워크로드를 나타내지 않습니다.
Facebook은 JIT로 다양한 테스트를 수행하기도 했으며 주요 메트릭을 악화시키지 않고는 고속에 도달하는 것이 결코 쉽지 않을 것이라고 확신합니다. JTI는 앱이 실행될 때마다 먼저 준비해야 하므로 TTI 강화가 어려우며 TTI에 해를 끼칠 수도 있습니다. 그 외에도 JIT는 네이티브 코드의 크기와 메모리 소비에 기여합니다. 이것은 Facebook의 주요 지표를 망칩니다. 이것이 Facebook Android가 이를 무시하기로 결정하고 대신 Android 기기 엔진용 Facebook에서 JavaScript에 대한 최상의 절충안으로서 인터프리터의 성능에 주의를 기울인 이유입니다.
3. 폐기물 수집 기술

초기 Facebook Android 테스트 중에 32비트 가제트의 큰 앱에서 가상 주소 공간이 제한될 수 있음이 발견되었습니다.
엔진에서 사용하는 메모리와 가상 주소 공간을 줄이기 위해 Facebook은 다음과 같은 기능을 갖춘 폐기물 수집기를 설계했습니다.
- 요청 시 할당: 가상 주소 공간은 필요할 때 청크로 할당됩니다.
- 비연속: 가상 주소 공간은 리소스 제한을 제거하기 위해 하나의 메모리 범위에 있어야 합니다.
- 이동: 개체를 이동하면 불필요한 덩어리를 OS로 다시 가져오는 동안 메모리가 조각화될 수 있음을 의미합니다.
당신은 또한 좋아할 수 있습니다: Angular vs React: 2019년에 선택할 프레임워크.
결론

Android 기기용 JavaScript Facebook 프로젝트는 Facebook 팀이 작업 중인 많은 프로젝트 중 하나입니다. 팀은 메모리 생성과 시간 분석 방법도 기대하고 있습니다. 이렇게 하면 Android 전문가가 응용 프로그램을 쉽게 개선할 수 있습니다. Android 장치 엔진용 JavaScript Facebook을 테스트하고 기능을 확인하십시오. 경험을 공유하고 질문이 있는 경우 질문할 수도 있습니다.
이 기사는 Thomas Miller가 작성했습니다. 그는 사람들에게 최신 기술을 알리는 것을 좋아하는 Android 기술 전문가입니다. Thomas는 또한 Android 장치 엔진용 JavaScript Facebook의 아이디어를 좋아하고 그것을 사용하고 작동 방식을 좋아했습니다. 그는 또한 autoexpertguides.com에서 자동차 부문에 대한 최고의 전문가 리뷰를 수집합니다.
