Facebook JavaScript Engine (Hermes) Boosts React Native on Android

Facebook has created an amazing JavaScript engine named Hermes to enhance the React Native applications operation on Android gadgets. The Facebook for Android devices engine is good for quick startup, leveraging closely-packed bytecode and ahead of time optimizing.

Introducing the new JavaScript Facebook for Android devices tool can enhance startup time, lower the usage of RAM and lead to lesser application size. At the moment, the tool is an opt-in feature in React Native. The majority of Facebook react Native Android latest version products have started using this JavaScript tool.

More information about Facebook for Android devices JavaScript engine

AI-artificial-intelligence-code-script-design-development

JavaScript Facebook for Android devices tool was created to enhance the functioning of large Android applications. Phone applications keep increasing in size which is highly capable of bringing issues, like when you download the Facebook app in gadgets that lack enough space or great processing capability. This is also the main reason why Facebook and other companies have developed “lite” Android versions for their applications.

Now it is possible for Android application creators to enhance the functioning of any applications through the help of the JavaScript tool. This tool lowers the size of a download and enhances startup function. That is what Facebook update intends to do for its applications using JavaScript Facebook for Android devices engine.

The Facebook team analyzed performance information and found out that JavaScript Facebook for Android devices tool was crucial in the size of downloads and the general startup functioning. Having known this, they felt they needed to optimize how JavaScript normally performs in the highly repressed portable devices environments. The desktop environment, on the other hand, is fine and Facebook desktop version for android functions excellently.

JavaScript Facebook for Android devices tool assists in improving 3 main features. They are:

  1. TTI (time to interact): This is the time taken to launch applications to the moment they load completely.
  2. The size of the downloads.
  3. Utilization of memory.
Recommended for you: React Native vs Flutter vs PWA: Battle of Trending Mobile App Frameworks.

Features of the new Android JavaScript engine

mobile-app-application-marketing-development

  • Work will be performed on build time instead of parsing and putting together JavaScript on-gadget while a person is waiting.
  • Ahead on time compiling permits more-enhanced optimizations. Similar activities may be seen in a program and de-duplicated. JavaScript code strings will put together in a good stored manner without runtime overhead.
  • A tiny size of Android APK making it possible to install a Facebook app or any other apps on devices with less memory.
  • Bytecode may get mapped by memory and get loaded from flash memory increasingly as required.
  • The virtual address area is assigned in chunks whenever it is required. This prevents the need to determine the size of the heap and it also minimizes overhead.
  • Implementing the standards of JavaScript using Hermes targeting ECMAScript2015 which is also referred to as ES6. The features of JavaScript which are not often applied in React Native applications were removed.
Besides that, the Facebook app for Samsung devices additionally opens sources for the integration of Hermes with React Native. That implies that Android developers will instantly be able to utilize Hermes.

How to get Hermes

Ask yourself three questions to assess results

The JavaScript Facebook for Android devices engine is available for download. You cannot download from Facebook, for now, it is available at GitHub. Guidelines on how to use it are available at React Native site.

React

React-JavaScript-LibraryIt is important to note that JavaScript Facebook for Android devices engines only functions with Android applications that have been designed with React Native (an app structure created by Facebook). The main selling point of this structure is that codes run in a native manner on most platforms.

But React Native has a few drawbacks which are why most people do not like it. For instance: Online gaming apps and other Android apps functions need native code like when they need to back up the integration between the camera and the sensor. Also, Android developers always need to design bridges in order to plug the spaces between the structure and native code. This was also the reason why Airbnb decided to quit it.

But JavaScript Facebook for Android devices engine might be a means of Facebook to bring more life to React Native and convince more people to accept it.

Considering that JavaScript Facebook for Android devices engine only focuses on apps, Facebook revealed that they are not planning to integrate it with servers or search engines.

JavaScript Facebook for Android devices engine is the newest open-source project coming from Facebook. More current Android projects include:

  • Pythia: A framework for deep learning.
  • DLRM: A model for deep learning.
  • Spectrum: A project meant to make the process of uploading pictures efficiently.
You may like: Introduction to Programming: A Brief of Node JS, Laravel, React, Ruby, Vue & Python.

The main architectural decision of Facebook JavaScript engine for Android devices

Android

The limitations of mobile gadgets for instance slow flash and small RAM amount made Facebook make some architectural decisions. Below are the things they implemented:

1. Byte code pre-compilation

Facebook JavaScript Engine Boosts React Native on Android - Point 1JavaScript Facebook for Android devices engine will automatically parse the source of JavaScript upon loading. This will create a byte code. This activity will delay the beginning of JavaScript execution

To avoid that, the Facebook app android devices JavaScript engine utilized the ahead of time compiler that runs under the app-building process. This results in more time being spent in bytecode optimization. This implies that the byte code is small and more useful.

Optimizing the whole program can take place. This includes de-duplication of operation and packing the string table.

The byte code is built in a manner that during runtime, will get mapped on memory and be interpreted without requiring to go through the whole file. The flash memory improves latency on most medium and poor-quality mobile gadgets. So this loads byte code from the flash when necessary and the optimization of byte code for size brings great TTI enhancements.

Additionally, since memory is mapped only read and supported by a file, the OS which does not swap may still remove those pages under memory pressure. This will minimize the out of memory process kills in gadgets that have less memory.

A byte code that is compressed is slightly bigger than a JavaScript code which is also compressed. This is so because JavaScript Facebook for Android devices engine code is small in size. JavaScript Facebook for Android devices engine lowers the size of Android apps.

2. No JIT

Facebook JavaScript Engine Boosts React Native on Android - Point 2To make execution faster many commonly used JavaScript engines might poorly compile interpreted codes to machine codes using the JIT (just in time) tool.

Facebook app for android devices JavaScript engine doesn’t have the JIT tool implying that it does not perform well mostly in benchmarks that rely on the CPU. That decision was global. The benchmarks in overall do not represent the workload of applications.

Facebook even did various tests with JITs and they are convinced that it will never be easy to attain high speed without worsening their main metrics. JTIs have to prepare first whenever an app launches which makes it difficult to enhance TTI, it can even harm the TTI. Besides that, JIT contributes to the size of the native code and the consumption of memory. This ruins the main metrics of Facebook. This is why Facebook Android decided to ignore it and instead paid attention to the performance of the interpreter as the best trade-off for JavaScript Facebook for Android devices engine.

3. Waste collecting technique

Facebook JavaScript Engine Boosts React Native on Android - Point 3Good memory usage is crucial in Android mobile gadgets. Low-quality gadgets have less memory, the swapping of operating systems is not possible and the OS kills apps that utilize a lot of memory space. Upon killing applications, slow restarting is needed and the functioning of the background is affected.

During the initial Facebook Android tests, it was found out that the virtual address space may be limited in big apps on the 32-bit gadgets.

To reduce memory and virtual address space utilized by the engine, Facebook designed a waste collector with the features below.

  • Allocating on demand: Virtual address space is assigned in chunks when necessary.
  • Noncontiguous: Virtual address space should be in one memory range to eliminate resource limits.
  • Moving: Moving objects implies that memory may get fragmented while unnecessary lumps are taken back to an OS.
You may also like: Angular vs React: Which Framework to Choose in 2019.

Conclusion

Facebook JavaScript Engine Boosts React Native on Android - conclusion

JavaScript Facebook for Android devices project is among the many projects that the Facebook team is working on. The team is looking forward to creating memory and time analyzing ways also. This will make it easy for Android experts to enhance their applications. Test JavaScript Facebook for Android devices engines and see out its functions. Share your experiences with us and you can also ask us questions if you have any.

This article is written by Thomas Miller. He is an Android technology expert who loves informing people about the latest technologies. Thomas also loves the idea of JavaScript Facebook for Android devices engine and has used it and liked how it works. He also compiles the best expert reviews for the automotive sector at autoexpertguides.com.

Disclosure: Some of our articles may contain affiliate links; this means each time you make a purchase, we get a small commission. However, the input we produce is reliable; we always handpick and review all information before publishing it on our website. We can ensure you will always get genuine as well as valuable knowledge and resources.
Share the Love

Related Articles

Published By: Souvik Banerjee

Souvik BanerjeeWeb Developer & SEO Specialist with 15+ years of experience in Open Source Web Development specialized in Joomla & WordPress development. He is also the moderator of this blog "RS Web Solutions".