ماشین مجازی جاوا
ماشین مجازی جاوا (به انگلیسی: Java Virtual Machine) که با کوتهنوشت JVM مشخص میشود، مجموعهای از برنامههای نرمافزاری و ساختماندادههایی است که برای یک مدلسازی ماشینی مجازی برای اجرای برنامههای سایر رایانهها و اسکریپتهای دیگر سامانههاُ به کار میرود. مدلی که جیویام برای اجرا میپذیرد، شکلی از زبان میانی را اجرا مینماید. به این زبان میانی جاوا بایت کد اطلاق میگردد. این زبان میانی، به صورتی مفهومی، مجموعهای از دستوراتِ زبان برنامه نویس مبتنی به پشته و معماری قابلیت مبتنی بر امنیت است.سان، ادعا نموده که هم اکنون٬ ۴.۵ میلیارد دستگاه در جهان از جیویام استفاده مینماید.[۱]
محتویات |
[ویرایش] دید کلی
یک ماشین مجازی جاوا، به علاوهی جاوا، زبانهای برنامهنویسی دیگری را نیز پشتیبانی مینماید. برای مثال دستورات زبان برنامهنویسی ادا توانایی ترجمه به بایت کد و نیز اجرا در این ماشین مجازی را دارا هستند. علاوه بر شرکت سان(که شرکت توسعه دهندهی جاواست)، سایر شرکتها نیز ماشینهای مجازی جاوایی را منتشر نمودهاند. که البته این کار تحت ویژگیهای منتشر شده توسط سان، صورت میپذیرد. همچنانکه تمام حقوق تجاری آن تحت نام جاو و متعلق به سان است.
جاوا، متبادر کنندهی مفهومی خاص است : یکبار بنویس، همهجا اجرا کن. این مفهوم توسط جیویام، پیادهسازی شده است. جیویام، محیطی برای اجرای برنامههای جاواست. این ماشین مجازیُ نرمافزاری است که در لایهی بالایی سختافزار واقعی و سیتمعامل قرار میگیرد.
جیویام جزء حیاتی سکوی جاو است. جیویام، بر روی بسیاری از سختافزارها و سکوهای نرمافزاری قابل نصب است. جاوا با استفاده از بایت کد یکسان برای تمام سکوها، ويژگیای را معرفی می نماید با نام : یک بار ترجمه کن، هرجایی اجرا کن که مخالف با مفایر با یکبار بنویس، همهجا اجرا کن است. چراکه یکبار بنویس ...، دربارهی زبانهای ترجمهشوندهی چند سکویی است.
جیویام، به همراه مجموعهای از کتابخانههای کلاسِ استاندارد توزیع میگردد. این کتابخانهها رابط برنامهنویسی نرمافزار را پیادهسازی مینماید. یک رابط برنامهنویسی نرمافزار، توسط یک سامانهی رایانهای، کتابخانه، یا برنامه برای تبادل داده بین آنها فراهم میگردد. این رابطهای برنامهای، به صورت متناسب و با هم، در محیط زمانِاجرای جاوا (JRE) به صورت یک بسته وجود دارد.
[ویرایش] محیط اجرایی
برنامهایی که میخواهند بر روی جیویام، اجرا شوند، باید در قالبی استاندارد و کد دودویی(باینری )قابل حمل ترجمه شدهباشند که به شکل نقطهکلاس (class.) است. یک برنامه ممکن است شامل تعداد زیادی کلاس در قالب فایلهای مختلف باشد. برای توزیع سادهترِ برنامههای با اندازهی بزرگ، معمولاً این برنامهها را در فایلهایی با قالب .jar٬ (که کوتهنوشت Java archive) ذخیره میگردد.
محیط اجرایی جیویام، فایلهایی با قالب .class یا .jar اجرا مینماید. این کار با استفاده از شبیهسازی مجموعه دستورات جیویام و با از تفسیر نمودن آن صورت میپذیرد. همچنین اجرای برنامه میتواند از طریق ترجمه همزمانِ هاتاسپاتِ جاوا صورت پذیرد. ترجمه همزمانِ٬که در واقع تفسیر نیست، برای دستیابی به سرعتهای بالاتر در نسخههای امروزی جیویام استفاده میگردد. البته برای آن دسته از توسعهگران، که برای سامانههای خاص، نیاز به کد بومی دارند٬ ترجمهی زودهنگام نیز برای جیویام وجود دارد.
ماندد بسیاری از ماشینهای مجازی، ماشین مجازی جاوا، دارای ساختاری مبتنی بر پشته که مبتنی بر ریزپردازنده/ریزکنترلگر اجرا کنندهی آن است .
وظیفهی جیویام به عنوان شیءای از محیط اجرای جاوا، اجرای برنامههای جاوا است. بعد از اتمام اجرای برنامهی جاوا، این شیء به وسیلهی زباله روب، پالایش میشود. ترجمهی همزمان، به عنوان بخش از ماشین مجازی جاوا به منظور افزایش سرعت اجراست. این روش ترجمه، با ترجمهی همزمان بخشهایی که عملکرد یکسانی را دارند و کاهش زمان لازم برای ترجمه، این افزایش سرعت را به ارمغان میآورد.
[ویرایش] زبانهای جیویام
| زبان | روی جیویام |
|---|---|
| ارلنگ | ارلجَنگ |
| جاوا اسکریپت | رهینو |
| پیاچپی | کرکس |
| پایتون | جایتون |
| رکس | نترکس |
| روبی | جیروبی |
| تیاسال | جیایسیال |
اگرچه جیویام در ابتدا تنها با هدف ترجمهی برنامههای جاوا پا به عرصه گذاشته بود، اما امروزه بسیاری از زبانهای دیگر نیز قادر به اجرای برنامههای خود بر روی آن هستند.[۲] جیویامِ کنونی هیچگونه پشتیبانی از زبانهایی که بررسی نوع در آنها به صورت پویاست نمیکند، چرا که بررسی نوع موجود از نوع ایستاست.[۳] با این وجود از جیویام میتوان به عنوان مفسری برای زبانهایی با بررسی نوع پویا، استفاده نمود.
پشتیبانی از تغییر پویا در کلاسها و متدهادر جیویام به صورت محدود صورت میپذیرد که همان هم تحت محیط عیبیابی است. با این وجود کلاسها و متدها را میتوانبه صورت پویا اضفه نمود. از هماکنون طرحی برای پشتیبانی توکار از زبادهای پویا در نگارش هفتم جاوا در دست است.[۴]
[ویرایش] منابع
- ↑ http://www.java.com/en/about/ درباره فنآوری جاوا بیشتر بدانیم
- ↑ تولکسدورف, روبرت (۲۰۰۵). "زبانهای مربوط به جیویام". http://www.is-research.de/info/vmlanguages/. Retrieved ۲۰۰۸-۰۶-۰۸.
- ↑ ناتر, چالرز (۲۰۰۷-۰۱-۰۳). "به سمت پویا رفت: آیا مفید است؟". http://headius.blogspot.com/2007/01/invokedynamic-actually-useful.html. Retrieved ۲۰۰۸-۰۱-۲۵.
- ↑ کریل, پاول (۲۰۰۸-۰۱-۳۱). "ماشین داوینچیِ شرکت سان برای پوششگسترده". http://www.infoworld.com/article/08/01/31/davinci-machine_1.html. Retrieved ۲۰۰۸-۰۲-۰۶.
|
|||||||||||||||||||||||||