چهارشنبه , مهر ۴ ۱۳۹۷
خانه / مقالات / برنامه نویسی / web developer / Front End / JIT و AOT در انگولار – قسمت اول
JIT و AOT در انگولار

JIT و AOT در انگولار – قسمت اول

JIT و AOT در انگولار

زبان های برنامه نویسی که از ماشین مجازی (vm) برای اجرای برنامه در زمان اجرا استفاده می کنند (مانند جاوا ، C# و Erlang) می توانند با افزودن قابلیت هایی به ماشین مجازی، کارایی و سرعت اجرای برنامه های خود را بالا ببرند.

برای مثال ماشین مجازی جاوا برای بالا بردن سرعت از قابلیت JIT compilation یا Just-in-time compilation استفاده می کند و ماشین مجازی Erlang از قابلیت AOT compilation یا ahead-of-time compilation استفاده می کند.

حال این دو مورد چه تفاوتی با هم دارند؟

JIT compilation به قابلیت کامپایل داینامیک و در زمان اجرای کدهای میانی (byte code) به زبان ماشین توسط ماشین مجازی گویند که باعث اجرای سریعتر کدهای میانی توسط ماشین مجازی می شود.

AOT compilation به قابلیتی گفته می شود که قبل از اجرای برنامه، قسمت یا تمامی کدهای میانی به زبان ماشین (یا شبیه زبان ماشین) کامپایل می شوند و باعث می شود بهینه سازی های استاتیک برروی کد میانی قبل از اجرای برنامه صورت گیرد و در نتیجه سرعت اجرای برنامه بالاتر رود.

AOT compilation برای ماشین های مجازی توکار که نمی توانند حافظه زیادی برای اجرا شدن داشته باشند مناسب تر است، بدلیل اینکه ماشین های مجازی که قابلیت JIT compilation را دارند حافظه بیشتری برای اجرا می خواهند و کمی سربار محاسباتی زمان اجرا نیز دارند.

کامپایلر The Ahead-of-Time ) AOT ) در انگولار

AOT کامپایلر در فریم ورک انگولار تمامی فایل های  HTML ،TypeScript ، CSS شما را قبل از بارگیری مرورگر کامپایل و اجرا می کند. این مقاله چگونگی استفاده از کامپایلر AOT با استفاده از option های مختلف و نحوه نوشتن متادیت های انگولار که AOT می تواند کامپایل کند، توضیح می دهد.

ویدیو توضیحات نویسنده کامپایلر انگولار Tobias Bosch explain در کنفرانس 2016 تیم انگولار

انگولار دو روش برای کامپایل کدهای HTML,CSS  و TS شما دارد

  1. Just-in-Time  :JIT
  2. Ahead-of-Time  :AOT

کامپایل JIT به طور پیش فرض زمانی که شما پروژه انگولار را توسط CLI اجرا میگیرید اعمال می شود.

ng build
ng serve

برای اجرای کامپایلر AOT فقط کافیست از پرچم aot در انتهای دستور CLI استفاده شود.

ng build --aot
ng serve --aot
پرچم prod  بصورت پیش فرض بوسیله کامپایلر AOT اجرا می شود.

ویژگی های کامپایل با AOT

رندر سریع تر

با AOT، مرورگر یک نسخه از برنامه کامپایل شده را دانلود می کند و بوسیله آن کد اجرایی را می دهد، بنابراین می تواند بلافاصله پس از ارائه برنامه، بدون انتظار برنامه کامپایل شود.

درخواستهای ناهمزمان کمتر

کامپایلر الگوهای HTML و صفحات CSS را در جاوااسکریپت با حذف درخواستهای ajax خاص برای آن فایلهای منبع، درج می کند.

حجم نهایی برنامه کوچکتر

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

تشخیص خطاهای کل برنامه قبل از اجرا

کامپایلر AOT، قبل از اینکه کاربران بتوانند برنامه اجرا شده نهایی را ببینند، خطاهای مربوط به الگو را شناسایی و گزارش می دهد.

امنیت بهتر

AOT کامپایل قالب HTML و اجزای را به فایل های جاوا اسکریپت تبدیل می کند.که این باعث می شود عملا در سورس کد صفحه تگ HTML نمایش داده نشود و همین امر از حملات injection جلوگیری می کند.

 

  • آیا این مقاله مفید بود؟
  • بله   خیر

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.