Класс Runtime
public final class Runtime extends Object
Runtime, который позволяет приложению взаимодействовать со средой, в которой оно выполняется. Текущую среду выполнения можно получить с помощью метода getRuntime. Приложение не может создать собственный экземпляр этого класса.
Последовательность завершения работы
Виртуальная машина Java инициирует последовательность завершения работы в ответ на одно из нескольких событий:
- когда число активных потоков, не являющихся потоками-демонами, впервые становится равным нулю (см. примечание ниже об API вызова JNI);
- когда впервые вызывается метод
Runtime.exitилиSystem.exit; или - когда происходит внешнее событие, например прерывание или получение сигнала от операционной системы.
В начале последовательности завершения работы зарегистрированные обработчики завершения запускаются в некотором неопределённом порядке. Они выполняются параллельно с любыми потоками-демонами или обычными потоками, которые были активны в начале последовательности завершения работы.
После начала последовательности завершения работы регистрация и отмена регистрации обработчиков завершения с помощью методов addShutdownHook и removeShutdownHook запрещены. Однако создавать и запускать новые потоки разрешено. Новые потоки выполняются параллельно с зарегистрированными обработчиками завершения и любыми уже выполняющимися потоками-демонами или обычными потоками.
Последовательность завершения работы заканчивается, когда все обработчики завершения прекратили выполнение. После этого виртуальная машина Java завершается, как описано ниже.
Один или несколько обработчиков завершения могут не завершиться, например, из-за бесконечного цикла. В этом случае последовательность завершения работы никогда не закончится. Другие потоки и обработчики завершения продолжают выполняться и могут завершить работу JVM с помощью метода halt.
До начала последовательности завершения работы программа может запустить обработчик завершения, явно вызвав его метод start. Если это произойдёт, поведение последовательности завершения работы не определено.
Завершение работы виртуальной машины Java
JVM завершается, когда заканчивается последовательность завершения работы или вызывается метод halt. В отличие от метода exit, метод halt не инициирует последовательность завершения работы.
При завершении работы JVM все потоки немедленно лишаются возможности выполнять дальнейший код Java. Это относится как к обработчикам завершения, так и к потокам-демонам и обычным потокам. Например, это означает, что:
- текущие методы потоков не завершаются ни нормально, ни аварийно;
-
блоки
finallyне выполняются; - обработчики неперехваченных исключений не запускаются; и
- ресурсы, открытые с помощью конструкции try-with-resources, не закрываются;
- Примечание по реализации:
- Собственный код обычно использует API вызова JNI для управления запуском и завершением работы JVM. Такой собственный код вызывает функцию
JNI_CreateJavaVMдля запуска JVM. Затем собственный код вызывает функциюDestroyJavaVM, чтобы дождаться завершения работы этой JVM. ФункцияDestroyJavaVMотвечает за инициирование последовательности завершения работы, когда число активных потоков, не являющихся потоками-демонами, впервые становится равным нулю. Когда последовательность завершения работы заканчивается и JVM завершает работу, управление возвращается собственному коду, вызвавшемуDestroyJavaVM. Такое поведение отличается от поведения методовexitиhalt. Эти методы обычно завершают процесс операционной системы, в котором размещена JVM, и не взаимодействуют с API вызова JNI. - См. Спецификацию языка Java:
- 12.8 Выход из программы
- Начиная с версии:
- 1.0
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static final class |
Runtime.Version |
Представление строки версии реализации платформы Java SE. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addShutdownHook |
Регистрирует новый обработчик завершения работы виртуальной машины. |
int |
availableProcessors() |
Возвращает число процессоров, доступных виртуальной машине Java. |
Process |
exec |
Устарел. |
Process |
exec |
Выполняет указанную команду с аргументами в отдельном процессе. |
Process |
exec |
Выполняет указанную команду с аргументами в отдельном процессе с заданным окружением. |
Process |
exec |
Выполняет указанную команду с аргументами в отдельном процессе с заданными окружением и рабочим каталогом. |
Process |
exec |
Устарел. Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[], String[]) или ProcessBuilder. |
Process |
exec |
Устарел. Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[], String[], File) или ProcessBuilder. |
void |
exit |
Инициирует последовательность завершения работы виртуальной машины Java. |
long |
freeMemory() |
Возвращает объём свободной памяти в виртуальной машине Java. |
void |
gc() |
Запускает сборщик мусора в виртуальной машине Java. |
static Runtime |
getRuntime() |
Возвращает объект среды выполнения, связанный с текущим Java-приложением. |
void |
halt |
Немедленно завершает работу виртуальной машины Java. |
void |
load |
Ограниченный доступ. Загружает собственную библиотеку, указанную аргументом filename. |
void |
loadLibrary |
Ограниченный доступ. Загружает собственную библиотеку, указанную аргументом libname. |
long |
maxMemory() |
Возвращает максимальный объём памяти, который попытается использовать виртуальная машина Java. |
boolean |
removeShutdownHook |
Отменяет регистрацию ранее зарегистрированного обработчика завершения работы виртуальной машины. |
void |
runFinalization() |
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии. Финализация помечена как устаревшая и подлежащая удалению. |
long |
totalMemory() |
Возвращает общий объём памяти в виртуальной машине Java. |
static Runtime.Version |
version() |
Возвращает версию среды выполнения Java в виде Runtime.Version. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
Подробное описание методов
getRuntime
public static Runtime getRuntime()
Runtime являются методами экземпляра и должны вызываться относительно текущего объекта среды выполнения.- Возвращает:
- объект
Runtime, связанный с текущим приложением Java.
exit
public void exit(int status)
Аргумент служит кодом состояния. По соглашению ненулевой код состояния указывает на аварийное завершение.
Успешные вызовы этого метода сериализуются так, что только один вызов запускает последовательность завершения работы и завершает работу виртуальной машины с указанным кодом состояния. Все остальные вызовы не выполняют никаких действий и блокируются на неопределенный срок.
Поскольку успешный вызов этого метода блокируется на неопределенный срок, его вызов из обработчика завершения работы не позволит этому обработчику завершиться. Следовательно, это помешает завершению последовательности завершения работы.
Метод System.exit является общепринятым и удобным способом вызова этого метода.
- Примечание по реализации:
- Если для системного регистратора системный регистратор для
java.lang.Runtimeвключено ведение журнала с уровнемLevel.DEBUG, трассировка стека вызоваRuntime.exit()заносится в журнал. - Параметры:
-
status— состояние завершения. По соглашению ненулевой код состояния указывает на аварийное завершение. - См. также:
addShutdownHook
public void addShutdownHook(Thread hook)
Обработчик завершения работы — это просто инициализированный, но не запущенный поток. Обработчики завершения работы запускаются в начале последовательности завершения работы. Регистрация и отмена регистрации обработчиков завершения работы запрещены после начала последовательности завершения работы.
Неперехваченные исключения обрабатываются в обработчиках завершения работы так же, как и в любом другом потоке, согласно спецификации Thread.UncaughtExceptionHandler. После завершения работы обработчика неперехваченных исключений считается, что обработчик завершения работы завершил работу; он не рассматривается иначе, чем обработчик, завершивший работу без выброса неперехваченного исключения.
- Примечание к API:
- Обработчики завершения работы выполняются в критический момент жизненного цикла виртуальной машины, поэтому их следует писать с учетом возможных сбоев. В частности, они должны быть потокобезопасными и по возможности избегать взаимных блокировок. Не следует также безоговорочно полагаться на службы, которые могли зарегистрировать собственные обработчики завершения работы и поэтому сами могут находиться в процессе завершения. Попытки использовать другие службы на основе потоков, например поток диспетчеризации событий AWT, могут привести к взаимным блокировкам.
Обработчики завершения работы также должны быстро завершать свою работу. При вызове программой метода
exitпредполагается, что виртуальная машина быстро завершит работу и выйдет. Если виртуальная машина завершается из-за выхода пользователя из системы или завершения работы системы, базовая операционная система может предоставить лишь ограниченное время для завершения работы и выхода. Поэтому не рекомендуется взаимодействовать с пользователем или выполнять длительные вычисления в обработчике завершения работы. - Параметры:
-
hook— инициализированный, но не запущенный объектThread - Выбрасывает:
-
IllegalArgumentException— если тот же обработчик (сравниваемый с помощью==), что и указанный обработчик, уже зарегистрирован либо можно определить, что обработчик уже выполняется или уже выполнялся -
IllegalStateException— если последовательность завершения работы уже началась - Начиная с версии:
- 1.3
- См. также:
removeShutdownHook
public boolean removeShutdownHook(Thread hook)
==. Регистрация и отмена регистрации обработчиков завершения работы запрещены после начала последовательности завершения работы.- Параметры:
-
hook— обработчик, который требуется удалить - Возвращает:
-
true, если указанный обработчик был зарегистрирован ранее и его регистрацию удалось отменить; в противном случае —false. - Выбрасывает:
-
IllegalStateException— если последовательность завершения работы уже началась - Начиная с версии:
- 1.3
- См. также:
halt
public void halt(int status)
- Примечание к API:
- Этот метод следует использовать с особой осторожностью. Его использование может обойти или нарушить любые действия по очистке, предусмотренные обработчиками завершения работы, что может привести к повреждению данных. Другие возможные последствия принудительного завершения работы виртуальной машины Java описаны выше в разделе завершение работы.
- Параметры:
-
status— состояние завершения. По соглашению ненулевой код состояния указывает на аварийное завершение. Если методexit(или, что эквивалентно,System.exit) уже был вызван, этот код состояния переопределит код состояния, переданный этому методу. - Начиная с версии:
- 1.3
- См. также:
exec
@Deprecated(since="18") public Process exec(String command) throws IOException
exec(String[]) или ProcessBuilder. Строка команды разбивается на токены с использованием только пробельных символов. Если аргумент содержит пробел, например имя файла, это может привести к проблемам, поскольку токен не будет включать полное имя файла.Это вспомогательный метод. Вызов вида exec(command) ведет себя в точности так же, как вызов exec(command, null, null).
- Примечание по реализации:
- В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе
ProcessBuilder.start(). - Параметры:
-
command— указанная системная команда. - Возвращает:
- Новый объект
Processдля управления подпроцессом - Выбрасывает:
-
IOException— если возникает ошибка ввода-вывода -
NullPointerException— еслиcommandравноnull -
IllegalArgumentException— еслиcommandпуст - См. также:
exec
@Deprecated(since="18") public Process exec(String command, String[] envp) throws IOException
exec(String[], String[]) или ProcessBuilder. Строка команды разбивается на токены с использованием только пробельных символов. Если аргумент содержит пробел, например имя файла, это может привести к проблемам, поскольку токен не будет включать полное имя файла.Это вспомогательный метод. Вызов вида exec(command, envp) ведет себя в точности так же, как вызов exec(command, envp, null).
- Примечание по реализации:
- В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе
ProcessBuilder.start(). - Параметры:
-
command— указанная системная команда. -
envp— массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, илиnull, если подпроцесс должен наследовать окружение текущего процесса. - Возвращает:
- Новый объект
Processдля управления подпроцессом - Выбрасывает:
-
IOException— если возникает ошибка ввода-вывода -
NullPointerException— еслиcommandравноnullили один из элементовenvpравенnull -
IllegalArgumentException— еслиcommandпуст - См. также:
exec
@Deprecated(since="18") public Process exec(String command, String[] envp, File dir) throws IOException
exec(String[], String[], File) или ProcessBuilder. Строка команды разбивается на токены с использованием только пробельных символов. Если аргумент содержит пробел, например имя файла, это может привести к проблемам, поскольку токен не будет включать полное имя файла.Это вспомогательный метод. Вызов вида exec(command, envp, dir) ведет себя в точности так же, как вызов exec(cmdarray, envp, dir), где cmdarray — массив всех токенов в command.
Точнее, строка command разбивается на токены с помощью StringTokenizer, созданного вызовом new StringTokenizer(command), без дальнейшего изменения категорий символов. Затем токены, полученные токенизатором, помещаются в новый строковый массив cmdarray в том же порядке.
- Примечание по реализации:
- В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе
ProcessBuilder.start(). - Параметры:
-
command— указанная системная команда. -
envp— массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, илиnull, если подпроцесс должен наследовать окружение текущего процесса. -
dir— рабочий каталог подпроцесса илиnull, если подпроцесс должен наследовать рабочий каталог текущего процесса. - Возвращает:
- Новый объект
Processдля управления подпроцессом - Выбрасывает:
-
IOException— если возникает ошибка ввода-вывода -
NullPointerException— еслиcommandравноnullили один из элементовenvpравенnull -
IllegalArgumentException— еслиcommandпуст - Начиная с версии:
- 1.3
- См. также:
exec
public Process exec(String[] cmdarray) throws IOException
Это вспомогательный метод. Вызов вида exec(cmdarray) ведет себя в точности так же, как вызов exec(cmdarray, null, null).
- Примечание по реализации:
- В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе
ProcessBuilder.start(). - Параметры:
-
cmdarray— массив, содержащий вызываемую команду и ее аргументы. - Возвращает:
- Новый объект
Processдля управления подпроцессом - Выбрасывает:
-
IOException— если возникает ошибка ввода-вывода -
NullPointerException— еслиcmdarrayравноnullили один из элементовcmdarrayравенnull -
IndexOutOfBoundsException— еслиcmdarrayявляется пустым массивом (имеет длину0) - См. также:
exec
public Process exec(String[] cmdarray, String[] envp) throws IOException
Это вспомогательный метод. Вызов вида exec(cmdarray, envp) ведет себя в точности так же, как вызов exec(cmdarray, envp, null).
- Примечание по реализации:
- В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе
ProcessBuilder.start(). - Параметры:
-
cmdarray— массив, содержащий вызываемую команду и ее аргументы. -
envp— массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, илиnull, если подпроцесс должен наследовать окружение текущего процесса. - Возвращает:
- Новый объект
Processдля управления подпроцессом - Выбрасывает:
-
IOException— если возникает ошибка ввода-вывода -
NullPointerException— еслиcmdarrayравноnull, один из элементовcmdarrayравенnullили один из элементовenvpравенnull -
IndexOutOfBoundsException— еслиcmdarrayявляется пустым массивом (имеет длину0) - См. также:
exec
public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
Получив массив строк cmdarray, представляющий токены командной строки, и массив строк envp, представляющий настройки переменных «окружения», этот метод создает новый процесс для выполнения указанной команды.
Этот метод проверяет, что cmdarray является допустимой командой операционной системы. Набор допустимых команд зависит от системы, но как минимум команда должна представлять собой непустой список строк, не содержащих значений null.
Если envp равно null, подпроцесс наследует настройки окружения текущего процесса.
В некоторых операционных системах для запуска процесса может потребоваться минимальный набор зависящих от системы переменных окружения. В результате подпроцесс может наследовать дополнительные настройки переменных окружения помимо указанных в окружении. Минимальный набор зависящих от системы переменных окружения может переопределять значения, заданные в окружении.
Предпочтительным способом запуска процесса с измененным окружением теперь является ProcessBuilder.start().
Рабочий каталог нового подпроцесса задается параметром dir. Если dir равно null, подпроцесс наследует текущий рабочий каталог текущего процесса.
Запуск процесса операционной системы в значительной степени зависит от системы. Среди множества возможных проблем:
- Не найден программный файл операционной системы.
- Доступ к программному файлу запрещен.
- Рабочий каталог не существует.
В таких случаях будет выброшено исключение. Точный тип исключения зависит от системы, но оно всегда будет подклассом IOException.
Если операционная система не поддерживает создание процессов, будет выброшено исключение UnsupportedOperationException.
- Примечание по реализации:
- В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе
ProcessBuilder.start(). - Параметры:
-
cmdarray— массив, содержащий вызываемую команду и ее аргументы. -
envp— массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, илиnull, если подпроцесс должен наследовать окружение текущего процесса. -
dir— рабочий каталог подпроцесса илиnull, если подпроцесс должен наследовать рабочий каталог текущего процесса. - Возвращает:
- Новый объект
Processдля управления подпроцессом - Выбрасывает:
-
UnsupportedOperationException— если операционная система не поддерживает создание процессов. -
IOException— если возникает ошибка ввода-вывода -
NullPointerException— еслиcmdarrayравноnull, один из элементовcmdarrayравенnullили один из элементовenvpравенnull -
IndexOutOfBoundsException— еслиcmdarrayявляется пустым массивом (имеет длину0) - Начиная с версии:
- 1.3
- См. также:
availableProcessors
public int availableProcessors()
Это значение может измениться во время работы виртуальной машины. Поэтому приложениям, чувствительным к числу доступных процессоров, следует время от времени опрашивать это свойство и соответствующим образом корректировать использование ресурсов.
- Возвращает:
- максимальное количество процессоров, доступных виртуальной машине; не меньше одного
- Начиная с версии:
- 1.4
freeMemory
public long freeMemory()
gc может привести к увеличению значения, возвращаемого методом freeMemory.
- Возвращает:
- приблизительный объем памяти, доступной в данный момент для последующего выделения объектам, в байтах.
totalMemory
public long totalMemory()
Обратите внимание, что объем памяти, необходимый для хранения объекта любого заданного типа, может зависеть от реализации.
- Возвращает:
- общий объем памяти, доступной в данный момент для текущих и будущих объектов, в байтах.
maxMemory
public long maxMemory()
Long.MAX_VALUE.- Возвращает:
- максимальный объем памяти, который виртуальная машина попытается использовать, в байтах
- Начиная с версии:
- 1.4
gc
public void gc()
Вызов этого метода предлагает виртуальной машине Java приложить усилия для повторного использования неиспользуемых объектов, чтобы занимаемая ими память стала доступна виртуальной машине Java для повторного использования. После возврата управления из вызова метода виртуальная машина Java приложила все возможные усилия для освобождения пространства, занятого всеми неиспользуемыми объектами. Не гарантируется, что эти усилия приведут к сбору какого-либо определенного количества неиспользуемых объектов, освобождению определенного объема пространства или завершатся в какое-либо определенное время — до возврата метода или вообще. Также не гарантируется, что эти усилия позволят определить изменение достижимости какого-либо определенного числа объектов или что какое-либо определенное количество объектов Reference будет очищено и помещено в очередь.
Название gc означает «сборщик мусора». Виртуальная машина Java автоматически выполняет этот процесс повторного использования по мере необходимости в отдельном потоке, даже если метод gc не вызывается явно.
Метод System.gc() является общепринятым и удобным способом вызова этого метода.
runFinalization
@Deprecated(since="18", forRemoval=true) public void runFinalization()
Object.finalize(). При работе в JVM, в которой финализация отключена или удалена, объектов, ожидающих финализации, не будет, поэтому этот метод ничего не делает.
finalize объектов, признанных отброшенными, но методы finalize которых еще не запускались. После возврата управления из вызова метода виртуальная машина приложила все возможные усилия для завершения всех ожидающих финализаций. Виртуальная машина автоматически выполняет процесс финализации по мере необходимости в отдельном потоке, если метод runFinalization не вызывается явно.
Метод System.runFinalization() является общепринятым и удобным способом вызова этого метода.
- См. Спецификацию языка Java:
- 12.6 Финализация экземпляров классов
- См. также:
load
public void load(String filename)
load — это ограниченный метод платформы Java. load только при включенном доступе к ограниченным методам.Runtime.getRuntime().load("/home/avh/lib/libX11.so");). Если аргумент filename после удаления платформенного префикса библиотеки, пути и расширения файла указывает на библиотеку с именем, например, L, и нативная библиотека с именем L статически связана с виртуальной машиной, вызывается экспортированная библиотекой функция JNI_OnLoad_L вместо попытки загрузить динамическую библиотеку. Файл с именем, соответствующим аргументу, не обязательно должен существовать в файловой системе. Дополнительные сведения см. в спецификации JNI. В противном случае аргумент filename сопоставляется с образом нативной библиотеки способом, зависящим от реализации. Этот метод похож на метод loadLibrary(String)RESTRICTED, но принимает в качестве аргумента произвольное имя файла, а не только имя библиотеки, что позволяет загружать любые файлы с нативным кодом.
Метод System.load(String)RESTRICTED является общепринятым и удобным способом вызова этого метода.
- Параметры:
-
filename— файл для загрузки. - Исключения:
-
UnsatisfiedLinkError— если имя файла не является абсолютным путем, нативная библиотека не связана статически с виртуальной машиной или библиотека не может быть сопоставлена с образом нативной библиотеки хост-системой. -
NullPointerException— еслиfilenameимеет значениеnull -
IllegalCallerException— если вызывающий код находится в модуле, для которого не включен доступ к нативному коду. - Внешние спецификации
- См. также:
loadLibrary
public void loadLibrary(String libname)
loadLibrary — это ограниченный метод платформы Java. loadLibrary только при включенном доступе к ограниченным методам.libname. Аргумент libname не должен содержать платформенный префикс, расширение файла или путь. Если нативная библиотека с именем libname статически связана с виртуальной машиной, вызывается экспортированная библиотекой функция JNI_OnLoad_libname. Дополнительные сведения см. в спецификации JNI. В противном случае библиотека, указанная в аргументе libname, загружается из системного расположения библиотек и сопоставляется с образом нативной библиотеки способом, зависящим от реализации. Метод System.loadLibrary(String)RESTRICTED является общепринятым и удобным способом вызова этого метода. Если при реализации класса планируется использовать нативные методы, стандартная стратегия заключается в размещении нативного кода в файле библиотеки (назовем его LibFile), а затем добавлении статического инициализатора:
static { System.loadLibrary("LibFile"); }
в объявление класса. При загрузке и инициализации класса будет также загружена необходимая реализация нативного кода для нативных методов. Если этот метод вызывается несколько раз с одним и тем же именем библиотеки, второй и последующие вызовы игнорируются.
- Параметры:
-
libname— имя библиотеки. - Исключения:
-
UnsatisfiedLinkError— если аргумент libname содержит путь к файлу, нативная библиотека не связана статически с виртуальной машиной или библиотека не может быть сопоставлена с образом нативной библиотеки хост-системой. -
NullPointerException— еслиlibnameимеет значениеnull -
IllegalCallerException— если вызывающий код находится в модуле, для которого не включен доступ к нативному коду. - Внешние спецификации
version
public static Runtime.Version version()
Runtime.Version.- Возвращает:
- объект
Runtime.Version, представляющий версию среды выполнения Java - Начиная с версии:
- 9
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
exec(String[])илиProcessBuilder.