در دو سه مقاله قبلی در مورد JDK و JVM صحبت کردیم و گفتیم چی هستند اما یک واژه جدید داریم با عنوان JRE که آشنا نیست و در این مقاله میخواهیم فرق JDK و JRE چیست؟ و تفاوت آنها با JVM رو مورد بررسی قرار دهیم. ابتدا توضیح میدهیم که JRE در جاوا چیست و چه کاربرد دارد و در ادامه فرقش با JDK و JVM رو کامل توضیح میدهیم. پیشنهاد میکنم ابتدا مقاله همه چیز در مورد ماشین مجازی جاوا – دانلود Netbeans With JDK زیر رو مطالعه کنید و بعد از مطالعه این دو مقاله بیایید و این مقاله رو بخونید. در این مقاله به صورت کامل و دقیق گفتیم JVM و چه رابطه ای با JDK دارد.
قبل از اینکه شروع به جواب دادن سوال JRE در جاوا چیست کنیم یک مقدار از مقاله قبلی رو در اینجا بیاوریم که متوجه شید JVM و JDK چی هستند بعد به سراغ JRE میرویم.
JVM چیست ؟
برای اجرای برنامه های کامپایل شده به زبان جاوا نیاز به برنامه یا ماشینی داریم که به آن ماشین مجازی جاوا (JVM) می گویند. زمانی که در مورد اپلیکشینهای جاوا صحبت میکنیم، حتما میبایست JVM بر روی ماشین شما نصب باشد تا قابلیت اجرا شدن داشته باشد.
JVM وظایف اصلی زیر را اجرا می کند:
- باگذاری کد
- بررسی صحت و درستی کد
- اجرای کد
- ارائه ی بستر اجرا (runtime environment)
JDK چیست؟
یکی از سوالتی که فکر کاربران رو درگیر خود کرده، اینست که JDK در جاوا چیست؟ JDK مخفف Java Development Toolkit است. ترکیبی از کامپایلر زبان جاوا، کلاس های کتابخانه ای (Java Class Libraries)، ماشین مجازی جاوا و فایل راهنمای آنها می باشد. برای اینکه ما بتوانیم با استفاده از زبان برنامه نویسی جاوا، کدنویسی کنیم و برنامه بنویسیم باید حتما JDK رو نصب کنیم.
حال که متوجه شدیم JVM و JDK چی هستند به سراغ JRE میرویم. حتما حتما مقاله همه چیز در مورد ماشین مجازی جاوا – دانلود Netbeans With JDK را مطالعه کنید.
JRE در جاوا چیست
JRE سرنام واژگان Java Runtime Environment به معنای محیط یا بستر اجرای برنامه ی جاوا می باشد. همان طور که از اسم آن پیداست، runtime environment محیط اجرا برنامه های جاوا را فراهم می کند. JRE پیاده سازی JVM بوده و به طور فیزیکی وجود دارد. همچنین دربردارنده ی مجموعه ای از کتابخانه ها و سایر فایل های مورد نیاز JVM می باشد. پیاده سازی های حقیقی از JVM ها را علاوه بر Sun Micro، شرکت های دیگر نیز به صورت مداوم و بروز منتشر می کنند.
JRE شامل اجزای زیر است:
- فناوریهای توزیع: شامل توزیع، جاوا وب استارت و جاوا پلاگین.
- کیت ابزارهای رابط کاربری: شامل کیت ابزار پنجره مجرد AWT، سوئینگ، جاوا 2D، دسترسی، I/O تصویر، خدمات پرینت، صدا، درگ اند دراپ DnD و متدهای ورودی.
- کتابخانههای یکپارچهسازی: شامل زبان تعریف رابط IDL، اتصالات پایگاه داده جاوا JDBC، رابط دایرکتوری و نامگذاری جاوا JNDI، فراخوانی متدها از راه دور RMI، پروتکل فراخوانی متدها از راه دور بر روی اینترنت RMI-IIOP و اسکریپت نویسی.
- کتابخانههای پایهای دیگر: شامل پشتیبانی بینالمللی، ورودی/ خروجی I/O، مکانیسم گسترش، بینز، اکستنشنهای مدیریت جاوا JMX، رابط بومی جاوا JNI، ریاضی، شبکهبندی، مکانیسم Override، امنیت، سریالسازی و جاوا برای پردازش XML (XML JAXP).
- کتابخانههای بر اساس Lang و util که شامل Lang و util، مدیریت، نسخه بندی، zip، ابزارها، بازتاب، مجموعهها، کاربردهای همزمانی، آرشیو جاوا Jar، گزارش دهی، API ترجیحی، اشیای ارجاعی و عبارتهای Regular میشود.
- ماشین مجازی جاوا JVM شامل کلاینت هات اسپات جاوا و ماشینهای مجازی سرور میشود.
JRE چگونه عمل میکند؟
برای درک نحوه عملکرد JRE به سورسفایل جاوا که به نام Example.java ذخیره شده است نگاهی میاندازیم این فایل بهصورت مجموعهای از بایت کدها کامپایل شده است که در یک فایل.class ذخیره شده است. در اینجا نام آن Example.class خواهد بود.
نمودار زیر آنچه در زمان کامپایل رخ میدهد را نشان میدهد.
اعمال زیر در زمان اجرا اتفاق میافتند:
لودکننده کلاس
لودکننده کلاس همه کلاسهای موردنیاز برای اجرای یک برنامه را لود میکند. این جزء با جدا کردن فضاهای نام سیستم فایل محلی از آنهایی که از شبکه وارد شدهاند امنیت کلاس را تضمین میکند. این فایلها یا از روی دیسک لود میشوند یا شبکه و یا دیگر منابع.
بررسیکننده کد بایت
JVM کد را در اختیار بررسیکننده کد بایت قرار میدهد تا فرمت آن را بررسی کند و کدهای غیر معتبر را شناسایی کند. برای مثال کدهای غیر معتبر کدهایی هستند که حق دسترسی بر روی اشیا را نقض میکنند یا از پیادهسازی اشارهگرها تخطی میکنند. بررسیکننده کد بایت تضمین میکند که کد خصوصیات موردنظر JVM را دارد و یکپارچگی سیستم را به خطر نمیاندازد.
مفسر
در زمان اجرا کد بایت لود میشود و توسط مفسر بررسی و اجرا میشود. مفسر این دو کارکرد را دارد:
- اجرای کد بایت
- ایجاد فراخوانهای متناسب با سختافزاری که روی آن اجرا میشود.
هر دو عملکرد در تصویر زیر مشخص هستند:
برای درک تعاملهای بین JDK و JRE نمودار زیر را ببینید:
JVM چگونه عمل میکند؟
JVM نمونهای از JRE در زمان اجزای یک برنامه جاوا است. معمولاً به نام مفسر زمان اجرا شناخته میشود. JVM به طور عمده به انتزاع پیادهسازی درونی برنامهنویسانی کمک میکند که از کتابخانههای JDK استفاده میکنند.
نکته مهم: JVM، JRE و JDK وابسته به پلت فرم هستند چرا که تنظیمات و کانفیگ هر سیستم عامل متفاوت است. با این حال خود Java به هیچ بستر اجرایی وابستگی ندارد و کدهای نوشته شده با آن در تمامی پلت فرم ها قابل اجرا می باشد.
برای درک درست این موضوع پیشنهاد میکنم تصویر زیر رو مشاهنده کنید:
دیدگاه کاربران
تعداد دیدگاه های کاربران : 10 دیدگاهسلام از اینکه اجازه میدهید دیگران نظرات شان را باز گو کنندبسیار ممنونم ،54سال سن دارم مشتاق برنامه نویسی اندروی توضیحات شما بسیار خوب می باشد دراصل تفهیمی است موفق هستید بیشتر بدرخشید
سلام
خواهش میکنم
ممنون از لطف شما آقا علی
موفق باشید
سلام وقتتون بخیر
بنظرم وبسایت و مقالات خیلی خوبی دارید اما ۳تا مشکل اصلی رو من از نظر خودم دوست داشتم بگم بهتون:
۱- لحنی که مینویسید نه محاوره ای هستش و نه کتابی!و این زیاد جالب نیست
۲-غلط های املایی زیادی دارید گاهی اوقات
۳-بعضی مواقع پیچیده توضیح میدید و کاربر درک نمیکنه موضوع رو
خسته نباشید
سلام
وقت بخیر
ممنون از نظر شما
حتما استفاده می کنیم از نظرتون
.
1- موضوع یک
کتابی نوشتن که کلا برای سایت های مثل ما خوب نیست عزیز
اما اگر خیلی خودمونی هم بنویسیم خزنده های گوگل دچار مشکل میشن و دیگه ما رو تو نتایج نشون نمیدن
سعی می کنیم این وسط جلو بریم
که متن ها زیاد کتابی نباشند و گوگل هم قابلیت خوندشون رو داشته باشه
.
2- موضوع دو
غلط املایی راسیتش شاید بعضی وقت ها از دستمون در بره
ولی تازگیا چند بار میخونیم و مشکلات رو رفع می کنیم
بازم مقالات قبلی رو حتما بررسی می کنیم و درستشون می کنیم
.
3- موضوع سه
سایت ما معرف هستش به سادگی گویی و ساده سازی
تعجب می کنم میگید پیچیده توضیح میدید
.
بازم ممنون از نظرتون
اصلا نمیفهمم jreرو
سلام
وقت بخیر
بستر اجرای برنامه ی جاوا رو jre میگن
خیلی خیلی ساده هستش
مرسی
برای تعامل jdk.ire
کیت توسعه جاواکه همان jdkاست محیط کامپایل درآن انجام میشود،بایت کدمیکنه برای محیط jvm که پلتفرم مخصوص جاوااونجاتنظیم شده ((سیستم میزبانی که کدجاوامیپذیرد))که اونجا کدهادرزمانی معین برای سیستم میزبان کامپایل میشوندوبعددرjre اجرامیشوند.
ومابرنامه جاوارادرسیستم میبینیم.
اینارومن درست فهمیدم؟؟؟؟
سیستم میزبان که برای اینکه جاواروبفهمه jvm نصب کرده که اونجاازکتابخونهاوابزارهابرای فهمیدن کدهای صفرویک شده استفاده میکنه.
آیادرسته؟؟؟؟
سلام خسته نباشید.ی نگاه به خلاصه نویسی من بندازیدببینیددرسته؟؟؟
1.jvm جزعی از jdk است.
2.jre بستر اجرای جاواست،که فایل جاوابه بایت کدتبدیل میکنه باپسوند .class
بعدلودمیکند که بایت کد کدهاروبررسی میکنه وکداشتباه روحذف میکنه،
3.که درهمان زمان اجرا مفسرهم بررسی واجرامیکنه.
که فراخوان درستی برای سخت افزارماژن رااجرامیکند،چون برنامه جاواپلتفری که توش کدنویسی شده براش مهمه .
همچنین شبکه.
سلام
تقریبا درسته دوست عزیز