دیدکلی از معماری ماشین مجازی جاوا(جیویاِم). کد منبع به بایتکد جاوا ترجمه میشود. هر سکویی که یک جیویام را اجرا میکند میتواند کد جاوا را اجرا کند. بایتکد اعتبارسنجیشده سپس به صورت مفسری یا ترجمهی جیایتی بر روی معماری بومی انجام میشود.واسط برنامهنویسی جاوا و جیویام به صورت توام محیط اجرایی را ایجاد مینماید
ماشین مجازی جاوا (به انگلیسی: Java Virtual Machine) که به صورت اختصار JVM مشخص میشود، مجموعهای از برنامههای نرمافزاری و ساختماندادههایی است که برای مدلسازی ماشینی مجازی اجرای برنامههای سایر رایانهها و اسکریپتهای دیگر سامانههاُ به کار میرود. مدلی که جیویام برای اجرا میپذیرد، شکلی از زبان میانی را اجرا مینماید. به این زبان میانی جاوا بایت کد اطلاق میگردد. این زبان میانی، به صورتی مفهومی، مجموعهای از دستوراتِ زبان برنامه نویس مبتنی به پشته و معماری قابلیت مبتنی بر امنیت است.سان، ادعا نموده که هم اکنون٬ ۴.۵ میلیارد دستگاه در جهان از جیویام استفاده مینماید.[۱]
یک ماشین مجازی جاوا، علاوه بر جاوا، زبانهای برنامهنویسی دیگری را هم پشتیبانی مینماید. برای مثال دستورات زبان برنامهنویسی ادا توانایی ترجمه به بایت کد و نیز اجرا در این ماشین مجازی را دارا هستند. علاوه بر شرکت سان(که شرکت توسعه دهندهی جاواست که البته این انحصار به شرکت اوراکل واگزار شد ه است)، سایر شرکتها نیز ماشینهای مجازی جاوایی را منتشر نمودهاند. که البته این کار تحت ویژگیهای منتشر شده توسط سان، صورت میپذیرد. همچنانکه تمام حقوق تجاری آن تحت نام جاوا و متعلق به سان است.
جاوا، متبادر کنندهی مفهومی خاص است : یکبار بنویس، همهجا اجرا کن. این مفهوم توسط جیویام، پیادهسازی شده است. جیویام، محیطی برای اجرای برنامههای جاوا می باشد. این ماشین مجازی نرمافزاری است که در لایهی بالایی سختافزار واقعی و سیتمعامل قرار میگیرد.
جیویام جزء حیاتی سکوی جاو است. جیویام، بر روی بسیاری از سختافزارها و سکوهای نرمافزاری قابل نصب است. جاوا با استفاده از بایت کد یکسان برای تمام سکوها، ويژگیای را معرفی می نماید با نام : یک بار ترجمه کن، هرجایی اجرا کن که مخالف با مفایر با یکبار بنویس، همهجا اجرا کن است. چراکه یکبار بنویس ...، دربارهی زبانهای ترجمهشوندهی چند سکویی است.
جیویام، به همراه مجموعهای از کتابخانههای کلاسِ استاندارد توزیع میگردد. این کتابخانهها رابط برنامهنویسی نرمافزار را پیادهسازی مینماید. یک رابط برنامهنویسی نرمافزار، توسط یک سامانهی رایانهای، کتابخانه، یا برنامه برای تبادل داده بین آنها فراهم میگردد. این رابطهای برنامهای، به صورت متناسب و با هم، در محیط زمانِاجرای جاوا (JRE) به صورت یک بسته وجود دارد.
محیط اجرایی[ویرایش]
برنامهایی که میخواهند بر روی جیویام، اجرا شوند، باید در قالبی استاندارد و کد دودویی(باینری )قابل حمل ترجمه شدهباشند که به شکل نقطهکلاس (class.) است. یک برنامه ممکن است شامل تعداد زیادی کلاس در قالب فایلهای مختلف باشد. برای توزیع سادهترِ برنامههای با اندازهی بزرگ، معمولاً این برنامهها را در فایلهایی با قالب .jar٬ (که کوتهنوشت Java archive) ذخیره میگردد.
محیط اجرایی جیویام، فایلهایی با قالب .class یا .jar اجرا مینماید. این کار با استفاده از شبیهسازی مجموعه دستورات جیویام و با از تفسیر نمودن آن صورت میپذیرد. همچنین اجرای برنامه میتواند از طریق ترجمه همزمانِ هاتاسپاتِ جاوا صورت پذیرد. ترجمه همزمانِ٬که در واقع تفسیر نیست، برای دستیابی به سرعتهای بالاتر در نسخههای امروزی جیویام استفاده میگردد. البته برای آن دسته از توسعهگران، که برای سامانههای خاص، نیاز به کد بومی دارند٬ ترجمهی زودهنگام نیز برای جیویام وجود دارد.
ماندد بسیاری از ماشینهای مجازی، ماشین مجازی جاوا، دارای ساختاری مبتنی بر پشته که مبتنی بر ریزپردازنده/ریزکنترلگر اجرا کنندهی آن است .
وظیفهی جیویام به عنوان شیءای از محیط اجرای جاوا، اجرای برنامههای جاوا می باشد. بعد از اتمام اجرای برنامهی جاوا، این شیء به وسیلهی زباله روب، پالایش میشود. ترجمهی همزمان، به عنوان بخش از ماشین مجازی جاوا به منظور افزایش سرعت اجراست. این روش ترجمه، با ترجمهی همزمان بخشهایی که عملکرد یکسانی را دارند و کاهش زمان لازم برای ترجمه، این افزایش سرعت را به ارمغان میآورد.
زبانهای جیویام[ویرایش]
اگرچه جیویام در ابتدا تنها با هدف ترجمهی برنامههای جاوا پا به عرصه گذاشته بود، اما امروزه بسیاری از زبانهای دیگر نیز قادر به اجرای برنامههای خود بر روی آن هستند.[۲] جیویامِ کنونی هیچگونه پشتیبانی از زبانهایی که بررسی نوع در آنها به صورت پویاست نمیکند، چرا که بررسی نوع موجود از نوع ایستاست.[۳] با این وجود از جیویام میتوان به عنوان مفسری برای زبانهایی با بررسی نوع پویا، استفاده نمود.
پشتیبانی از تغییر پویا در کلاسها و متدهادر جیویام به صورت محدود صورت میپذیرد که همان هم تحت محیط عیبیابی است. با این وجود کلاسها و متدها را میتوان به صورت پویا اضافه نمود. از هماکنون طرحی برای پشتیبانی توکار از زبادهای پویا در نگارش هفتم جاوا در دست است.[۴]
|
|
|
| سکوی جاوا |
|
|
|
| فناوریهای سان |
|
|
| فناوریهای سکو |
|
|
| فناوریهای شرکتهای دیگر |
|
|
| تاریخچه |
|
|
| زبانهای برنامهنویسی اصلی |
|
|
| همایشهای جاوا |
|
|