دیدکلی از معماری ماشین مجازی جاوا (جی‌وی‌اِم). کد منبع به بایت‌کد جاوا ترجمه می‌شود. هر سکویی که یک جی‌وی‌ام را اجرا می‌کند می‌تواند کد جاوا را اجرا کند. بایت‌کد اعتبارسنجی‌شده سپس به صورت مفسری یا ترجمهٔ جی‌ای‌تی بر روی معماری بومی انجام می‌شود. واسط برنامه‌نویسی جاوا و جی‌وی‌ام به صورت توأم محیط اجرایی را ایجاد می‌نماید
**ماشین مجازی جاوا** (به انگلیسی: Java Virtual Machine) که به صورت اختصار **JVM** مشخص می‌شود، مجموعه‌ای از برنامه‌های نرم‌افزاری و ساختمان‌داده‌هایی است که برای مدلسازی ماشینی مجازی اجرای برنامه‌های سایر رایانه‌ها و اسکریپت‌های دیگر سامانه‌هاُ به کار می‌رود. مدلی که **جی‌وی‌ام** برای اجرا می‌پذیرد، شکلی از زبان میانی را اجرا می‌نماید. به این زبان میانی جاوا بایت کد گفته می‌شود. این زبان میانی، به صورتی مفهومی، مجموعه‌ای از دستورهاِ زبان برنامه‌نویس مبتنی به پشته و معماری قابلیت مبتنی بر امنیت است. سان، ادعا نموده که هم اکنون، ۴٫۵ میلیارد دستگاه در جهان از جی‌وی‌ام استفاده می‌نماید.

دید کلی
-------

یک ماشین مجازی جاوا، علاوه بر جاوا، زبان‌های برنامه‌نویسی دیگری را هم پشتیبانی می‌نماید. برای مثال دستورها زبان برنامه‌نویسی ادا توانایی ترجمه به بایت کد و نیز اجرا در این ماشین مجازی را دارا هستند. علاوه بر شرکت سان (که شرکت توسعه دهندهٔ جاواست که البته این انحصار به شرکت اوراکل واگذار شده‌است)، سایر شرکت‌ها نیز ماشین‌های مجازی جاوایی را منتشر نموده‌اند؛ که البته این کار تحت ویژگی‌های منتشر شده توسط سان، صورت می‌پذیرد. همچنان‌که تمام حقوق تجاری آن تحت نام *جاوا* و متعلق به سان است.  

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

جی‌وی‌ام جزء حیاتی سکوی جاو است. جی‌وی‌ام، بر روی بسیاری از سخت‌افزارها و سکوهای نرم‌افزاری قابل نصب است. جاوا با استفاده از بایت کد یکسان برای تمام سکوها، ویژگی‌ای را معرفی می‌نماید با نام: یک بار ترجمه کن، هرجایی اجرا کن که مخالف با مفایر با یکبار بنویس، همه‌جا اجرا کن است. چراکه یکبار بنویس …، دربارهٔ زبان‌های ترجمه‌شوندهٔ چند سکویی است.

جی‌وی‌ام، به همراه مجموعه‌ای از کتابخانه‌های کلاسِ استاندارد توزیع می‌گردد. این کتابخانه‌ها رابط برنامه‌نویسی نرم‌افزار را پیاده‌سازی می‌نماید. یک رابط برنامه‌نویسی نرم‌افزار، توسط یک سامانهٔ رایانه‌ای، کتابخانه، یا برنامه برای تبادل داده بین آن‌ها فراهم می‌گردد. این رابط‌های برنامه‌ای، به صورت متناسب و با هم، در محیط زمانِ‌اجرای جاوا (JRE) به صورت یک بسته وجود دارد.

محیط اجرایی
-----------

برنامه‌ایی که می‌خواهند بر روی جی‌وی‌ام، اجرا شوند، باید در قالبی استاندارد و کد دودویی (باینری) قابل حمل ترجمه شده‌باشند که به شکل نقطه‌کلاس (class.) است. یک برنامه ممکن است شامل تعداد زیادی کلاس در قالب فایل‌های مختلف باشد. برای توزیع ساده‌ترِ برنامه‌های با اندازهٔ بزرگ، معمولاً این برنامه‌ها را در فایل‌هایی با قالب .jar، (که کوته‌نوشت Java archive) ذخیره می‌گردد.  

محیط اجرایی جی‌وی‌ام، فایل‌هایی با قالب `.class` یا `.jar` اجرا می‌نماید. این کار با استفاده از شبیه‌سازی مجموعه دستورها جی‌وی‌ام و با از تفسیر نمودن آن صورت می‌پذیرد. همچنین اجرای برنامه می‌تواند از طریق ترجمه همزمانِ هات‌اسپاتِ جاوا صورت پذیرد. ترجمه همزمانِ٬که در واقع تفسیر نیست، برای دستیابی به سرعت‌های بالاتر در نسخه‌های امروزی جی‌وی‌ام استفاده می‌گردد. البته برای آن دسته از توسعه‌گران، که برای سامانه‌های خاص، نیاز به کد بومی دارند، ترجمهٔ زودهنگام نیز برای جی‌وی‌ام وجود دارد.  

مانند بسیاری از ماشین‌های مجازی، ماشین مجازی جاوا، دارای ساختاری مبتنی بر پشته که مبتنی بر ریزپردازنده/ریزکنترلگر اجرا کنندهٔ آن است.  

وظیفهٔ جی‌وی‌ام به عنوان شیءای از محیط اجرای جاوا، اجرای برنامه‌های جاوا می‌باشد. بعد از اتمام اجرای برنامهٔ جاوا، این شیء به وسیلهٔ زباله روب، پالایش می‌شود. ترجمهٔ همزمان، به عنوان بخشی از ماشین مجازی جاوا به منظور افزایش سرعت اجراست. این روش ترجمه، با ترجمهٔ همزمان بخش‌هایی که عملکرد یکسانی را دارند و کاهش زمان لازم برای ترجمه، این افزایش سرعت را به ارمغان می‌آورد.

زبان‌های جی‌وی‌ام
-----------------

نسخه‌هایی از زبان‌های غیر جی‌وی‌ام| زبان | روی جی‌وی‌ام |
| --- | --- |
| ارلنگ | ارلجَنگ |
| جاوا اسکریپت | رهینو |
| پی‌اچ‌پی | کرکس |
| پایتون | جایتون |
| رکس | نترکس |
| روبی | جی‌روبی |
| تی‌اس‌ال | جی‌ای‌سی‌ال |

اگرچه جی‌وی‌ام در ابتدا تنها با هدف ترجمهٔ برنامه‌های جاوا پا به عرصه گذاشته بود، اما امروزه بسیاری از زبان‌های دیگر نیز قادر به اجرای برنامه‌های خود بر روی آن هستند.
جی‌وی‌امِ کنونی هیچ‌گونه پشتیبانی از زبان‌هایی که بررسی نوع در آن‌ها به صورت پویاست نمی‌کند، چرا که بررسی نوع موجود از نوع ایستاست.
با این وجود از جی‌وی‌ام می‌توان به عنوان مفسری برای زبان‌هایی با بررسی نوع پویا، استفاده نمود.  

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

منابع
-----

1. ↑   دربارهٔ فناوری جاوا بیشتر بدانیم
2. ↑  تولکسدورف, روبرت (2005). "زبان‌های مربوط به جی‌وی‌ام". Retrieved 2008-06-08.
3. ↑  ناتر, چالرز (۲۰۰۷-۰۱-۰۳). "به سمت پویا رفت: آیا مفید است؟". Retrieved 2008-01-25.
4. ↑  کریل, پاول (۲۰۰۸-۰۱-۳۱). "ماشین داوینچیِ شرکت سان برای پوشش گسترده". Archived from the original on 28 March 2009. Retrieved 2008-02-06.

| * ن
* ب
* و
سکوی جاوا |
| --- |
| سکوی جاوا | 
* زبان جاوا
* جی‌وی‌ام
* نسخهٔ میکرو
* نسخهٔ استاندارد
* نسخهٔ سازمانی
* جاوا کارت

 |  |
| فناوری‌های سان | 
* اسکواک
* کیت توسعه جاوا
* اپن‌جی‌دی‌کی
* ماشین مجازی جاوا
* جاوا اف‌اکس
* Maxine VM

 |
| فناوری‌های سکو | 
* جاوا اپلت
* جاوا سرولت
* میدلت‌ها
* جی‌اس‌پی
* Web Start (jnlp)

 |
| فناوری‌های شرکت‌های دیگر | 
* JRockit
* گنو کلاس پث
* Kaffe
* TopLink
* آپاچی هارمونی
* آپاچی استراتس
* اسپرینگ فریمورک
* هایبرنیت
* JBoss application server
* آپاچی تپستری
* Jazelle

 |
| تاریخچه | 
* تاریخچه نگارش جاوا
* Java Community Process
* سان مایکروسیستمز
* Free Java implementations

 |
| زبان‌های برنامه‌نویسی اصلی | 
* BeanShell
* کلوژر
* گرووی
* اکسیژن (زبان برنامه‌نویسی)
* Java Tcl
* JRuby
* جایتون
* پراسسینگ (زبان برنامه‌نویسی)
* Rhino
* اسکالا
* بیشتر…

 |
| همایش‌های جاوا | 
* جاوا وان

 |

| * ن
* ب
* و
زبان برنامه‌نویسی سی |
| --- |
| 
* انسی سی
	+ سی۸۹ و سی۹۰
* سی۹۹
* سی۱۱
* سی2x

 |
| کامپایلرها | 
* بورلند توربو سی
* کلنگ
* جی‌سی‌سی
* پی‌سی‌سی
* ال‌سی‌سی
* پلس‌سی
* پی‌سی‌سی
* تی‌سی‌سی
* ویژوال سی++
	+ سی++
	+ سی++/سی‌ایکس
* کامپایلر سی/سی++ واتکام

 |
| کتابخانه‌ها | 
* کتابخانه استاندارد سی
* جی‌لیب‌سی
* دایت‌لیب‌سی
* بی‌اس‌دی لیب‌سی
* uClibc
* Newlib
* EGLIBC
* بایونیک (نرم‌افزار)
* klibc
* libhybris
* musl

 |
| امکانات | 
* رشته‌ها
* نحو
* پیش‌پردازنده
* انواع داده‌ها و اعلان‌ها
* توابع

 |
| فرزندان سی | 
* سی++
* سی شارپ
* دی
* آبجکتیو-سی
* الف
* لیمبو
* گو
* والا
* MQL4
* کربن

 |
| سی و زبان‌های دیگر | 
* سی و سی++
	+ سازگاری
	+ عملگرها
* مقایسه سی و پاسکال
* کامپایلر سی به بایت‌کد جاوا

 |
| 
* **رده:زبان برنامه‌نویسی سی**

 |