Runtime в java это

Обновлено: 02.07.2024

Каждому приложению Java сопоставляется экземпляр класса Runtime.

class java.lang. Runtime ¶ getRuntime ( ) ¶

Возвращает соответсвующий приложению Runtime

exit ( int status ) ¶

Осуществляет завершение программы с кодом завершения status (при использовании этого метода особое внимание нужно уделить обработке исключений - выход будет осуществлен моментально, и в конструкциях try-catch-finally управление в finally передано не будет)

public native void

Сигнализирует сборщику мусора о необходимости запуска

public native long

Возвращает количество свободной памяти. В некоторых случаях это количество может быть увеличено, если вызвать у объекта Runtime метод gc()

public native long

Возвращает суммарное количество памяти, выделенное Java машине. Это количество может из изменяться даже в течении одного запуска, что зависит от реализации платформы на которой запущена Java машина. Так-же, не стоит закладываться на объем памяти, занимаемой одним определенным объектом - эта величина так же зависит от реализации Java машины.

loadLibrary ( String libname ) ¶

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

Таким образом, когда класс будет загружен и инициализирован, необходимый код для реализации native методов так-же будет загружен. Если будет произведено несколько вызовов загрузки библиотеки с одним и тем-же именем - произведен будет только первый, а все остальные будут проигнорированы.

load ( String filename ) ¶

Подгружает файл с указанным названием в качестве библиотеки. В принципе, этот метод работает так-же как и метод load(), только принимает в качестве параметра именно название файла, а не библиотеки, тем самым позволяя загрузить любой файл с native кодом.

Производит запуск выполнения методов finalize() у всех объектов, этого ожидающих

Если этот метод вызывается после того, как виртуальная машина начала свою последовательность завершения работы тогда, если рычаги завершения работы будут выполнены, то этот метод блокирует неопределенно. Если рычаги завершения работы были уже выполнены, и завершение на выходе было включено тогда, этот метод останавливает виртуальную машину с данным кодом состояния, если состояние является ненулевым; иначе, это блокирует неопределенно.

System.exit метод является стандартными и удобными средствами вызова этого метода.

addShutdownHook

Регистрирует новый рычаг завершения работы виртуальной машины.

Виртуальная машина Java завершает работу в ответ на два вида событий:

Как только последовательность завершения работы началась, она может быть остановлена только, вызывая halt метод, который насильственно завершает виртуальную машину.

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

Рычаги завершения работы должны также закончить свою работу быстро. Когда программа вызывает exit ожидание состоит в том, что виртуальная машина быстро завершит работу и выйдет. Когда виртуальная машина завершается из-за пользовательского выхода из системы или завершения работы системы, базовая операционная система может только позволить установленную сумму времени, в которое можно завершить работу и выйти. Это поэтому нецелесообразно, чтобы делать попытку любого взаимодействия с пользователем или выполнить продолжительное вычисление в рычаге завершения работы.

Непойманные исключения обрабатываются в рычагах завершения работы так же, как в любом другом потоке, вызывая uncaughtException метод потока ThreadGroup объект. Реализация по умолчанию этого метода печатает трассировку стека исключения к System.err и завершает поток; это не заставляет виртуальную машину выходить или останавливаться.

При редких обстоятельствах виртуальная машина может прерваться, то есть, прекратите работать, не завершая работу чисто. Это происходит, когда виртуальная машина завершается внешне, например с сигналом SIGKILL на Unix или запросе TerminateProcess к Microsoft Windows. Виртуальная машина может также прерваться, если собственный метод спутывается, например, повреждая внутренние структуры данных или пытаясь получить доступ к несуществующей памяти. Если виртуальная машина прерывается тогда, никакая гарантия не может быть сделана о том, будут ли какие-либо рычаги завершения работы выполнены.

removeShutdownHook

останов

Насильственно завершает в настоящий момент рабочую виртуальную машину Java. Этот метод никогда обычно не возвращается.

Этот метод должен использоваться с экстремальным предостережением. В отличие от этого exit метод, этот метод не заставляет рычаги завершения работы быть запущенными и не выполняет невызванные финализаторы, если завершение на выходе было включено. Если последовательность завершения работы уже инициировалась тогда, этот метод не ожидает никаких рабочих рычагов завершения работы или финализаторов, чтобы закончить их работу.

runFinalizersOnExit

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

Если есть менеджер безопасности, checkExit метод сначала вызывают с 0 как его параметр, чтобы гарантировать, что выход позволяется. Это могло привести к SecurityException.

Выполняет указанную строковую команду в отдельном процессе.

Это - метод удобства. Вызов формы exec(command) ведет себя точно таким же образом как вызов exec (command, null, null).

Выполняет указанную строковую команду в разделять процессе с указанной средой.

Это - метод удобства. Вызов формы exec(command, envp) ведет себя точно таким же образом как вызов exec (command, envp, null).

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

Это - метод удобства. Вызов формы exec(command, envp, dir) ведет себя точно таким же образом как вызов exec (cmdarray, envp, dir), где cmdarray массив всех маркеров в command .

Более точно, command строка повреждается в маркеры, используя a StringTokenizer создаваемый вызовом new StringTokenizer (command) без дальнейшей модификации символьных категорий. Маркеры, произведенные токенизатором, тогда помещаются в новый строковый массив cmdarray , в том же самом порядке.

Выполняет указанную команду и параметры в отдельном процессе.

Это - метод удобства. Вызов формы exec(cmdarray) ведет себя точно таким же образом как вызов exec (cmdarray, null, null).

Выполняет указанную команду и параметры в разделять процессе с указанной средой.

Это - метод удобства. Вызов формы exec(cmdarray, envp) ведет себя точно таким же образом как вызов exec (cmdarray, envp, null).

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

Учитывая массив строк cmdarray , представление маркеров командной строки, и массива строк envp , представляя настройки переменной "среды", этот метод создает новый процесс, в котором можно выполнить указанную команду.

Этот метод проверяет это cmdarray допустимая команда операционной системы. То, какие команды допустимы, системно-зависимо, но по крайней мере команда должна быть непустым списком непустых строк.

Если envp является null, подпроцесс наследовал настройки среды текущего процесса.

Минимальный набор системно-зависимых переменных окружения может быть обязан запускать процесс на некоторых операционных системах. В результате подпроцесс может наследовать дополнительные настройки переменной окружения вне тех в указанной среде.

ProcessBuilder.start() теперь привилегированный способ запустить процесс с измененной среды.

Рабочий каталог нового подпроцесса определяется dir. Если dir является null, подпроцесс наследовал текущий рабочий каталог текущего процесса.

Если менеджер безопасности существует, checkExec метод вызывается с первым компонентом массива cmdarray как его параметр. Это может привести к a SecurityException быть брошенным.

  • Программный файл операционной системы не был найден.
  • Доступ к программному файлу был лишен.
  • Рабочий каталог не существует.

В таких случаях будет выдано исключение. Точный характер исключения системно-зависим, но это всегда будет подкласс IOException .

availableProcessors

Возвращает число процессоров, доступных виртуальной машине Java.

Это значение может измениться во время определенного вызова виртуальной машины. Приложения, которые чувствительны к числу доступных процессоров, должны поэтому иногда опрашивать это свойство и корректировать их использование ресурсов соответственно.

freeMemory

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

totalMemory

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

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

maxMemory

Возвращает максимальный объем памяти, который виртуальная машина Java попытается использовать. Если нет никакого свойственного предела тогда значения Long.MAX_VALUE будет возвращен. Выполняет сборщик "мусора". Вызов этого метода предлагает, чтобы виртуальная машина Java израсходовала усилие к рециркуляции неиспользованных объектов, чтобы сделать память, которую они в настоящий момент занимают доступный для быстрого повторного использования. Когда возвраты управления из вызова метода, виртуальная машина сделала свои максимальные усилия, чтобы переработать все отброшенные объекты.

Имя gc стенды для "сборщика"мусора"". Виртуальная машина выполняет этот процесс рециркуляции автоматически как необходимый, в отдельном потоке, даже если gc метод не вызывается явно.

Метод System.gc() стандартные и удобные средства вызова этого метода.

runFinalization

Выполняет методы завершения любых объектов завершение на ожидании. Вызов этого метода предлагает, чтобы виртуальная машина Java израсходовала усилие к выполнению finalize методы объектов, которые, как находили, были отброшены, но чей finalize методы еще не были выполнены. Когда возвраты управления из вызова метода, виртуальная машина сделала максимальные усилия, чтобы завершить все выдающиеся завершения.

Виртуальная машина выполняет процесс завершения автоматически как необходимый, в отдельном потоке, если runFinalization метод не вызывается явно.

traceInstructions

Трассировка включений/Отключений инструкций. Если boolean параметр true , этот метод предлагает, чтобы виртуальная машина Java испустила отладочную информацию для каждой инструкции в виртуальной машине, поскольку это выполняется. Формат этой информации, и файл или другой поток вывода, к которому это испускается, зависит от среды узла. Виртуальная машина может проигнорировать этот запрос, если это не поддерживает эту функцию. Место назначения вывода трассировки системно-зависимо.

Если boolean параметр false , этот метод заставляет виртуальную машину прекращать выполнять подробную трассировку инструкции, которую это выполняет.

traceMethodCalls

Трассировка включений/Отключений вызовов метода. Если boolean параметр true , этот метод предлагает, чтобы виртуальная машина Java испустила отладочную информацию для каждого метода в виртуальной машине, как это вызывают. Формат этой информации, и файл или другой поток вывода, к которому это испускается, зависит от среды узла. Виртуальная машина может проигнорировать этот запрос, если это не поддерживает эту функцию.

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

загрузка

Загружает указанное имя файла как динамическую библиотеку. Параметром имени файла должно быть имя полного пути, (например Runtime.getRuntime().load("/home/avh/lib/libX11.so"); ).

Во-первых, если есть менеджер безопасности, checkLink метод вызывают с filename как его параметр. Это может привести к исключению безопасности.

Это подобно методу loadLibrary(String) , но это принимает общее имя файла как параметр, а не только имя библиотеки, позволяя любой файл собственного кода быть загруженным.

Метод System.load(String) стандартные и удобные средства вызова этого метода.

loadLibrary

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

Во-первых, если есть менеджер безопасности, checkLink метод вызывают с libname как его параметр. Это может привести к исключению безопасности.

Метод System.loadLibrary(String) стандартные и удобные средства вызова этого метода. Если собственные методы должны использоваться в реализации класса, стандартная стратегия состоит в том, чтобы поместить собственный код в файл библиотеки (вызовите это LibFile ) и затем помещать статический инициализатор:

в пределах объявления класса. Когда класс будет загружен и инициализируется, необходимая собственная реализация кода для собственных методов будет тогда загружена также.

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

getLocalizedInputStream

Осуждаемый. С JDK 1.1, привилегированный способ преобразовать поток байтов в локальном кодировании в символьный поток в Unicode через InputStreamReader и BufferedReader классы. Создает локализованную версию входного потока. Этот метод берет InputStream и возвраты InputStream эквивалентный параметру во всех отношениях за исключением того, что это локализуется: поскольку символы в локальном наборе символов читаются из потока, они автоматически преобразовываются от локального набора символов до Unicode.

Если параметром уже является локализованный поток, он может быть возвращен как результат.

getLocalizedOutputStream

Осуждаемый. С JDK 1.1, привилегированный способ преобразовать поток символа Unicode в поток байтов в локальном кодировании через OutputStreamWriter , BufferedWriter , и PrintWriter классы. Создает локализованную версию потока вывода. Этот метод берет OutputStream и возвраты OutputStream эквивалентный параметру во всех отношениях за исключением того, что это локализуется: поскольку символы Unicode пишутся потоку, они автоматически преобразовываются в локальный набор символов.

Если параметром уже является локализованный поток, он может быть возвращен как результат.

  • Сводка:
  • Вложенный |
  • Поле |
  • Constr |
  • Деталь:
  • Поле |
  • Constr |

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE . Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.

Java Runtime Environment

Java Runtime Environment – это виртуальная машина, которая содержит собственную среду разработки и определённые Java-библиотеки. В первую очередь, она необходима для запуска некоторых игр и приложений, которые разрабатывались по Java-технологии (например, Minecraft и ему-подобные игры).

Пакеты для эффективной работы

Java Runtime Environment содержит в себе следующие компоненты:

Поддержка приложений

ПО позволяет корректно отображать старые сайты, где часть функционала работает на языке Java. Также оно позволяет запускать на компьютере многие инди и онлайн-игры. Плюс, некоторые web-приложения в социальных сетях для корректной работы тоже требуют установленной на компьютере Java Runtime Environment.

Более полезным данное ПО окажется для офисных работников и разработчиков. В первом случае оно позволит производить закрытую отчётность, проводить работы с важными документами в рамках корпоративной сети. Во втором случае оно способно заинтересовать разработчиков, пишущих на языке Java и не только. По заверению разработчиков JRE – программа гарантирует надёжность, комфорт работы и безопасность обрабатываемых данных.

Принцип работы Java Runtime Environment

Рядовому пользователю достаточно будет только установить программу и перезагрузить компьютер, после чего все приложения, которым требуется JRE, будут работать без каких-либо проблем. То же самое касается отображения Java-контента в браузере. В-основном, после установки вам практически не понадобится открывать JRE, так как ПО будет работать в фоновом режиме.

В качестве исключения можно рассматривать некоторых программистов и системных администраторов. Возможно, им придётся заходить в панель управления программы и производить там некоторые манипуляции. Но, в большинстве случаев, обращаться к Java Runtime Environment придётся для загрузки обновлений или отключения ПО. Во время обновления можно пользоваться компьютером без каких-либо ограничений.

Обновление Java

Достоинства

  • Кроссплатформенность. ПО работает на всех версиях Windows и на других ОС, в том числе мобильных;
  • JRE без проблем запустится даже на очень слабом и давно устаревшем железе;
  • Позволяет запускать большинство онлайн-игр;
  • В большинстве случаев, не требуется какой-либо настройки после установки.

Недостатки

  • Отсутствие русского языка в интерфейсе;
  • Некоторые пользователи жалуются на медленную работу ПК после установки программы;
  • Есть уязвимости в некоторых компонентах.

Java Runtime Environment обязательна к установки тем, кто проводит много времени в онлайн-играх, работает с различными документами в интернете или изучает языки программирования (особенно Java). Данная программа мало весит и устанавливается в пару кликов, а после установки практически не требует никакого вмешательства.

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

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

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

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

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

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

Раньше принцип WORA (англ. "write once, run anywhere – написал один раз, запускай везде") считался революционным, но сегодня это норма для большинства программных систем.

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

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

Если коротко, то JRE — это мета-OS для Java-программ. Это классический пример абстракции — абстрагирование базовой ОС в согласованную платформу для запуска приложений Java.

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

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

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

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

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

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

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

Читайте также: