موتور جاوا اسکریپت سبک وزن منبع باز فیس بوک هرمس خدای بازرگانی و دزدی و سخنوری، برای اجرای برنامه های کاربردی بر اساس چارچوب بهینه شده است واکنش بومی در پلتفرم اندروید پشتیبانی هرمس ساخته شده است در React Native با نسخه 0.60.2 امروز شروع می شود. این پروژه برای حل مشکلات مربوط به زمان راه اندازی طولانی برای برنامه های کاربردی جاوا اسکریپت بومی و مصرف منابع قابل توجه طراحی شده است. کد نوشته شده توسط در C++ و تحت مجوز MIT توزیع شده است.
از مزایای استفاده از هرمس می توان به کاهش زمان راه اندازی اپلیکیشن، کاهش مصرف حافظه و کاهش حجم اپلیکیشن اشاره کرد. هنگام استفاده از V8، زمانبرترین مراحل، مراحل تجزیه کد منبع و کامپایل آن در جریان است. هرمس این مراحل را به مرحله ساخت میآورد و اجازه میدهد برنامهها در قالب بایت کد فشرده و کارآمد ارائه شوند.
برای اجرای مستقیم برنامه، یک ماشین مجازی توسعهیافته در داخل پروژه با جمعآوری زباله SemiSpace استفاده میشود که بلوکها را فقط در صورت نیاز (در صورت تقاضا) توزیع میکند، از جابجایی و یکپارچهسازی بلوکها پشتیبانی میکند، و حافظه آزاد شده را به سیستم عامل برمیگرداند، بدون دورهای. اسکن محتویات کل پشته
پردازش جاوا اسکریپت به چند مرحله تقسیم می شود. ابتدا متون مبدأ تجزیه می شوند و یک نمایش میانی از کد ایجاد می شود (هرمس آی آر) بر اساس نمایندگی S.S.A. (استاتیک تک تکلیف). سپس، نمایش میانی در یک بهینهساز پردازش میشود، که تکنیکهای بهینهسازی استاتیک رو به جلو را برای تبدیل کد میانی اولیه به یک نمایش میانی کارآمدتر در حالی که معنای اصلی برنامه را حفظ میکند، اعمال میکند. در آخرین مرحله، بایت کد ماشین مجازی ثبت شده تولید می شود.
در موتور پشتیبانی شده توسط بخشی از استاندارد جاوا اسکریپت ECMAScript 2015 (هدف نهایی پشتیبانی کامل از آن است) و سازگاری با اکثر برنامه های موجود React Native را فراهم می کند. هرمس تصمیم گرفته است از اجرای محلی eval()، با عبارات، بازتاب (Reflect و Proxy)، Intl API و برخی پرچمها در RegExp پشتیبانی نکند. برای فعال کردن هرمس در یک برنامه React Native، کافی است گزینه “enableHermes: true” را به پروژه اضافه کنید. همچنین امکان ساخت هرمس در حالت CLI وجود دارد که به شما امکان می دهد فایل های جاوا اسکریپت دلخواه را از خط فرمان اجرا کنید. یک حالت کامپایل تنبل برای اشکالزدایی در دسترس است، که به شما امکان میدهد جاوا اسکریپت را هر بار در طول فرآیند توسعه کامپایل نکنید، بلکه بتوانید بایت کد را بلافاصله در دستگاه تولید کنید.
در عین حال، فیس بوک برنامه ای برای تطبیق Hermes برای Node.js و راه حل های دیگر ندارد و فقط بر روی برنامه های تلفن همراه تمرکز می کند (کامپایل AOT به جای JIT در زمینه سیستم های تلفن همراه که دارای RAM محدود و فلش کندتر هستند بهینه ترین است). تست عملکرد اولیه توسط کارمندان مایکروسافت انجام شد آشکار شدکه هنگام استفاده از هرمس، برنامه Microsoft Office برای اندروید در 1.1 ثانیه برای استفاده در دسترس می شود. پس از راه اندازی و 21.5 مگابایت رم مصرف می کند، در حالی که هنگام استفاده از موتور V8 1.4 ثانیه طول می کشد تا روشن شود و مصرف حافظه 30 مگابایت است.
اضافه شده: فیس بوک منتشر شده نتایج آزمایش خود هنگام استفاده از Hermes با برنامه MatterMost، زمان شروع در دسترس بودن برای کار (TTI، Time To Interact) از 4.30 به 2.01 ثانیه کاهش یافت، حجم بسته APK از 41 به 22 مگابایت کاهش یافت و مصرف حافظه از 185 به 136 کاهش یافت. MB.