موتور جاوا اسکریپت یا همون v8 چطور کار میکنه(قسمت اول)

اگر تخصصی به قضیه نگاه کنیم , جاوا اسکریپت ۵ مرحله برای اجرا دارد.

۱) اماده شدن مروگر

۲) کامپایل کد جاوا اسکریپت

۳) تولید بایت کد ها

۴) تفسیر و اجرای بایت کد های مرحله قبل

۵) یه مقدار بهینه سازی بایت



۱) اماده شدن مرورگر

بخواهیم فنی به این موضوع نگاه کنیم درواقع این موضوع قسمتی از کاری که v8 میکنه نیست.درواقع رندر شدن مرورگر برای سرویس میزبان و v8 هستش که اماده اجراشون میکنه.

یه مرورگر چندین فرایند رندر کردن رو داره که معمولا هر تب مرورگر یک فرایند رندر شدن و ساختن یه نمونه از v8رو برعهده داره.

حالا سوال پیش میاد ک این سرویس میزبان (host environment ) چیه که ما تکرارش میکنیم؟

مرورگره !!! تو این مقاله هرجا که گفتیم سرویس میزبان درمواقع به مرورگر اشاره میکنیم

مرورگر یکی از سرویس های میزبان جاوا اسکریپته مثل نود جی اس

سوال بعدی که پیش میاد اینکه حالا تو این سرویس میزبان یا مرورگر دقیقا چی هستش؟

این محیط یا سرویس میزبان , هرچیزی که موتور جاوا اسکریپت برای کار نیاز داره رو فراهم میکنه , درواقع عین این هستش ک بنزین این موتورو فراهم میکنه تا کار کنه :))))

حالا این مواردی ک فراهم میکنه چی هستش؟(به عکس بالا توجه شود)

1) Call Stack
2) Heap
3) Callback queue
4) Event loop
5) Web API and Web DOM

کاربر عزیز ما , وقتی تو صفحه ی درحال انجام مجموعه از کار هاست که موجب ایجاد رویداد ها و توابعی میشود.مرورگر اون ها رو با توابع مربوطه به صف ( Callback queue) اضافه میکنه.ما یه حلقه رویداد ها داریم (event loop) که عین یه حلقه بی نهایت به گرفتن اطلاعات از صف ( Callback queue) ادامه میده بعدش جاوا اسکریپت تو همین callback کامپایل و اجرا میشه.بعضی از دیتا ها رو قسمت call stack و بعضی دیگه رو تو heap ذخیره میکنه.مثل ارایه یا یه ابجکت

حالا چرا مرورگر دیتا رو در دو قسمت متفاوت ذخیره میکنه؟

-** فضا رو خرج کنی برای سرعت :

یه call stack به یک فضای پیوسته(پشت سرهم) تو حافظه رم نیاز داره که این موضوع پردازش رو خیلی سریع میکنه.این فضا رو خیلی کم و سخت میتونی پیدا کنی تو حافظه.

برای حل این موضوع ,طراحان مرورگر اومدن با بیشترین فضای ممکن نگه داشتن.اینحا همون جایی که بعضی وقتا بهت میگن داداچ زیادی مصرف کردی و من سریز شدم(stack-overflow).

حالا مرورگر ها معمولا دیتا ها و اطلاعاتی که سایز کمی دارن تو این call stack ذخیره میکنن مثل اعداد صبح یا هر primary data types.

-** معامله سرعت برای فضا

تو heap نیازی به یه فضای پیوسته نداری تا اطلاعات و دیتا های ک ممکنه گسترده باشند مثل ابجت ها رو ذخیره کنی.این مبادله برای اینکه ک heap کلا برای پردازش داده ها نسبا کنده

V8 engine relies on and empowers the host environment

این جمله یه خلاصه ی از کل این مقاله س.

موتور عزیز و محبوب جاوا اسکریپت به محیط میزبان ما وابسته س و اونو قوی و قدرتمندش میکنه

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

نمونه ش هم نرم افزار فتوشاپه که اگه ویندوز یا مک وجود نداشته باشند اصلا کار نمیکنن ولی اگر فتوشاپ نباشه ما روی ویندوز و مک , نمیتونیم طرح های خوشکل طراحی کنیم.

همونطور که گفتیم پس این موتور v8 باید مرورگر مارو قوی تر کنه و قابلیت های جالبی داشته باشه که چندتاشو مثال میزنیم براتون

  • JavaScript core features based on the ECMAScript standard, such as the creation of Object and Function
  • Garbage collection mechanism
  • Coroutine features
  • And more…

بعد از اینکه جفتشون اماده شدن و کار های مربوط به خودشونو انجام دادن تا به نقطه برسند که قابلیت اجرا شدن داشته باشند , انوقت که این موتور v8 میره مرحله بعد ...