مجلسه رستورانی

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

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

کلاس آموزش جاوا اسکریپت

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

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

کلاس آموزش وردپرس

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

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

دوره آموزش جوملا

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

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

کلاس آموزش php

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

توسعه دهندگان جاوا در سراسر دنیا بصورت سازمانی و یا بصورت متن باز آن را توسعه میدهند.به عنوان مثال پروژه 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 / ناحیه ی ذخیره ی اطلاعات کلاس
ناحیه ای برای ذخیره ساختارهای اختصاصی نظیر مجموعه ثوابت زمان اجرا ،فیلدها ،داده ها و کدهای مربوط به متد ها

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

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

دوره آموزش افترافکت

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

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

کلاس آموزش پریمیر

مقالات گوناگون