Facebook JavaScript Engine(Hermes), Android에서 React Native 향상

게시 됨: 2019-11-18
Facebook은 Android 가젯에서 React Native 애플리케이션 작동을 향상시키기 위해 Hermes라는 놀라운 JavaScript 엔진을 만들었습니다. Android 장치용 Facebook 엔진은 조밀하게 압축된 바이트코드를 활용하고 미리 최적화하여 빠른 시작에 적합합니다.

Android 기기용 새 JavaScript Facebook 도구를 도입하면 시작 시간을 단축하고 RAM 사용량을 낮추며 애플리케이션 크기를 줄일 수 있습니다. 현재 이 도구는 React Native의 선택 기능입니다. 대부분의 Facebook 반응 Native Android 최신 버전 제품은 이 JavaScript 도구를 사용하기 시작했습니다.

목차 보기
  • Android 기기용 Facebook JavaScript 엔진에 대한 추가 정보
  • 새로운 Android JavaScript 엔진의 기능
  • 헤르메스를 얻는 방법
    • 반응하다
  • Android 기기용 Facebook JavaScript 엔진의 주요 아키텍처 결정
    • 1. 바이트 코드 사전 컴파일
    • 2. JIT 없음
    • 3. 폐기물 수거 기술
  • 결론

Android 기기용 Facebook JavaScript 엔진에 대한 추가 정보

AI-인공지능-코드-스크립트-설계-개발

Android 기기용 JavaScript Facebook 도구는 대규모 Android 애플리케이션의 기능을 향상시키기 위해 만들어졌습니다. 전화 응용 프로그램은 크기가 계속 커지므로 공간이 부족하거나 처리 능력이 뛰어난 장치에서 Facebook 응용 프로그램을 다운로드할 때와 같은 문제를 일으킬 수 있습니다. 이는 또한 Facebook 및 기타 회사가 애플리케이션용 "라이트" Android 버전을 개발한 주요 이유이기도 합니다.

이제 Android 애플리케이션 작성자는 JavaScript 도구의 도움을 통해 모든 애플리케이션의 기능을 향상시킬 수 있습니다. 이 도구는 다운로드 크기를 줄이고 시작 기능을 향상시킵니다. 이것이 Facebook 업데이트가 JavaScript를 사용하는 응용 프로그램에 대해 수행하려는 것입니다. Android용 Facebook 엔진.

Facebook 팀은 성능 정보를 분석하여 Android 기기용 JavaScript Facebook 도구가 다운로드 크기와 일반적인 시작 기능에 중요하다는 사실을 알아냈습니다. 이를 알게 된 그들은 JavaScript가 일반적으로 고도로 억압된 휴대용 장치 환경에서 수행되는 방식을 최적화해야 한다고 느꼈습니다. 반면 데스크톱 환경은 훌륭하고 Android용 Facebook 데스크톱 버전은 훌륭하게 작동합니다.

Android 기기용 JavaScript Facebook 도구는 3가지 주요 기능을 개선하는 데 도움이 됩니다. 그들은:

  1. TTI(상호 작용 시간): 애플리케이션이 완전히 로드되는 순간까지 애플리케이션을 시작하는 데 걸리는 시간입니다.
  2. 다운로드 크기입니다.
  3. 메모리 활용.
 추천: React Native vs Flutter vs PWA: 트렌드 모바일 앱 프레임워크 전투.

새로운 Android JavaScript 엔진의 기능

모바일 앱 애플리케이션 마케팅 개발

  • 사람이 기다리는 동안 가제트에서 JavaScript를 구문 분석하고 결합하는 대신 빌드 시간에 작업이 수행됩니다.
  • Ahead on time 컴파일은 보다 향상된 최적화를 허용합니다. 프로그램에서 유사한 활동을 볼 수 있으며 중복 제거할 수 있습니다. JavaScript 코드 문자열은 런타임 오버헤드 없이 좋은 방식으로 저장됩니다.
  • 작은 크기의 Android APK로 메모리가 적은 장치에 Facebook 앱 또는 기타 앱을 설치할 수 있습니다.
  • 바이트코드는 메모리에 의해 매핑될 수 있으며 필요에 따라 점점 더 플래시 메모리에서 로드될 수 있습니다.
  • 가상 주소 영역은 필요할 때마다 청크로 할당됩니다. 이렇게 하면 힙 크기를 결정할 필요가 없으며 오버헤드도 최소화됩니다.
  • ES6이라고도 하는 ECMAScript2015를 대상으로 Hermes를 사용하여 JavaScript 표준을 구현합니다. React Native 애플리케이션에서 자주 적용되지 않는 JavaScript의 기능이 제거되었습니다.
그 외에도 Samsung 장치용 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 개발자는 구조와 네이티브 코드 사이의 공간을 연결하기 위해 항상 브리지를 설계해야 합니다. 에어비앤비를 그만두기로 한 이유이기도 하다.

그러나 Android 장치용 JavaScript Facebook 엔진은 Facebook이 React Native에 더 많은 생명을 불어넣고 더 많은 사람들이 이를 받아들이도록 설득하는 수단일 수 있습니다.

안드로이드 기기용 자바스크립트 페이스북 엔진이 앱에만 집중하고 있다는 점을 감안하면 페이스북은 서버나 검색엔진과 통합할 계획이 없다고 밝혔습니다.

Android 장치용 JavaScript Facebook 엔진은 Facebook에서 제공하는 최신 오픈 소스 프로젝트입니다. 최신 Android 프로젝트에는 다음이 포함됩니다.

  • Pythia: 딥 러닝을 위한 프레임워크.
  • DLRM: 딥 러닝을 위한 모델입니다.
  • Spectrum: 사진을 업로드하는 프로세스를 효율적으로 만들기 위한 프로젝트입니다.
 프로그래밍 입문: Node JS, Laravel, React, Ruby, Vue 및 Python에 대한 개요 .

Android 기기용 Facebook JavaScript 엔진의 주요 아키텍처 결정

기계적 인조 인간

예를 들어 느린 플래시 및 작은 RAM 용량과 같은 모바일 장치의 한계로 인해 Facebook은 일부 아키텍처 결정을 내렸습니다. 그들이 구현한 내용은 다음과 같습니다.

1. 바이트 코드 사전 컴파일

Facebook JavaScript 엔진이 Android에서 React Native 향상 - 포인트 1 JavaScript Android 장치용 Facebook 엔진은 로드 시 JavaScript 소스를 자동으로 구문 분석합니다. 그러면 바이트 코드가 생성됩니다. 이 활동은 JavaScript 실행 시작을 지연시킵니다.

이를 방지하기 위해 Facebook 앱 Android 기기 JavaScript 엔진은 앱 빌드 프로세스에서 실행되는 사전 컴파일러를 활용했습니다. 이로 인해 바이트코드 최적화에 더 많은 시간이 소요됩니다. 이것은 바이트 코드가 작고 더 유용하다는 것을 의미합니다.

전체 프로그램을 최적화할 수 있습니다. 여기에는 작업 중복 제거 및 스트링 테이블 패킹이 포함됩니다.

바이트 코드는 런타임 중에 전체 파일을 검토할 필요 없이 메모리에 매핑되고 해석되는 방식으로 빌드됩니다. 플래시 메모리는 대부분의 중간 및 저품질 모바일 장치에서 대기 시간을 개선합니다. 따라서 필요할 때 플래시에서 바이트 코드를 로드하고 크기에 대한 바이트 코드 최적화는 TTI를 크게 향상시킵니다.

또한 메모리는 읽기 전용으로 매핑되고 파일에 의해 지원되기 때문에 스왑하지 않는 OS는 여전히 메모리 압력 하에서 해당 페이지를 제거할 수 있습니다. 이렇게 하면 메모리가 적은 가젯에서 메모리 부족 프로세스 종료가 최소화됩니다.

압축된 바이트 코드는 마찬가지로 압축된 JavaScript 코드보다 약간 큽니다. Android 기기용 JavaScript Facebook 엔진 코드의 크기가 작기 때문입니다. Android 장치용 JavaScript Facebook 엔진은 Android 앱의 크기를 줄입니다.

2. JIT 없음

Facebook JavaScript 엔진이 Android에서 React Native 향상 - 포인트 2 실행 속도를 높이기 위해 일반적으로 사용되는 많은 JavaScript 엔진은 해석된 코드를 JIT(Just In Time) 도구를 사용하여 기계 코드로 잘못 컴파일할 수 있습니다.

Android 기기용 Facebook 앱 JavaScript 엔진에는 CPU에 의존하는 벤치마크에서 대부분 잘 수행되지 않는다는 것을 암시하는 JIT 도구가 없습니다. 그 결정은 세계적이었습니다. 전반적인 벤치마크는 애플리케이션의 워크로드를 나타내지 않습니다.

Facebook은 JIT로 다양한 테스트를 수행했으며 주요 메트릭을 악화시키지 않고는 고속을 달성하기가 결코 쉽지 않을 것이라고 확신합니다. JTI는 앱이 실행될 때마다 먼저 준비해야 하므로 TTI 향상이 어렵고 TTI에 피해를 줄 수도 있습니다. 그 외에도 JIT는 네이티브 코드의 크기와 메모리 소비에 기여합니다. 이것은 Facebook의 주요 지표를 망칩니다. 이것이 바로 Facebook Android가 이를 무시하기로 결정하고 대신 Android 장치 엔진용 Facebook의 JavaScript에 대한 최상의 트레이드오프로서 인터프리터의 성능에 주의를 기울인 이유입니다.

3. 폐기물 수거 기술

Facebook JavaScript 엔진이 Android에서 React Native 향상 - 포인트 3 좋은 메모리 사용은 Android 모바일 장치에서 매우 중요합니다. 저품질 가젯은 메모리가 적고 운영 체제 교체가 불가능하며 운영 체제는 많은 메모리 공간을 사용하는 앱을 종료합니다. 응용 프로그램을 종료하면 느린 재시작이 필요하며 백그라운드 기능이 영향을 받습니다.

초기 Facebook Android 테스트 중에 가상 주소 공간이 32비트 가젯의 큰 앱에서 제한될 수 있음이 밝혀졌습니다.

엔진에서 사용하는 메모리와 가상 주소 공간을 줄이기 위해 Facebook은 아래 기능을 갖춘 폐기물 수집기를 설계했습니다.

  • 요청 시 할당: 가상 주소 공간은 필요할 때 청크로 할당됩니다.
  • 비연속적: 리소스 제한을 제거하려면 가상 주소 공간이 하나의 메모리 범위에 있어야 합니다.
  • 이동: 개체를 이동하는 것은 불필요한 덩어리를 OS로 가져가는 동안 메모리가 조각화될 수 있음을 의미합니다.
 Angular vs React: 2019년에 선택할 프레임 워크 .

결론

Facebook JavaScript 엔진이 Android에서 React Native 향상 - 결론

Android 장치용 JavaScript Facebook 프로젝트는 Facebook 팀이 작업 중인 많은 프로젝트 중 하나입니다. 팀은 메모리 및 시간 분석 방법도 생성하기를 기대합니다. 이렇게 하면 Android 전문가가 애플리케이션을 쉽게 향상할 수 있습니다. Android 장치용 JavaScript Facebook 엔진을 테스트하고 해당 기능을 확인하십시오. 귀하의 경험을 우리와 공유하고 질문이 있는 경우 질문할 수도 있습니다.

 이 기사는 Thomas Miller가 작성했습니다. 그는 사람들에게 최신 기술에 대해 알리는 것을 좋아하는 Android 기술 전문가입니다. Thomas는 또한 Android 장치 엔진용 JavaScript Facebook의 아이디어를 좋아하고 이를 사용했으며 작동 방식이 마음에 들었습니다. 그는 또한 autoexpertguides.com에서 자동차 부문에 대한 최고의 전문가 리뷰를 작성합니다.