معرفی موتور جاوا اسکریپتی Hermes برای React Native

نویسنده : مرتضی گنج | تاریخ انتشار : 2019/12/31 | بخش : فریم ورک ها

فیسبوک در Chain React 2019، موتور متن‌باز جاوا اسکریپتی Hermes رو معرفی کرد که برای React Native بهینه شده تا حجم و زمان راه‌اندازی App رو کاهش بده و حافظه‌ اصلی کمتری هنگام استفاده از App اشغال بشه که البته یک مزیت خیلی عالی برای گوشی‌های رده پایین که محدودیت حافظه‌ اصلی دارن محسوب می شود.

مدت زمان لازم برای اجرای یک اپلیکیشن به صورت مستقیم بر روی تجربه کاربری آن تاثیرگذار است. اگر مدت زمان شروع به کار اپلیکیشن طولانی شود، تمام ویژگی‌های زیبا و خوبی که برای اپلیکیشن ساخته‌اید بی استفاده خواهد ماند. چرا که بر اساس آمار موجود اغلب کاربران بین ۳ تا ۵ ثانیه برای اجرای یک اپلیکیشن یا وب سایت صبر خواهند کرد. به همین دلیل نیاز است تا جای ممکن سرعت اجرای اپلیکیشن‌ ها را بالا ببرید.

React Native به صورت پیش فرض از JavaScriptCore استفاده می کند که برای Android یکسری مشکلات ایجاد کرده. برای مثال به دلیل تغییرات زیاد داخل jscore (که بشه توی Android اجراش کرد) و کمبود منابع، چندین سال از آخرین بروزرسانی اون می گذشت که البته بعد از بروزرسانی jscore مشکلات دیگری اضافه شد، مثلا حجم App تقریبا دو برابر شد و یا اینکه موقع Debug کردن موتور v8 مرورگر کروم، جایگزین jscore می شود.

یکی از کارهای مهمی که Hermes انجام میدهد این است که موقع خروجی گرفتن از App کدهای جاوا اسکریپت رو به Bytecode تبدیل می کنه. یعنی اینکه عمل Parse و Compile کد رو جلو جلو انجام می دهد که تاثییر زیادی در زمان راه‌اندازی App دارد .

به صورت کلی کاری که موتور جاوا اسکریپتی Hermes برای اپلیکیشن های React Native انجام میدهد را می توانید در تصویر زیر مشاهده کنید

 

این موتور جاوا اسکریپتی به صورت متن باز و رایگان عرضه شده و در حال حاضر از طریق مخزن گیت‌هاب نیز در دسترس است.

البته با وجود آنکه این تکنولوژی بسیار جدید است اما در حال حاضر توسط چندین اپلیکیشن مختلف استفاده می‌شود.

امکاناتی که موتور جاوا اسکریپتی Hermes برای ما آماده کرده است به شرح زیر است :

  • موتور جاوا اسکریپتی Hermes بجای آنکه کدهای جاوا اسکریپتی را روی دستگاه کاربر کامپایل کند آن را در زمان ‌Build انجام می‌دهد.
  • تمام رشته‌هایی که در یک اپلیکیشن قرار می‌دهید را Hermes به صورت یک پکیج در خواهد آورد. این کار باعث می‌شود در زمان اجرا روال سریع‌تری داشته باشیم.
  • همچنین یکی دیگر از ویژگی‌های موتور Hermes بهینه‌سازی کدها و توابع جاوا اسکریپتی است. از این رو نیازی به نگرانی در ارتباط با بهینه بودن کدهای‌ تان نخواهید داشت.
  • حجم APK تولید شده توسط این موتور به مراتب کوچک‌تر از حالت عادی است.
  • بایت‌ کد می‌توانند به صورت Memory-mapped باشند و در صورت نیاز استفاده بیشتری از حافظه را ببرند.
  • مدیریت قابلیت‌هایی مانند Garbage Collection و… حال بسیار سریع‌تر و بهینه‌تر اتفاق می‌افتد.
  • ویژگی‌های مربوط به استانداردهای جاوا اسکریپتی مانند ES۶ که قبلا چندان استفاده‌ای در React Native نداشتند در این موتور حذف شده‌اند.

البته استفاده از موتور Hermes یکسری محدودیت هم ایجاد می کند مثلا دیگر نمی توان از متد ()toString برای تبدیل توابع به کد استفاده کرد که البته داخل محیط React Native کاربردی ندارد.

علاوه بر این Hermes بهینه‌ سازی‌ های دیگه‌ ای هم اعمال می کنه، مثلا String ها رو بصورتی در حافظه‌ اصلی بارگذاری می کنه که فراخونیشون سریعتر باشه.

برای فعال کردن Hermes، حداقل React Native نسخه ۰٫۶۰٫۲ نیاز هست و اگه دوست دارین که Hermes رو امتحان کنید می تونید این دستورالعمل رو دنبال کنید.