محیط اجرایی جاوا (Java Runtime Environment) چیست؟
محیط اجرایی جاوا (Java Runtime Environment یا JRE) نرمافزاری است که برنامههای جاوا برای اجرای صحیح خود به آن نیاز دارند. جاوا یک زبان برنامهنویسی است که بسیاری از برنامههای وب و موبایل امروزی را پشتیبانی میکند. JRE فناوری زیرساختی است که بین برنامه جاوا و سیستم عامل ارتباط برقرار میکند و بهعنوان مترجم و تسهیلکننده عمل میکند و تمامی منابع لازم را فراهم میکند تا وقتی نرمافزار جاوا نوشته شد، بتواند روی هر سیستم عاملی بدون نیاز به تغییرات بیشتر اجرا شود.
چرا JRE اهمیت دارد؟
هر برنامه نرمافزاری نیاز به یک محیط اجرایی دارد که دسترسی به حافظه و سایر منابع سیستم مانند فایلهای برنامه و وابستگیها را فراهم کند. در گذشته، بیشتر نرمافزارها مستقیماً از سیستم عامل به عنوان محیط اجرایی خود استفاده میکردند، اما این به معنای آن بود که توسعهدهندگان باید برای هر سیستم عاملی که میخواستند برنامههایشان روی آن اجرا شود، کد جداگانهای مینوشتند. فناوری JRE به عنوان راهحلی برای این مشکل ایجاد شد.
در واقع، JRE یکی از سه مؤلفه اصلی پلتفرم جاوا است که برای اجرای موفق هر برنامه جاوا لازم است. دو مؤلفه دیگر، کیت توسعه جاوا (JDK) و ماشین مجازی جاوا (JVM) هستند.
کیت توسعه جاوا (JDK) مجموعهای از ابزارهای نرمافزاری است که برای توسعه برنامههای جاوا مورد استفاده قرار میگیرد. با دانلود و نصب آن میتوانید JDK را در محیط توسعه خود راهاندازی کنید. نسخه JDK باید با نسخه جاوایی که میخواهید استفاده کنید مطابقت داشته باشد. برای مثال، جاوا نسخه استاندارد یا Java SE به JDK مربوط به Java SE نیاز دارد.
ماشین مجازی جاوا (JVM) نرمافزاری است که برنامه جاوا را خط به خط اجرا میکند. توسعهدهندگان تنظیمات JVM را پیکربندی میکنند تا منابع برنامه هنگام اجرای برنامه جاوا مدیریت شوند. برای مثال، میتوانید تنظیمات حافظه JVM را تغییر دهید و بررسی کنید که برنامههای جاوای شما در زمان اجرا چه مقدار حافظه داخلی استفاده میکنند.
نقش JRE در زبان برنامهنویسی جاوا چیست؟
JRE کدهای جاوایی که توسط JDK ایجاد شدهاند را با کدهای داخلی و آمادهای به نام کتابخانهها ترکیب میکند و سپس نمونهای از JVM یا نسخه محلی ایجاد میکند که نهایتاً برنامههای جاوا را اجرا میکند. JVMها برای سیستم عاملهای مختلف موجود هستند و JRE یک نسخه واحد از کدهای جاوای شما ایجاد میکند که روی همه انواع JVMها اجرا میشود. به این ترتیب، JRE استقلال پلتفرم برای برنامههای جاوا را فراهم میکند و میتوانید یک بار بنویسید و در هرجا اجرا کنید.
تفاوت بین JRE، JVM و JDK در چیست؟
JDK یک لایه نرمافزاری بالاتر از JRE است که شامل کامپایلر، اشکالزدا و سایر ابزارهای معمول در محیط توسعه نرمافزار است. شما در JDK کدی با دستور زبان شبیه به انگلیسی مینویسید و JDK آن را کامپایل کرده و کد بایت را به JRE میسپارد. در مقابل، JRE شامل کتابخانههای کلاس، فایلهای پشتیبان و JVM است و از این مؤلفهها برای اجرای کد بایت روی هر دستگاه استفاده میکند.
چگونه JRE کار میکند؟
محیط اجرایی جاوا روی سیستم عامل اجرا میشود و منابع خاص جاوا را فراهم میکند. JDK و JRE با یکدیگر تعامل دارند تا محیط اجرایی پایداری ایجاد کنند که فایلهای برنامه جاوا را روی هر دستگاه اجرا کند. JRE از سه مؤلفه اصلی برای انجام کار خود استفاده میکند:
ClassLoader:
کتابخانههای کلاس جاوا شامل مجموعهای از کدهای آماده هستند که میتوانید هر زمان نیاز بود آنها را فراخوانی کنید. این کار وظیفه توسعهدهندگان جاوا را ساده میکند و متدهای از پیش تعریف شده برای کارهای رایج و غیرساده مانند گرفتن ورودی از کاربران و نمایش خروجی به آنها فراهم میکند. ClassLoader جاوا تمام فایلهای کلاس لازم را به صورت پویا در JVM بارگذاری میکند.
JDK:
Bytecode verifier دارای کامپایلری است که کد شبیه به انگلیسی شما را به نسخهای از زبان ماشین به نام بایتکد جاوا تبدیل میکند. بایتکد ورایر در JRE قبل از بارگذاری کد در JVM فرمت و صحت کد جاوا را بررسی میکند. برای مثال، اگر کد به یکپارچگی سیستم یا حقوق دسترسی تجاوز کند، JRE فایل کلاس را بارگذاری نخواهد کرد.
Interpreter:
پس از بارگذاری موفق بایتکد، مفسر جاوا نمونهای از JVM ایجاد میکند که برنامه جاوا را روی ماشین زیرین اجرا میکند.
JRE چه اجزایی دارد؟
علاوه بر مؤلفههای اصلی، محیط اجرایی جاوا شامل چندین مؤلفه نرمافزاری دیگر است که به اجرای مؤثرتر برنامههای جاوا کمک میکنند. برای مثال، ابزارهای توسعه مانند کیتهای رابط کاربری که برای بهبود کیفیت برنامهها استفاده میشوند، تکنولوژیهای انتشار که فرایند ارائه تغییرات نرمافزاری به کاربران را ساده میکنند و کتابخانههای زبان و ابزار که شامل مجموعهای از بستههای کلاس جاوا برای مدیریت، نظارت و نسخهبندی هستند، از جمله این مؤلفهها هستند. برخی کتابخانههای یکپارچهسازی مانند Java IDL، JDBC و JNDI نیز به توسعهدهندگان کمک میکنند تا ارتباط دادهای یکپارچه بین خدمات و برنامهها ایجاد کنند.