Что такое JRE? Введение в среду выполнения Java
Java Development Kit (JDK), виртуальная машина Java (JVM) и среда выполнения Java (JRE) вместе образуют мощное сочетание компонентов платформы Java для разработки и запуска приложений Java. Ранее я писал о JDK и JVM, а в этом кратком руководстве вы узнаете о JRE, или что такое среда выполнения Java.
Фактически, среда выполнения — это программа, которая предназначена для запуска другого программного обеспечения. Среда выполнения для Java, JRE содержит библиотеки классов Java, загрузчик класса Java и виртуальную машину Java. В этой системе
-
Загрузчик классов отвечает за правильную загрузку классов и соединение их с основной библиотекой классов.
Установка JDK, JRE и JVM
В любое время можно скачать пакет JDK, он будет включать в себя совместимости с версией JRE, а JRE будет включать по умолчанию JVM. Вы также можете скачать JRE отдельно от JDK, и вы можете выбрать из множества Jvm. Значения по умолчанию хорошо работают для большинства реализаций, особенно когда вы начинаете учиться Java.
Audio Java #02 — Что такое JDK, JRE, JVM, JIT, как компилируется и исполняется Java код
Что такое среда выполнения?
Программа должна выполняться, и для этого ей нужна среда для работы. Среда выполнения загружает файлы классов и обеспечивает доступ к памяти и другим системным ресурсам для их запуска. В прошлом большинство программ использовали операционную систему (ОС) в качестве среды выполнения.
Программа запускалась внутри любого компьютера, на котором она была, но полагалась на настройки операционной системы для доступа к ресурсам. Ресурсами в этом случае будут такие вещи, как память, программные файлы и зависимости. Среда выполнения Java изменила все это, по крайней мере, для программ Java.
WORA для Java
Когда был впервые представлен принцип Java «Написано один раз – выполняется везде», он считался революционным, но сегодня принят в качестве нормы для большинства программных систем.
Среда выполнения Java
Мы можем рассматривать программное обеспечение как ряд слоев, которые сидят поверх оборудования. Каждый слой предоставляет сервисы, которые будут использоваться (и необходимы) слоями над ним. Среда выполнения Java — это программный уровень, который работает поверх операционной системы компьютера, предоставляя дополнительные службы, специфичные для Java.
JRE сглаживает разнообразие операционных систем, гарантируя, что программы Java могут работать практически на любой ОС без изменений. Он также предоставляет дополнительные услуги. Автоматическое управление памятью является одним из наиболее важных сервисов JRE, гарантируя, что программистам не придётся вручную контролировать выделение и перераспределение памяти.
Короче говоря, JRE является своего рода meta-OS для программ Java. Это классический пример абстрагирования, абстрагирования базовой операционной системы в согласованное платформа для запуска Java-приложений.
Как JRE работает с JVM
JRE — это система, которая берет Ваш код Java, объединяет его с необходимыми библиотеками и запускает JVM для его выполнения.
Урок 2.1. Что такое JDK,JRE,JVM
JRE содержит библиотеки и программное обеспечение, необходимые для работы программ Java. Как пример, Ява загрузчик класса является частью среды выполнения Java. Эта важная часть программного обеспечения загружает скомпилированный код Java в память и соединяет код с соответствующими библиотеками классов Java.
В слоистом виде, который я только что описал, JVM создается JRE. С точки зрения пакета JRE содержит JVM, как показано на рисунке ниже
В то время как есть концептуальная сторона JRE, в реальной практике это просто программное обеспечение, установленное на компьютере, целью которого является запуск программ Java. Как разработчик, вы будете в основном работать с JDK и JVM, потому что это компоненты платформы, которые вы используете для разработки и запуска программ Java. Как пользователь приложения Java, вы были бы более вовлечены в JRE, что позволяет запускать эти программы.
В большинстве случаев, ваш компьютер будет поставляться с уже установленной Java, и JRE будет включен. Если вам когда-нибудь понадобится, чтобы вручную установить или обновить, вы можете скачать текущую версию JRE от Oracle.
Среда выполнения 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, где Ява держит свои программы неизменных информация как определения классов.
До 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 — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Источник: upread.ru
Java Runtime Environment для Windows
Java Runtime Environment (JRE) — программное обеспечение необходимое для запуска веб-сайтов и приложений, созданных с помощью языка программирования Java, на котором написано множество программ и игр, особенно тех, для которых важна мобильность. Состоит из виртуальной машины и библиотеки Java-классов. Позволяет играть в сетевые игры, общаться с людьми по всему миру, подсчитывать проценты по ипотечным кредитам и просматривать трехмерные изображения. Java обеспечивает быстродействие, безопасность и надежность.
- Исправлены ошибки.
ТОП-сегодня раздела «.NET»
Microsoft .NET Framework — набор библиотек и системных компонентов, которые необходимы для работы приложений, основанных на архитектуре .NET Framework.
Microsoft .NET Framework — набор библиотек и системных компонентов, наличие которых является.
Microsoft .NET Framework — набор библиотек и системных компонентов, наличие которых является.
Microsoft .NET Framework — Набор компонентов, позволяющих запускать приложения, основанных на архитектуре .NET Framework.
Java Runtime Environment (JRE) — среда выполнения приложений написанных на языке программирования Java.
Microsoft .NET Framework — набор библиотек и системных компонентов, которые необходимы для работы приложений, основанных на архитектуре .NET Framework.
Отзывы о программе Java Runtime Environment
Дема про Java Runtime Environment 8.0.251 [18-06-2021]
(шёпотом) для winXP есть jre 8u73
| 1 | Ответить
Дмитрий про Java Runtime Environment 8.0.201 [20-05-2020]
Восьмая JAVA с XP не работает
Нужна 7-ая, а лучше 6-ая
1 | | Ответить
Minecrafter2002 про Java Runtime Environment 8.0.201 [11-10-2019]
Сучий майнкрафт не работает. помогите JAVA 2002 всё.
4 | 5 | Ответить
raspberry73 про Java Runtime Environment 8.0.77 [17-08-2016]
mamelissa, спасибо большое за подсказку, я то все время думала, почему эти зараженные страницы открываются, а это java был виноват.
2 | 5 | Ответить
Ольга Ивановна про Java Runtime Environment 8.0.72 [29-01-2016]
подскажите, пожалуйста, мне, малограмотному человеку, — на моем компе стоит ява 32 bit, а комп 64, подойдет ли эта программа, или надо искать для 64?
14 | 20 | Ответить
Источник: www.softportal.com
Инструменты для запуска и разработки Java приложений, компиляция, выполнение на JVM
Ни для кого не секрет, что на данный момент Java — один из самых популярных языков программирования в мире. Дата официального выпуска Java — 23 мая 1995 года.
Эта статья посвящена основам основ: в ней изложены базовые особенности языка, которые придутся кстати начинающим “джавистам”, а опытные Java-разработчики смогут освежить свои знания.
* Статья подготовлена на основе доклада Евгения Фраймана — Java разработчика компании IntexSoft.
В статье присутствуют ссылки на внешние материалы.
1. JDK, JRE, JVM
Java Development Kit — комплект разработчика приложений на языке Java. Он включает в себя Java Development Tools и среду выполнения Java — JRE (Java Runtime Environment).
Java development tools включают в себя около 40 различных тулов: javac (компилятор), java (лаунчер для приложений), javap (java class file disassembler), jdb (java debugger) и др.
Среда выполнения JRE — это пакет всего необходимого для запуска скомпилированной Java-программы. Включает в себя виртуальную машину JVM и библиотеку классов Java — Java Class Library.
JVM — это программа, предназначенная для выполнения байт-кода. Первое преимущество JVM — это принцип “Write once, run anywhere”. Он означает, что приложение, написанное на Java, будет работать одинаково на всех платформах. Это является большим преимуществом JVM и самой Java.
До появления Java, многие компьютерные программы были написаны под определенные компьютерные системы, а предпочтение отдавалось ручному управлению памятью, как более эффективному и предсказуемому. Со второй половины 1990-х годов, после появления Java, автоматическое управление памятью стало общей практикой.
Существует множество реализаций JVM, как коммерческих, так и с открытым кодом. Одна из целей создания новых JVM — увеличение производительности для конкретной платформы. Каждая JVM пишется под платформу отдельно, при этом есть возможность написать ее так, чтобы она работала быстрее на конкретной платформе. Самая распространённая реализация JVM — это JVM Hotspot от OpenJDK. Также есть реализации IBM J9, Excelsior JET.
2. Выполнение кода на JVM
Согласно спецификации Java SE, для того, чтобы получить код, работающий в JVM, необходимо выполнить 3 этапа:
- Загрузка байт-кода и создание экземпляра класса Class
Грубо говоря, чтобы попасть на JVM, класс должен быть загружен. Для этого существуют отдельные класс-загрузчики, к ним мы вернемся чуть позже. - Связывание или линковка
После загрузки класса начинается процесс линковки, на котором байт-код разбирается и проверяется. Процесс линковки в свою очередь происходит в 3 шага:
3. Загрузчики классов и их иерархия
Вернемся к загрузчикам классов — это специальные классы, которые являются частью JVM. Они загружают классы в память и делают их доступными для выполнения. Загрузчики работают со всеми классами: и с нашими, и с теми, которые непосредственно нужны для Java.
Представьте ситуацию: мы написали свое приложение, и помимо стандартных классов там есть наши классы, и их очень много. Как с этим будет работать JVM? В Java реализована отложенная загрузка классов, иными словами lazy loading. Это значит, что загрузка классов не будет выполняться до тех пор, пока в приложении не встретится обращение к классу.
Иерархия загрузчиков классов
Первый загрузчик классов — это Bootstrap classloader. Он написан на C++. Это базовый загрузчик, который загружает все системные классы из архива rt.jar. При этом, есть небольшое отличие между загрузкой классов из rt.jar и наших классов: когда JVM загружает классы из rt.jar, она не выполняет все этапы проверки, которые выполняются при загрузке любого другого класс-файла т.к.
JVM изначально известно, что все эти классы уже проверены. Поэтому, включать в этот архив какие-либо свои файлы не стоит.
Следующий загрузчик — это Extension classloader. Он загружает классы расширений из папки jre/lib/ext. Допустим, вы хотите, чтобы какой-то класс загружался каждый раз при старте Java машины. Для этого вы можете скопировать исходный файл класса в эту папку, и он будет автоматически загружаться.
Еще один загрузчик — System classloader. Он загружает классы из classpath’а, который мы указали при запуске приложения.
Процесс загрузки классов происходит по иерархии:
- В первую очередь мы запрашиваем поиск в кэше System Class Loader (кэш системного загрузчика содержит классы, которые уже были им загружены);
- Если класс не был найден в кэше системного загрузчика, мы смотрим кэш Extension class loader;
- Если класс не найден в кэше загрузчика расширений, класс запрашивается у загрузчика Bootstrap.
4. Структура Сlass-файлов и процесс загрузки
Перейдем непосредственно к структуре Class-файлов.
Один класс, написанный на Java, компилируется в один файл с расширением .class. Если в нашем Java файле лежит несколько классов, один файл Java может быть скомпилирован в несколько файлов с расширением .class — файлов байт-кода данных классов.
Все числа, строки, указатели на классы, поля и методы хранятся в Сonstant pool — области памяти Meta space. Описание класса хранится там же и содержит имя, модификаторы, супер-класс, супер-интерфейсы, поля, методы и атрибуты. Атрибуты, в свою очередь, могут содержать любую дополнительную информацию.
Таким образом, при загрузке классов:
- происходит чтение класс-файла, т.е проверка корректности формата
- создается представление класса в Constant pool (Meta space)
- грузятся супер-классы и супер-интерфейсы; если они не будут загружены, то и сам класс не будет загружен
5. Исполнение байт-кода на JVM
В первую очередь, для исполнения байт-кода, JVM может его интерпретировать. Интерпретация — довольно медленный процесс. В процессе интерпретации, интерпретатор “бежит” построчно по класс-файлу и переводит его в команды, которые понятны JVM.
Также JVM может его транслировать, т.е. скомпилировать в машинный код, который будет исполняться непосредственно на CPU.
Команды, которые исполняются часто, не будут интерпретироваться, а сразу будут транслироваться.
6. Компиляция
Компилятор — это программа, которая преобразует исходные части программ, написанные на языке программирования высокого уровня, в программу на машинном языке, “понятную” компьютеру.
Компиляторы делятся на:
- Не оптимизирующие
- Простые оптимизирующие (Hotspot Client): работают быстро, но порождают неоптимальный код
- Сложные оптимизирующие (Hotspot Server): производят сложные оптимизирующие преобразования прежде чем сформировать байт-код
Также компиляторы могут классифицироваться по моменту компиляции:
- Динамические компиляторы
Работают одновременно с программой, что сказывается на производительности. Важно, чтобы эти компиляторы работали на коде, который часто исполняется. Во время исполнения программы JVM знает, какой код выполняется чаще всего, и, чтобы постоянно не интерпретировать его, виртуальная машина сразу переводит его в команды, которые уже будут исполняться непосредственно на процессорe. - Статические компиляторы
Дольше компилируют, но порождают оптимальный код для исполнения. Из плюсов: не требуют ресурсов во время исполнения программы, каждый метод компилируется с применением оптимизаций.
7. Организация памяти в Java
Стек — это область памяти в Java, которая работает по схеме LIFO — “Last in — Fisrt Out” или “Последним вошел, первым вышел”.
Он нужен для того, чтобы хранить методы. Переменные в стеке существуют до тех пор, пока выполняется метод в котором они были созданы.
Когда вызывается любой метод в Java, создается фрейм или область памяти в стеке, и метод кладется на его вершину. Когда метод завершает выполнение, он удаляется из памяти, тем самым освобождая память для следующих методов. Если память стека будет заполнена, Java бросит исключение java.lang.StackOverFlowError. К примеру, это может произойти, если у нас будет рекурсивная функция, которая будет вызывать сама себя и памяти в стеке не будет хватать.
Ключевые особенности стека:
- Стек заполняется и освобождается по мере вызова и завершения новых методов
- Доступ к этой области памяти осуществляется быстрее, чем к куче
- Размер стека определяется операционной системой
- Является потокобезопасным, поскольку для каждого потока создается свой отдельный стек
Куча разбита на несколько более мелких частей, называемых поколениями:
- Young generation — область, где размещаются недавно созданные объекты
- Old (tenured) generation — область, где хранятся “долгоживущие” объекты
- До Java 8 существовала ещё одна область — Permanent generation — которая содержит метаинформацию о классах, методах, статических переменных. После появления Java 8 было решено хранить эту информацию отдельно, вне кучи, а именно в Meta space
Почему отказались от Permanent generation? В первую очередь, это из-за ошибки, которая была связана с переполнением области: так как Perm имел константный размер и не мог расширяться динамически, рано или поздно память заканчивалась, кидалась ошибка, и приложение падало.
Meta space же имеет динамический размер, и во время исполнения он может расширяться до размеров памяти JVM.
Ключевые особенности кучи:
- Когда эта область памяти заполняется полностью, Java бросает java.lang.OutOfMemoryError
- Доступ к куче медленнее, чем к стеку
- Для сбора неиспользуемых объектов работает сборщик мусора
- Куча, в отличие от стека, не является потокобезопасной, так как любой поток может получить к ней доступ
Основываясь на информации выше, рассмотрим, как происходит управление памятью на простом примере:
public class App < public static void main(String[] args) < int String pName = «Jon»; Person p = null; p = new Person(id, pName); >> class Person < int pid; String name; // constructors, getters/setters >
У нас есть класс App, в котором единственный метод main состоит из:
— примитивной переменой id типа int со значением 23
— ссылочной переменной pName типа String со значением Jon
— ссылочной переменной p типа person
Как уже упоминалось, при вызове метода на вершине стека создаётся область памяти, в которой хранятся данные, необходимые этому методу для выполнения.
В нашем случае, это ссылка на класс person: сам объект хранится в куче, а в стеке хранится ссылка. Также в стек кладется ссылка на строку, а сама строка хранится в куче в String pool. Примитив хранится непосредственно в стеке.
Для вызова конструктора с параметрами Person (String) из метода main() в стеке, поверх предыдущего вызова main() создается в стеке отдельный фрейм, который хранит:
— this — ссылка на текущий объект
— примитивное значение id
— ссылочную переменную personName, которая указывает на строку в String Pool.
После того, как мы вызвали конструктор, вызывается setPersonName(), после чего снова создается новый фрейм в стеке, где хранятся те же данные: ссылка на объект, ссылка на строку, значение переменной.
Таким образом, когда выполнится метод setter, фрейм пропадет, стек очистится. Далее выполняется конструктор, очищается фрейм, который был создан под конструктор, после чего метод main() завершает свою работу и тоже удаляется из стека.
Если будут вызваны другие методы, для них будут также созданы новые фреймы с контекстом этих конкретных методов.
8. Garbage collector
В куче работает Garbage collector — программа, работающая на виртуальной машине Java, которая избавляется от объектов, к которым невозможно получить доступ.
Разные JVM могут иметь различные алгоритмы сборки мусора, также существуют разные сборщики мусора.
Мы поговорим о самом простом сборщике Serial GC. Сборку мусора мы запрашиваем при помощи System.gc().
Как уже было упомянуто выше, куча разбита на 2 области: New generation и Old generation.
New generation (младшее поколение) включает в себя 3 региона: Eden, Survivor 0 и Survivor 1.
Old generation включает в себя регион Tenured.
Что происходит, когда мы создаем в Java объект?
В первую очередь объект попадает в Eden. Если мы создали уже много объектов и в Eden уже нет места, срабатывает сборщик мусора и освобождает память. Это, так называемая, малая сборка мусора — на первом проходе он очищает область Eden и кладёт “выжившие” объекты в регион Survivor 0. Таким образом регион Eden полностью высвобождается.
Если произошло так, что область Eden снова была заполнена, garbage collector начинает работу с областью Eden и областью Survivor 0, которая занята на данный момент. После очищения выжившие объекты попадут в другой регион — Survivor 1, а два остальных останутся чистыми. При последующей сборке мусора в качестве региона назначения опять будет выбран Survivor 0. Именно поэтому важно, чтобы один из регионов Survivor всегда был пустым.
JVM следит за объектами, которые постоянно копируются и перемещаются из одного региона в другой. И для того, чтобы оптимизировать данный механизм, после определённого порога сборщик мусора перемещает такие объекты в регион Tenured.
Когда в Tenured места для новых объектов не хватает, происходит полная сборка мусора — Mark-Sweep-Compact.
Во время этого механизма определяется, какие объекты больше не используются, регион очищается от этих объектов, и область памяти Tenured дефрагментируется, т.е. последовательно заполняется нужными объектами.
Заключение
В данной статье мы разобрали базовые инструменты языка Java: JVM, JRE, JDK, принцип и этапы выполнения кода на JVM, компиляцию, организацию памяти, а также принцип работы сборщика мусора.
Источник: habr.com
Java Runtime Environment
Программная среда для запуска Java-приложений и апплетов
- Windows 10
- Windows 8.1
- Windows 8
- Windows 7
- Windows Vista
- Windows XP
Всего оценок: 1
Тип лицензии:
Freeware (бесплатное)
Языки: Английский
Снимки экрана 2
Java Runtime Environment (JRE) — программное обеспечение для запуска на компьютерах под управлением Windows программ, написанных на языке Java. Для некоммерческого использования JRE распространяется бесплатно. Для 32-х и 64-битных ОС Windows существуют отдельные версии Java Runtime Environment .
Зачем нужен Java Runtime Environment?
Java Runtime Environment представляет собой среду выполнения Java-приложений, включающую в себя виртуальную машину Java Virtual Machine (JVM). Предназначение JVM — обеспечение запускаемых на компьютере Java-приложений программными (API, библиотеки и т.п.) и аппаратными (память, дисковое пространство, мощности процессора и т.д.) ресурсами. Java-программы, в свою очередь, могут являться самостоятельными приложениями (запускающимися, как и любые другие Windows-программы, в отдельном окне), так и плагинами для браузеров (т.н. Java-апплеты).
Многие современные Java-программа распространяются вместе со средой Java Runtime Environment, автоматически устанавливающейся на ПК. Но ряд таких приложений не имеют в своем составе JRE, и при попытке их запуска на экране отображается соответствующая ошибка. Для устранения этой ошибки достаточно установить пакет Java Runtime Environment, который можно скачать с этой страницы или с официального сайта.
Кроме того, среда выполнения Java Runtime Environment и входящая в ее состав виртуальная машина Java Virtual Machine необходима для разработки и отладки Java-программ. Однако в самой среде JRE инструменты разработчика (Java Development Kit), как и компилятор Java-кода, отсутствуют — они устанавливаются отдельно.
Основное преимущество любых Java-приложений и Java-апплетов — отсутствие привязки к операционной системе. Они будут работать на любом компьютере под управлением любой поддерживаемой ОС, в которой присутствует программное обеспечение Java Runtime Environment — Linux, macOS, FreeBSD и т.д. Существуют также особые разновидности виртуальных машин Java, использующиеся в качестве прошивки широкого спектра компьютеризированных устройств.
Источник: www.softsalad.ru