وی۸ (موتور جاوااسکریپت)

**وی۸ (v8)** یک موتور جاوااسکریپت متن‌باز است که توسط شرکت **گوگل** توسعه یافته و به‌عنوان بخشی از مرورگر **گوگل کروم** و سایر محصولات مرتبط، از جمله **Node.js** و **Deno**، استفاده می‌شود. این موتور با هدف افزایش سرعت اجرا، بهینه‌سازی کد و پشتیبانی از استانداردهای مدرن جاوااسکریپت طراحی شده است.

وی۸ از معماری **کامپایل مستقیم به کد ماشین (Machine Code)** استفاده می‌کند که به‌جای تفسیر کد جاوااسکریپت، آن را به کد بهینه‌شده برای پردازنده سیستم تبدیل می‌کند. این روش اجرای برنامه‌ها را بسیار سریع‌تر می‌سازد.

### ساختار و نحوه عملکرد
----وی۸ از چندین بخش اصلی برای پردازش و اجرای کد استفاده می‌کند:

#### 1. Ignition (مفسر)
Ignition وظیفه ترجمه کد جاوااسکریپت به **بایت‌کد (Bytecode)** را بر عهده دارد. این بایت‌کد به عنوان ورودی برای مراحل بعدی استفاده می‌شود.

#### 2. TurboFan (کامپایلر بهینه‌ساز)
TurboFan کد بایت‌کد تولیدشده توسط Ignition را تجزیه و تحلیل کرده و آن را به کد ماشین بهینه‌سازی‌شده تبدیل می‌کند. این بخش یکی از عوامل اصلی افزایش سرعت وی۸ است.

#### 3. زباله‌جمع‌کن (Garbage Collector)
وی۸ از یک زباله‌جمع‌کن پیشرفته برای مدیریت حافظه استفاده می‌کند. این سیستم به طور خودکار اشیایی که دیگر مورد استفاده نیستند را حذف می‌کند و فضای حافظه را آزاد می‌سازد.

### مثال: اجرای ساده کد جاوااسکریپت با وی۸
----برای توضیح بهتر نحوه عملکرد وی۸، یک مثال ساده از اجرای کد در **Node.js** (که از وی۸ استفاده می‌کند) آورده شده است:
```javascript
// تعریف یک تابع ساده
function add(a, b) {
  return a + b;
}

// اجرای تابع
console.log(add(5, 3)); // خروجی: 8
```


#### نحوه عملکرد در وی۸:

# **Ignition** کد بالا را به بایت‌کد ترجمه می‌کند.
# **TurboFan** بایت‌کد را به کد ماشین بهینه‌شده تبدیل می‌کند.
# وی۸ کد ماشین را به پردازنده ارسال کرده و خروجی تولید می‌شود.

### مثال: استفاده از Node.js برای ایجاد یک سرور
----یکی از کاربردهای اصلی وی۸، پشتیبانی از **Node.js** است که امکان اجرای جاوااسکریپت در سمت سرور را فراهم می‌کند. در زیر نمونه‌ای از کد ایجاد یک سرور با استفاده از Node.js آورده شده است:
```javascript
const http = require('http');

// ایجاد یک سرور ساده
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('سلام دنیا! اینجا وی۸ است.');
});

// سرور را در پورت 3000 راه‌اندازی می‌کنیم
server.listen(3000, () => {
  console.log('سرور در پورت 3000 اجرا شد.');
});
```


#### توضیح:

* در این مثال، وی۸ وظیفه اجرای کد جاوااسکریپت را بر عهده دارد.
* درخواست‌های HTTP پردازش شده و پاسخ‌ها به سرعت ارسال می‌شوند، به لطف بهینه‌سازی‌های داخلی وی۸.

### کاربردها و تأثیرات
----

# **مرورگرها**: وی۸ موتور اصلی اجرای جاوااسکریپت در مرورگر گوگل کروم و سایر مرورگرهای مبتنی بر کرومیوم (مانند مایکروسافت اج و اپرا) است.
# **سرورها**: وی۸ به عنوان پایه اصلی **Node.js** و **Deno**، ابزارهای اجرای جاوااسکریپت در سمت سرور را فراهم کرده است.
# **بازی‌ها و اپلیکیشن‌های پیچیده وب**: عملکرد سریع وی۸، اجرای بازی‌های آنلاین و اپلیکیشن‌های وب پیچیده را ممکن ساخته است.

### فناوری‌های پیشرفته
----

# **WebAssembly**: وی۸ از WebAssembly برای اجرای کدهای کامپایل‌شده با سرعت بالا پشتیبانی می‌کند.
# **Code Caching**: ذخیره کد کامپایل‌شده برای بهبود زمان بارگذاری.
# **Dynamic Type Feedback**: استفاده از بازخوردهای پویا برای بهینه‌سازی اجرای کد.

## جستارهای وابسته
* گوگل کروم
* نود.جی‌اس

## منابع

* وی۸ در وب‌سایت رسمی
* وی۸ در گیت‌هاب

رده:کامپایلرها و مفسرهای آزاد
رده:گوگل کروم
رده:ماشین مجازی
رده:موتورهای جاوااسکریپت
رده:نرم‌افزارهای گوگل
رده:نرم‌افزارهایی که از پروانه بی‌اس‌دی استفاده می‌کنند
رده:نرم‌افزارهای ۲۰۰۸ (میلادی)