وبلاگ

‌ماشین مجازی جاوا چیست و چه کاربردی دارد؟

ماشین مجازی جاوا (Java Virtual Machine) که به صورت اختصار JVM نامیده می‌شود یکی از پر کاربردترین اصطلاحات دنیای نرم‌افزار است. ماشین مجازی جاوا یک ماشین مجازی است که به یک کامپیوتر اجازه می‌دهد برنامه‌های جاوا و برنامه‌های نوشته شده به سایر زبان‌های کامپایل شده به بایت‌کد جاوا را اجرا کند. به بیان دیگر، ماشین مجازی جاوا مجموعه‌ای مشتکل از برنامه‌های نرم‌افزاری و ساختارهای داده‌ای است که برای مدل‌سازی ماشینی مجازی و اجرای برنامه‌های سایر رایانه‌ها و اسکریپت‌های دیگر سامانه‌ها استفاده می‌شود.

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

یک ماشین مجازی جاوا، علاوه بر جاوا، زبان‌های برنامه‌نویسی دیگری را هم پشتیبانی می‌نماید. برای مثال دستورات زبان برنامه‌نویسی Ada توانایی ترجمه به بایت کد و اجرا در این ماشین مجازی را دارند. علاوه بر شرکت سان که توسعه دهنده جاوا است، سایر شرکت‌ها نیز ماشین‌های مجازی جاوایی را منتشر نموده‌اند؛ که البته این کار تحت ویژگی‌های منتشر شده توسط سان، انجام می‌شود. به همین دلیل تمام حقوق تجاری آن تحت نام جاوا و متعلق به سان است. جاوا، بر مبنای شعار معروف یکبار بنویس، همه‌جا اجرا کن طراحی شد. این مفهوم در ماشین مجازی جاوا نیز به کار گرفته شده است. همان‌گونه که اشاره شد ماشین مجازی جاوا محیطی برای اجرای برنامه‌های جاوا است. این ماشین مجازی نرم‌افزاری است که در لایه بالایی سخت‌افزار فیزیکی و سیتم‌عامل قرار می‌گیرد. به همین دلیل ماشین مجازی جاوا  مولفه زیربنایی سکوی جاوا است. ماشین مجازی جاوا روی بسیاری از سخت‌افزارها و سکوهای نرم‌افزاری قابل نصب است. جاوا با استفاده از بایت کد یکسان برای تمام سکوها، ویژگی‌ معروف یک بار ترجمه کن، هرجایی اجرا کن را مطرح کرد که در مغایرت با شعار یکبار بنویس، همه‌جا اجرا کن است. چراکه یکبار بنویس …، درباره زبان‌های ترجمه‌شونده چند سکویی کاربرد دارد. ماشین مجازی جاوا به همراه مجموعه‌ای از کتابخانه‌های کلاس استاندارد توزیع می‌گردد. این کتابخانه‌ها رابط برنامه‌نویسی نرم‌افزار را پیاده‌سازی می‌کند. یک رابط برنامه‌نویسی نرم‌افزار، توسط یک سامانه رایانه‌ای، کتابخانه یا برنامه برای تبادل داده بین آن‌ها فراهم می‌گردد. این رابط‌های برنامه‌ای، به صورت متناسب و با هم در محیط زمان ‌اجرای جاوا (JRE) به صورت یک بسته وجود دارد.

محیط اجرایی

برنامه‌هایی که قرار است روی ماشین مجازی جاوا اجرا شوند باید در قالبی استاندارد و کد دودویی قابل حمل ترجمه شده باشند که به شکل نقطه‌کلاس (class.) است. یک برنامه ممکن است شامل تعداد زیادی کلاس در قالب فایل‌های مختلف باشد. برای توزیع ساده‌تر برنامه‌های با اندازه بزرگ، معمولاً این برنامه‌ها در فایل‌هایی با فرمت فایلی .jar، ( Java archive) ذخیره می‌شوند. محیط اجرایی ماشین مجازی جاوا، فایل‌هایی با قالب .class یا .jar اجرا می‌کند. این‌کار با استفاده از شبیه‌ساز مجموعه دستورها ماشین مجازی جاوا و با از تفسیر آن انجام می‌شود. همچنین اجرای برنامه می‌تواند از طریق ترجمه همزمان هات‌اسپات جاوا انجام شود. همانند بسیاری از ماشین‌های مجازی، ماشین مجازی جاوا، دارای ساختاری مبتنی بر پشته و مبتنی بر ریزپردازنده اجرا کننده آن است. وظیفه ماشین مجازی جاوا عنوان شی‌ای از محیط اجرای جاوا، اجرای برنامه‌های جاوا است. بعد از اتمام اجرای برنامه جاوا، این شیء به وسیله Garbage Collection جمع‌آوری می‌شود. ترجمه همزمان، به عنوان بخشی از ماشین مجازی جاوا برای افزایش سرعت اجر ااست. این روش ترجمه، با ترجمه همزمان بخش‌هایی که عملکرد یکسانی را دارند و کاهش زمان لازم برای ترجمه، این افزایش سرعت را به ارمغان می‌آورد.

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

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