مفهوم و کاربرد ماشین مجازی جاوا

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

دوره آموزش آی سی دی ال

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

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

آموزشگاه icdl در شرق تهران

دو هدف اصلی از ماشین مجازی جاوا عبارت است از ;
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 یا مکان داده های زمان اجرا ذخیره مینماید.

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

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

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

کلاس آموزش after effect

HEAP
قسمتی برای ذخیره نمودن تمامی ابجکت ها

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

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

0 پاسخ

پاسخ دهید

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

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

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