۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

JRE چیست؟ مقدمه ای بر محیط اجرای جاوا

JRE JVM را ایجاد می کند و اطمینان می دهد که وابستگی ها برای برنامه های جاوا شما در دسترس هستند. این نقش حیاتی در تنظیمات devops و ابر ایفا می کند.

JRE JVM را ایجاد می کند و اطمینان می دهد که وابستگی ها برای برنامه های جاوا شما در دسترس هستند. این نقش حیاتی در تنظیمات devops و ابر ایفا می کند.

با هم، کیت توسعه جاوا (JDK)، ماشین مجازی جاوا (JVM) و محیط زمان اجرا جاوا (JRE) یک trifecta قدرتمند از جاوا و Jakarta EE برای توسعه و اجرای برنامه های جاوا. همه آنها با هم کار می کنند تا به توسعه دهندگان اجازه دهند برنامه های جاوا را بسازند و اجرا کنند. من قبلاً JDK و JVM را معرفی کرده‌ام. در این بررسی اجمالی، با JRE، که محیط زمان اجرا برای جاوا است، آشنا می‌شوید.

از نظر عملی، محیط زمان اجرا بخشی از نرم افزار است که برای اجرای نرم افزارهای دیگر طراحی شده است. به عنوان محیط زمان اجرا برای جاوا، JRE شامل کتابخانه های کلاس جاوا، بارگذار کلاس جاوا و ماشین مجازی جاوا است. در این سیستم:

  • class loader مسئول بارگیری صحیح کلاس ها و اتصال آنها با کتابخانه های اصلی کلاس جاوا است.
  • JVM مسئول اطمینان از این است که برنامه‌های جاوا منابع لازم برای اجرا و عملکرد خوب در دستگاه یا محیط ابری شما را دارند.
  • JRE عمدتاً محفظه‌ای برای آن اجزای دیگر است و مسئول هماهنگی فعالیت‌های آنها است.

در بحثی که در ادامه می‌آید، در مورد نحوه کار این مؤلفه‌ها با هم بسیار عمیق‌تر خواهیم کرد.

نصب JDK، JRE، و JVM

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

محیط زمان اجرا چیست؟

یک برنامه نرم افزاری باید اجرا شود، و برای انجام آن، به محیطی برای اجرا نیاز دارد. در گذشته، اکثر نرم افزارها از سیستم عامل (OS) به عنوان محیط زمان اجرا استفاده می کردند. برنامه در داخل هر رایانه ای که روی آن بود اجرا می شد و برای دسترسی به منابع مستقیماً به تنظیمات سیستم عامل متکی بود. منابعی مانند حافظه، دسترسی به دیسک و دسترسی به شبکه. محیط اجرای Java همه اینها را حداقل برای برنامه های جاوا تغییر داد. در مورد جاوا و سایر زبان های مبتنی بر JVM، JRE یک واسطه بین سیستم عامل و برنامه واقعی ایجاد می کند. JRE فایل‌های کلاس را بارگیری می‌کند و یک ماشین مجازی (JVM) راه‌اندازی می‌کند که تضمین می‌کند در بسیاری از سیستم‌عامل‌ها به حافظه و سایر منابع سیستم به شکلی ثابت دسترسی دارید.

WORA برای جاوا

زمانی که برای اولین بار معرفی شد، اصل جاوا “یک بار بنویس، هر جا اجرا شود” انقلابی در نظر گرفته شد. امروزه به عنوان یک هنجار برای بسیاری از سیستم های نرم افزاری، از جمله جاوا اسکریپت و Python پذیرفته شده است.

محیط زمان اجرا جاوا

ما می توانیم به نرم افزار به عنوان مجموعه ای از لایه ها نگاه کنیم که در بالای سخت افزار سیستم قرار دارند. هر لایه خدماتی را ارائه می دهد که توسط لایه های بالای آن استفاده می شود (و مورد نیاز). Java Runtime Environment یک JVM ایجاد می کند که یک لایه نرم افزاری است که در بالای سیستم عامل رایانه اجرا می شود و خدمات اضافی مخصوص جاوا را ارائه می دهد. شکل ۱ این ترتیب را نشان می دهد.

نقشه راه شغلی فناوری اطلاعات: معاون مهندسی

jre diagram

شکل ۱. محیط زمان اجرا جاوا یک JVM ایجاد می‌کند.

JRE تنوع سیستم‌عامل‌ها را صاف می‌کند و تضمین می‌کند که برنامه‌های جاوا می‌توانند تقریباً روی هر سیستم عاملی بدون تغییر اجرا شوند. همچنین خدمات ارزش افزوده ارائه می کند. مدیریت خودکار حافظه یکی از مهمترین خدمات JRE است که تضمین می کند برنامه نویسان مجبور نیستند تخصیص و تخصیص مجدد حافظه را به صورت دستی کنترل کنند.

به طور خلاصه، JRE نوعی سیستم‌عامل متا برای جاوا به همراه سایر زبان‌های JVM است. a> مانند Scala و Groovy. این یک نمونه کلاسیک از انتزاع است که سیستم عامل زیربنایی را به یک پلت فرم ثابت برای اجرای برنامه های جاوا انتزاع می کند.

چگونه JRE با JVM کار می کند

ماشین مجازی جاوا یک سیستم نرم افزاری در حال اجرا است که مسئول اجرای برنامه های جاوا زنده است. JRE جزء نرم افزاری روی دیسک است که کد جاوا کامپایل شده شما را می گیرد (کد با JDK کامپایل می شود)، آن را با کتابخانه های مورد نیاز ترکیب می کند و JVM را برای اجرای آن شروع می کند.

JRE شامل کتابخانه ها و نرم افزارهایی است که برنامه های جاوا شما برای اجرا به آنها نیاز دارند. به عنوان مثال، بارگذار کلاس جاوا بخشی از JRE است. این بخش مهم از نرم افزار کد جاوا را در حافظه بارگذاری می کند و کد را به کتابخانه های کلاس جاوا مرتبط می کند (فرآیندی که به نام پیوند).

در نمای لایه ای که توضیح دادم، JVM توسط JRE ایجاد می شود. از منظر بسته، JRE شامل JVM است، همانطور که در شکل ۲ نشان داده شده است. JVM بخشی از JRE است—بخش فعال و در حال اجرا است که JRE برای میزبانی برنامه ها ایجاد می کند. JRE دارایی های ثابت را می گیرد و آنها را به یک JVM در حال اجرا تبدیل می کند که میزبان برنامه در حال اجرا است.

jw whatisjre fig1

شکل ۲. یک نمای معماری لایه ای نشان می دهد که JRE شامل JVM، کلاس loader و کتابخانه های کلاس جاوا است.

نصب و استفاده از JRE

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

جاوا ۹ پلتفرم جاوا را بازسازی کرد به طوری که JRE اکنون فقط به عنوان بخشی از JDK در دسترس است. وقتی می‌خواهید یک برنامه مصرف‌کننده را ارسال کنید، می‌توانید با استفاده از JLink، یک JRE همراه با برنامه‌های خود تحویل دهید. چنین بسته نرم افزاری شامل تمام اجزای لازم برای اجرای برنامه است. برای اهداف خود، از JRE در داخل JDK استفاده خواهیم کرد. می‌توانید جدیدترین JDK را برای سیستم خود از صفحه Java SE Oracle Windows و macOS نصب‌کننده‌های خودکاری دارند که جزئیات را مدیریت می‌کنند (مانند تنظیم مسیر). در لینوکس، یک گزینه خوب استفاده از SDKMan است. در هر صورت، باید JRE را از خط فرمان خود در دسترس داشته باشید تا بتوانید از دستور java استفاده کنید.

داشبوردهای Steampipe و معیارهایی برای داده های شما

نسخه های JRE

محیط زمان اجرا جاوا برای هر نسخه جدید جاوا به‌روزرسانی می‌شود و شماره نسخه‌های آن با سیستم نسخه‌سازی پلتفرم جاوا همسو می‌شود، بنابراین برای مثال JRE 1.19 Java 19 را اجرا می‌کند.

بسیاری از رایانه‌ها یک JRE توسعه‌یافته برای Java SE را اجرا می‌کنند که می‌تواند هر برنامه جاوا را بدون توجه به نحوه توسعه آن اجرا کند. اکثر دستگاه های تلفن همراه دارای JRE برای جاوا ME هستند که از قبل روی دستگاه تلفن همراه نصب شده است و برای دانلود در دسترس نیست. در آینده، برنامه‌های همراه با JRE خاص خود از طریق JLink عادی خواهند شد.

هنگامی که JDK را دانلود کردید، می توانید با تایپ java -version با JRE موجود در خط فرمان تعامل داشته باشید، که به شما می گوید چه نسخه ای نصب شده است. (در سیستم های POSIX، همیشه می توانید مکان نصب شده را با دستور which java بررسی کنید.)

JRE در devops

JRE در مرحله توسعه چندان قابل توجه نیست، جایی که بیشتر فقط برنامه های شما را در سیستم عامل یا IDE انتخابی شما اجرا می کند. این نقش کمی برجسته‌تر در مدیریت توسعه‌ها و سیستم‌ها دارد زیرا JRE برای نظارت و پیکربندی استفاده می‌شود.

اساساً، JRE «دسته‌هایی» را ارائه می‌کند که می‌توانید برای پیکربندی و کنترل ویژگی‌های یک برنامه جاوا استفاده کنید. استفاده از حافظه نمونه بارز، نان و کره مدیریت سیستم است. در حالی که استفاده از حافظه همیشه مهم است، در پیکربندی های ابری حیاتی است و devops یک رویکرد مبتنی بر ابر برای ساخت و اجرای نرم افزار است. اگر در یک محیط devops کار می‌کنید یا علاقه‌مند به توسعه در devops هستید، بهتر است بدانید که حافظه جاوا چگونه کار می‌کند و چگونه در JRE نظارت می‌شود.

Devops یا sysadmin؟

Devops یک اصطلاح نسبتاً جدید است که چیزی را توصیف می کند که برای دهه ها صادق بوده است، یعنی قابلیت همکاری بین توسعه و عملیات. از این نظر، devops فقط یک روش جدیدتر برای توصیف آنچه قبلاً عملیات یا مدیریت سیستم نامیده می شد است. مانند sysadmin، یکی از جنبه های مهم devops، مدیریت سیستم های لازم برای اجرای نرم افزار است. مدیریت JRE بخشی از مدیریت سیستم هایی است که برنامه های جاوا را اجرا می کنند.

حافظه جاوا و JRE

حافظه جاوا از سه جزء تشکیل شده است: heap، stack و metaspace (که قبلاً permgen نامیده می شد).

  • Metaspace جایی است که جاوا اطلاعات تغییرناپذیر برنامه شما مانند تعاریف کلاس را نگه می دارد.
  • Heap space جایی است که جاوا محتوای متغیر را نگه می دارد.
  • Stack space جایی است که جاوا اجرای تابع و مراجع متغیر را ذخیره می کند.
جمع کننده های جریان: روشی جدید برای دستکاری جریان های جاوا

مدیریت حافظه جاوا از جاوا ۸

تا جاوا ۸، متاسپیس با نام permgen شناخته می‌شد. متاسپیس علاوه بر اینکه نام بسیار جالبی است، تغییر قابل توجهی در نحوه تعامل توسعه دهندگان با فضای حافظه جاوا است. قبلاً از دستور java -XX:MaxPermSize برای نظارت بر اندازه فضای permgen استفاده می‌کردید. از جاوا ۸ به بعد، جاوا به طور خودکار اندازه متاسپیس را افزایش می دهد تا نیازهای متا برنامه شما را برآورده کند. جاوا ۸ همچنین یک پرچم جدید به نام MaxMetaspaceSize معرفی کرد که می توانید از آن برای محدود کردن اندازه متاسپیس استفاده کنید.

پیکربندی فضای پشته

Heap space پویاترین بخش سیستم حافظه جاوا است. می‌توانید از پرچم‌های -Xms و -Xmx استفاده کنید تا به جاوا بگویید که هیپ چقدر بزرگ باشد و چقدر بزرگ شود. درک چگونگی تنظیم این پرچم‌ها برای نیازهای برنامه‌ای خاص، جنبه مهمی از مدیریت حافظه در جاوا است. ایده آل این است که پشته را به اندازه کافی بزرگ کنید تا کارآمدترین جمع آوری زباله را به دست آورید. یعنی می‌خواهید به حافظه کافی اجازه دهید برنامه اجرا شود، اما نمی‌خواهید بزرگ‌تر از حد لازم باشد.

پیکربندی فضای پشته

فضای پشته جایی است که فراخوانی های تابع و مراجع متغیر در صف قرار می گیرند. فضای پشته منبع دومین برنامه نویسی معروف استثنا در جاوا است: StackOverflowError (اولین مورد NullPointerException). استثنای سرریز پشته نشان می‌دهد که فضای پشته تمام شده است زیرا مقدار زیادی از آن رزرو شده است. معمولاً، هنگامی که یک روش یا روش‌ها یکدیگر را به صورت دایره‌ای فراخوانی می‌کنند، یک سرریز پشته دریافت می‌کنید، بنابراین تعداد فزاینده‌ای از فراخوانی‌های تابع را به پشته اختصاص می‌دهند.

شما از سوئیچ -Xss برای پیکربندی اندازه شروع پشته استفاده می کنید. سپس پشته بر اساس نیازهای برنامه به صورت پویا رشد می کند.

نظارت برنامه جاوا

اگرچه نظارت بر برنامه تابعی از JVM است، JRE گزینه‌های پیکربندی را ارائه می‌کند، که پایه ضروری برای نظارت هستند. ابزارهای مختلفی برای نظارت بر برنامه‌های جاوا، از کلاسیک (مانند دستور یونیکس top) تا راه‌حل‌های پیچیده نظارت از راه دور مانند نظارت بر زیرساخت‌های Oracle در دسترس هستند.

در بین این گزینه‌ها، پروفایل‌های بصری مانند VisualVM قرار دارند که امکان بازرسی یک در حال اجرا را فراهم می‌کنند. JVM. این ابزارها ردیابی نشت‌های حافظه و نقاط داغ و همچنین تماشای مصرف کلی حافظه در شما را امکان‌پذیر می‌کنند. سیستم.

نتیجه گیری

Java Runtime Environment برنامه ای روی دیسک است که برنامه های جاوا را برای JVM بارگیری می کند تا اجرا شود. زمانی که JDK را دانلود می‌کنید، یک JRE به‌طور پیش‌فرض گنجانده می‌شود و هر JRE شامل کتابخانه‌های اصلی کلاس جاوا، یک بارکننده کلاس جاوا و یک JVM است. درک نحوه تعامل JVM، JDK و JRE، به ویژه برای کار در محیط های ابری و توسعه دهنده، مفید است. در این محیط‌ها، JRE نقش قوی‌تری در نظارت و پیکربندی نسبت به توسعه برنامه‌های کاربردی جاوا سنتی دارد.