Что такое JRE? Введение в среду выполнения Java


Java Development Kit (JDK), виртуальная машина Java (JVM) и среда выполнения Java (JRE) вместе образуют мощное сочетание компонентов платформы Java для разработки и запуска приложений Java. Ранее я писал о JDK и JVM, а в этом кратком руководстве вы узнаете о JRE, или что такое среда выполнения Java.

Фактически, среда выполнения - это программа, которая предназначена для запуска другого программного обеспечения. Среда выполнения для Java, JRE содержит библиотеки классов Java, загрузчик класса Java и виртуальную машину Java. В этой системе

  • Загрузчик классов отвечает за правильную загрузку классов и соединение их с основной библиотекой классов.

  • JVM не несет ответственность за обеспечение Java-приложения ресурсами, они должны работать и выполняться в вашем устройстве или облачной среде.

  • JRE, в основном, служит контейнером для других компонентов, и отвечает за организацию их деятельности.

Мы углубимся в то, как эти компоненты работают вместе в следующих разделах.

Установка JDK, JRE и JVM

В любое время можно скачать пакет JDK, он будет включать в себя совместимости с версией JRE, а JRE будет включать по умолчанию JVM. Вы также можете скачать JRE отдельно от JDK, и вы можете выбрать из множества Jvm. Значения по умолчанию хорошо работают для большинства реализаций, особенно когда вы начинаете учиться Java.

Что такое среда выполнения?

Программа должна выполняться, и для этого ей нужна среда для работы. Среда выполнения загружает файлы классов и обеспечивает доступ к памяти и другим системным ресурсам для их запуска. В прошлом большинство программ использовали операционную систему (ОС) в качестве среды выполнения. Программа запускалась внутри любого компьютера, на котором она была, но полагалась на настройки операционной системы для доступа к ресурсам. Ресурсами в этом случае будут такие вещи, как память, программные файлы и зависимости. Среда выполнения Java изменила все это, по крайней мере, для программ Java.

WORA для Java

Когда был впервые представлен принцип Java "Написано один раз – выполняется везде", он считался революционным, но сегодня принят в качестве нормы для большинства программных систем.

Среда выполнения Java

Мы можем рассматривать программное обеспечение как ряд слоев, которые сидят поверх оборудования. Каждый слой предоставляет сервисы, которые будут использоваться (и необходимы) слоями над ним. Среда выполнения Java - это программный уровень, который работает поверх операционной системы компьютера, предоставляя дополнительные службы, специфичные для Java.

JRE сглаживает разнообразие операционных систем, гарантируя, что программы Java могут работать практически на любой ОС без изменений. Он также предоставляет дополнительные услуги. Автоматическое управление памятью является одним из наиболее важных сервисов JRE, гарантируя, что программистам не придётся вручную контролировать выделение и перераспределение памяти.

Короче говоря, JRE является своего рода meta-OS для программ Java. Это классический пример абстрагирования, абстрагирования базовой операционной системы в согласованное платформа для запуска Java-приложений.

Как JRE работает с JVM

JRE - это система, которая берет Ваш код Java, объединяет его с необходимыми библиотеками и запускает JVM для его выполнения.

JRE содержит библиотеки и программное обеспечение, необходимые для работы программ Java. Как пример, Ява загрузчик класса является частью среды выполнения Java. Эта важная часть программного обеспечения загружает скомпилированный код Java в память и соединяет код с соответствующими библиотеками классов Java.

В слоистом виде, который я только что описал, JVM создается JRE. С точки зрения пакета JRE содержит JVM, как показано на рисунке ниже



В то время как есть концептуальная сторона JRE, в реальной практике это просто программное обеспечение, установленное на компьютере, целью которого является запуск программ Java. Как разработчик, вы будете в основном работать с JDK и JVM, потому что это компоненты платформы, которые вы используете для разработки и запуска программ Java. Как пользователь приложения Java, вы были бы более вовлечены в JRE, что позволяет запускать эти программы.

В большинстве случаев, ваш компьютер будет поставляться с уже установленной Java, и JRE будет включен. Если вам когда-нибудь понадобится, чтобы вручную установить или обновить, вы можете скачать текущую версию JRE от Oracle.

Версии JRE

Среда выполнения Java обновляется для каждой новой версии Java, и ее номера версий совпадают с системой управления версиями платформы Java, так например jre 1.8 выполняет Java 8. В то время как у вас есть множество пакетов JDK на выбор (например, Enterprise Edition или Standard Edition), это не относится к JRE. Большинство компьютеров используют JRE, разработанный для Java SE, который может запускать любое приложение Java независимо от того, как оно было разработано. Большинство мобильных устройств поставляются с JRE для Java ME, который предварительно установлен на мобильном устройстве и не доступен для загрузки.

Как только JRE установится, вы можете взаимодействовать с ним в командной строке, введя java -version, который расскажет вам, какие версии установлены. В POSIX-системах, вы всегда можете проверить установку с помощью which java.

JRE в DevOps

JRE не очень заметен на этапе разработки, где он в основном просто запускает ваши программы в ОС или IDE по вашему выбору. JRE играет немного более заметную роль devops и администрирование систем, потому что он используется для мониторинга и конфигурации.

В основном, JRE предоставляет "ручки", которые вы использовали бы для настройки и управления характеристиками приложения Java. Использование памяти является ярким примером. Использование памяти всегда важно, например в облачных конфигурациях, а devops-это облачная технология. Если вы работаете в среде devops или заинтересованы в развертывании devops, лучше понять, как работает память Java и как она отслеживается в JRE.

Devops или sysadmin?

Концепция DevOps - это новый термин, но он описывает то, что было правдой в течение многих десятилетий, что взаимодействие между группами разработки и эксплуатации. В этом смысле концепция DevOps - это просто новый термин для того, что раньше называлось операций или систем управления. Как и sysadmin, важным аспектом devops является администрирование систем, необходимых для выполнения программного обеспечения. Управление JRE является частью управления системами, которые запускают приложения Java.

Память Java и JRE

Память Java состоит из трех компонентов: heap, stack и metaspace (который ранее назывался permgen).

  • Metaspace, где Ява держит свои программы неизменных информация как определения классов.

  • Пространство кучи (heap), где Ява держит переменные.

  • Пространство стека (stack), где Java сохраняет функции исполнения и ссылки на переменные.

Управление памятью в Java 8

До Java 8, metaspace был известен как permgen. Ранее, вы должны использовать команду java -XX:MaxPermSize , чтобы контролировать размер permgen пространства. В Java 8 и выше, Java автоматически увеличивает размер metaspace для того чтобы приспособить Мета-потребности вашей программы. В Java 8 также введен новый флаг MaxMetaspaceSize, который может использоваться, чтобы ограничить размер metaspace.

Другие параметры памяти, куча и стек, остаются теми же в Java 8.

Настройка пространства кучи

Пространство кучи является наиболее динамичной частью памяти системы Java. Можно использовать -Xms и -Xmx флаги. Понимание того, как настроить эти флаги для конкретных потребностей программы является важным аспектом управления памятью в Java. Идеал состоит в том, чтобы сделать кучу достаточно большой, чтобы достичь наиболее эффективной сборки мусора. То есть, чтобы достаточно памяти, чтобы позволить программе работать, но не больше, чем необходимо.

Настройка пространства стека

Пространство стека, где вызовы функций и переменных ссылки ставятся в очередь. Пространство стека является источником второй самой печально известной ошибки в программировании Java: исключение переполнения стека (первое является нулевым исключением указателя). В переполнение стека исключений указывает на то, что у вас нет места в стеке, потому что слишком много было зарезервировано. Обычно вы получаете переполнение стека, когда метод или методы вызывают друг друга циклическим образом, тем самым посвящая постоянно растущее число вызовов функции в стек.

Вы используйте -Xss переключатель, чтобы настроить стек начальный размер. Затем стек динамично растет в соответствии с потребностями программы.

Мониторинг приложений Java

Хотя мониторинг приложений является функцией JVM, JRE предоставляет параметры конфигурации, которые являются необходимыми базовыми вещами для мониторинга. Различные инструменты доступны для мониторинга Java-приложений, от классики (вроде команд Unix top) до сложных решений дистанционного контроля от Oracle для мониторинга инфраструктуры.

Между этими вариантами расположены визуальные профайлеры VisualVM, которые позволяют работать на запущенной виртуальной машине. Эти инструменты дают возможность отслеживать утечки памяти, а также наблюдать общее потребление памяти в вашей системе.

Вывод

Среда выполнения Java - это программа, которая загружает приложения Java для выполнения JVM. JRE включается по умолчанию при загрузке комплекта разработки Java, и каждый JRE включает библиотеки основных классов Java, загрузчик классов Java и виртуальную машину Java. Полезно понять, как взаимодействуют JVM, JDK и JRE, особенно для работы в облачных средах и средах devops. В этих средах JRE играет более сильную роль в мониторинге и конфигурации, чем в традиционной разработке приложений Java.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегистатьи IT, java, jre




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Урок 10. Операторы побитового сдвига C#
AI Factory's Chess, уровень 11, 23 мая 2016 - С. Визгорев
Программа "Ловим фокус"