مفهوم ماشین مجازی جاوا

مفهوم ماشین مجازی جاوا چیست؟در این مقاله بدان خواهیم پرداخت . معنی ماشین مجازی جاوا یا Java Virtual Machine یا به اختصار JVM را داریم .جالب است بدانید که تحقق شعار جاوا بدون بکارگیری ماشین مجازی جاوا محقق نخواهد شد.
شعار جاوا این بود که Write One ,Run Anywhere! .بدین معنی که برنامه را یکبار بنویس و سپس در هر پلتفرمی که خواستید اجرا نمایید.این قابلیت صرفا با بکار گیری JVM فراهم خواهد شد.پس برنامه های تولیدی جاوا برنامه های چند پلتفرمی هستند

دوره آموزش icdll

ماشین مجازی جاوا چیست

آموزشگاه کامپیوتر انقلاب

ماشین مجازی در هر سیستم عاملی وجود دارد .مفهوم ماشین مجازی در واقع یک نرم افزار پیاده سازی شده است.
بنابراین این امکان برای توسعه دهندگان وجود دارد که ماشین مجازی جاوا را بشکل مجزا ایجاد نمایند.بعنوان مثال Dalvic VM یک ماشین مجازی مخصوص سیستم عامل اندروید است.این سیستم عامل توسط گوگل نوشته شده است.
در حقیقت میتوان گفت ماشین مجازی جاوا دو هدف اصلی را بر عهده دارد ;
1. فراهم نمودن محیطی برای اجرای برنامه های جاوا بر روی هر سیستم با هر سیستم عامل
2. مدیریت و بهینه سازی منابع حافظه سیستم در زمان اجرای برنامه جاوا

ماشین مجازی جاوا

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

آموزش تدوین فیلم

چه عملیاتی توسط ماشین مجازی جاوا قابل انجام است؟
• بارگذاری کد ها
• بررسی صحت و درستی کدها
• اجرای کدها
• فراهم نمودن مجیط اجرای برنامه

ماشین مجازی جاوا اختیاراتی دارد که از آن جمله میتوان به تعیین موارد زیر اشاره نمود:
• Memory area یا ناحیه ای از حافظه heap که کلیه داده ها من جمله آرایه ها و آبجکت ها در حین اجرا درون آن ذخیره میشوند.
• فرمت Class file ; این فایل با فرمت class. ذخیره میشود و حاوی بایت کدهای جاوا است.
• حافظه ی heap که آبجکت های بلااستفاده جمع آوری شده با garbage collection در آن نگه داری می شوند.
• خطاهای مهلک را گزارش میکند.

آموزش انیمیشن سازی

چه کسانی جاوا را توسعه میدهند

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

Garbage collection چیست
تا پیش از پیدایش جاوا ،تمامی حافظه ای که برای برنامه باید اختصاص پیدا می کرد توسط برنامه نویس مدیریت می شد .اما پس از پیدایش جاوا این وظیفه بر عهده ماسین مجازی جاوا سپرده شد.JVM منابع را توسط فرایندی بنام Garbage collection مدیریت میکند.این فرایند بصورتی است که دائما در حال رصد میزان حافظه مورد استفاده سیستم است و اگر میزانی از حافظه برای مدت زمان متمادی بلااستفاده باقی بماند آن را رها میکند و آزاد سازی فضا را حاصل میشود. Garbage collectionهمزمان با اجرای JVM شروع به کار میکند.
موتور JVM چطور منابع سیستمی را مدیریت میکند؟

آموزش حرفه ای افترافکت

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

معماری داخل ماشین مجازی جاوا از مورادی چون موارد ذکر شده تشکیل شده اند : classloader، memory area، execution engine و … که در ادامه به بررسی آن ها خواهیم پرداخت.برای درک بهتر این موضوع که ماشین مجازی جاوا چیست ، بهتر است با ساختار داخلی آن آشنا شویم.

معماری داخلی JVM

Classloader

Classloader زیر سامانه برنامه ماشین مجازی است و کلاس فایل هایی که حاوی کد بایت های جاوا هستند و را در ناحیه ای بنام runtime data area یا مکان داده های زمان اجرا ذخیره مینماید.

Class (Method) Area / ناحیه ی ذخیره ی اطلاعات کلاس
ناحیه ای برای ذخیره ساختارهای اختصاصی نظیر مجموعه ثوابت زمان اجرا ،فیلدها ،داده ها و کدهای مربوط به متد ها

دوره آموزش اتوکد سه بعدی

Stack (پشته)
پشته ناحیه ای است در حافظه که فریم ها را در خود ذخیره میکند.پشته ها به ناحیه ای از حافظه از حافظه گفته میشود که داده ها را بصورت ایستا و در زمان کامپایل درون خود ذخیره میکند.پشته ها نتایج جزئی و متغیرهای محلی را نگهداری و در زمان فراخوانیمتد ها و بازگردانی خروجی آن از متد ،نقش دارد.با هر بار فراخوانی متد یک فریم جدید ساخته شده و زمانی که فراخوانی متد پایان یافت Frame مربوطه حذف میگردد.
Native method stack (حافظه پشته حامل متدهای native)
حاوی تمامی متدهای native که در اپلیکیشن بکار رفته اند، است.

HEAP
ناحیه ای است در حافظه که تمامی آبجکت ها در زمان اجرا در آن ذخیره می شوند.

Program Counter Register (شمارنده ی برنامه)
حافظه ای در پردازنده سیستم با دسترسی سریع و آسان که آدرس دستوری از برنامه JVM که در زمان اجرا مورد مصرف قرار گرفته را در خود نگه میدارد.

آموزشگاه معماری

Execution Engine (موتور اجرا کننده)
موتور اجرا کننده شامل سه بخش است که عبارتند از :
• یک پردازنده مجازی : یک cpu فیزیکی که مختص دستگاه مجازی است
• مفسر : وظیفه خواندن زبان میانی و تبدیل آن به بایت کد را بر عهده دارد.پدستورات پس از خوانده شدن اجرا میگردند.
• ترجمه و کامپایل در لحظه JIT : این واحد به جهت افزایش سرعت و بالا بردن کارایی نقش دارد .JLT بخش هایی از بایت کدها که کارایی و قابلیت های یکسانی دارند را بطور همزمان ترجمه کرده و بدین صورت زمان مورد نیاز برای کامپایل کدهای بسیاری را کاهش میدهد. منظوز از کامپایلر در اینجا، مترجمی است که مجموعه دستورات jvm را به کد یا دستورات قابل فهم برای پردازنده/cpu دستگاه میزبان تبدیل می کند.

دوره آموزش تری دی مکس

0 پاسخ

پاسخ دهید

میخواهید به بحث بپیوندید؟
مشارکت رایگان.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *