Spec-Zone.ru › OpenJDK 21

Класс Runtime

java.lang.Object
java.lang.Runtime
public class Runtime extends Object
Каждый Java-приложение имеет единственный экземпляр класса Runtime, который позволяет приложению взаимодействовать со средой, в которой оно выполняется. Текущий runtime можно получить из метода getRuntime.

Приложение не может создать собственный экземпляр этого класса.

Последовательность завершения

Java Virtual Machine инициирует последовательность завершения в ответ на одно из нескольких событий:

  1. когда количество активных не-демон-потоков падает до нуля впервые (см. примечание ниже о JNI Invocation API);
  2. когда метод Runtime.exit или System.exit вызывается впервые; или
  3. когда происходит какое-либо внешнее событие, такое как прерывание или получение сигнала от операционной системы.

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

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

Последовательность завершения завершается, когда все обработчики завершения завершены. В этот момент Java Virtual Machine завершается, как описано ниже.

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

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

Завершение Java Virtual Machine

JVM завершается, когда последовательность завершения завершается или когда вызывается halt. В отличие от exit, метод halt не инициирует последовательность завершения.

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

  • текущие методы потоков не завершаются нормально или внезапно;
  • finally блоки не выполняются;
  • обработчики необработанных исключений не выполняются; и
  • ресурсы, открытые с помощью try-with-resources, не закрываются;
Примечание по реализации:
Нативный код обычно использует JNI Invocation API для управления запуском и завершением JVM. Такой нативный код вызывает функцию JNI_CreateJavaVM для запуска JVM. Затем нативный код вызывает функцию DestroyJavaVM, чтобы дождаться завершения JVM. Функция DestroyJavaVM отвечает за инициирование последовательности завершения, когда количество активных не-демон-потоков впервые падает до нуля. Когда последовательность завершения завершается и JVM завершается, управление возвращается нативному коду, вызвавшему DestroyJavaVM. Это поведение отличается от методов exit или halt. Эти методы обычно завершают процесс ОС, размещающий JVM, и не взаимодействуют с JNI Invocation API.
См. Спецификацию языка Java:
12.8 Выход из программы
С:
1.0
Внешние спецификации
  • Спецификация Java Native Interface
См. также:
  • getRuntime()

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static final class  Runtime.Version
Представление строки версии для реализации Java SE Platform.

Краткое описание методов

Модификатор и тип Метод Описание
void addShutdownHook(Thread hook)
Регистрирует новый обработчик завершения виртуальной машины.
int availableProcessors()
Возвращает количество процессоров, доступных для Java Virtual Machine.
Process exec(String command)
Устаревший.
Этот метод подвержен ошибкам и не должен использоваться, вместо него следует использовать соответствующий метод exec(String[]) или ProcessBuilder.
Process exec(String[] cmdarray)
Выполняет указанную команду и аргументы в отдельном процессе.
Process exec(String[] cmdarray, String[] envp)
Выполняет указанную команду и аргументы в отдельном процессе с указанной средой.
Process exec(String[] cmdarray, String[] envp, File dir)
Выполняет указанную команду и аргументы в отдельном процессе с указанной средой и рабочей директорией.
Process exec(String command, String[] envp)
Устаревший.
Этот метод подвержен ошибкам и не должен использоваться, вместо него следует использовать соответствующий метод exec(String[], String[]) или ProcessBuilder.
Process exec(String command, String[] envp, File dir)
Устаревший.
Этот метод подвержен ошибкам и не должен использоваться, вместо него следует использовать соответствующий метод exec(String[], String[], File) или ProcessBuilder.
void exit(int status)
Инициирует последовательность завершения Java Virtual Machine.
long freeMemory()
Возвращает количество свободной памяти в Java Virtual Machine.
void gc()
Запускает сборщик мусора в Java Virtual Machine.
static Runtime getRuntime()
Возвращает объект runtime, связанный с текущим Java-приложением.
void halt(int status)
Немедленно завершает Java Virtual Machine.
void load(String filename)
Загружает нативную библиотеку, указанную в аргументе filename.
void loadLibrary(String libname)
Загружает нативную библиотеку, указанную в аргументе libname.
long maxMemory()
Возвращает максимальный объем памяти, который Java virtual machine попытается использовать.
boolean removeShutdownHook(Thread hook)
Отменяет регистрацию ранее зарегистрированного обработчика завершения виртуальной машины.
void runFinalization()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Финализация устарела для удаления.
long totalMemory()
Возвращает общий объем памяти в Java virtual machine.
static Runtime.Version version()
Возвращает версию Java Runtime Environment в виде Runtime.Version.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

getRuntime

public static Runtime getRuntime()
Возвращает объект runtime, связанный с текущим приложением Java. Большинство методов класса Runtime являются методами экземпляра и должны вызываться относительно текущего объекта runtime.
Возвращает:
объект Runtime , связанный с текущим приложением Java.

exit

public void exit(int status)
Инициирует последовательность завершения работы виртуальной машины Java. Если менеджер безопасности не запрещает завершение работы, этот метод инициирует последовательность завершения (если она еще не начата) и затем блокируется неопределенно долго. Этот метод не возвращает значение и не генерирует исключение; то есть он не завершается ни нормально, ни с ошибкой.

Аргумент служит в качестве кода состояния. По соглашению, ненулевой код состояния указывает на аномальное завершение.

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

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

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

Примечание реализации:
Если системный логгер для java.lang.Runtime включен с уровнем ведения журнала Level.DEBUG, то трассировка стека вызова Runtime.exit() регистрируется.
Параметры:
status - Код завершения. По соглашению, ненулевой код состояния указывает на аномальное завершение.
Исключения:
SecurityException - Если присутствует менеджер безопасности, и его метод checkExit не разрешает завершение с указанным кодом.
См. также:
  • SecurityException
  • SecurityManager.checkExit(int)
  • addShutdownHook(java.lang.Thread)
  • removeShutdownHook(java.lang.Thread)
  • halt(int)

addShutdownHook

public void addShutdownHook(Thread hook)
Регистрирует новый обработчик завершения работы виртуальной машины.

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

Обработка необработанных исключений в обработчиках завершения работы выполняется так же, как и в любом другом потоке, как указано в Thread.UncaughtExceptionHandler. После завершения обработчика необработанных исключений обработчик завершения работы считается завершенным и не обрабатывается иначе, чем обработчик, завершенный без вызова необработанного исключения.

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

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

Параметры:
hook - Инициализированный, но не запущенный объект Thread
Исключения:
IllegalArgumentException - Если тот же обработчик (сравненный с помощью ==) что и указанный обработчик уже был зарегистрирован, или если можно определить, что обработчик уже запущен или уже был запущен
IllegalStateException - Если последовательность завершения работы уже началась
SecurityException - Если менеджер безопасности присутствует и он отклоняет RuntimePermission("shutdownHooks")
С тех пор как:
1.3
См. также:
  • removeShutdownHook(java.lang.Thread)
  • halt(int)
  • exit(int)

removeShutdownHook

public boolean removeShutdownHook(Thread hook)
Отменяет регистрацию ранее зарегистрированного обработчика завершения работы виртуальной машины. Обработчики сравниваются с помощью ==. Регистрация и отмена регистрации обработчиков завершения работы запрещены после начала последовательности завершения работы.
Параметры:
hook - обработчик для удаления
Возвращает:
true , если указанный обработчик был ранее зарегистрирован и был успешно удален, false в противном случае.
Исключения:
IllegalStateException - Если последовательность завершения работы уже началась
SecurityException - Если менеджер безопасности присутствует и он отклоняет RuntimePermission("shutdownHooks")
С тех пор как:
1.3
См. также:
  • addShutdownHook(java.lang.Thread)
  • exit(int)

halt

public void halt(int status)
Немедленно завершает виртуальную машину Java. Если менеджер безопасности запрещает выход, генерирует SecurityException. В противном случае, завершение работы виртуальной машины Java безусловно и немедленно. Этот метод не инициирует последовательность завершения работы, а также не ожидает завершения последовательности завершения, если она уже выполняется. Вызов этого метода никогда не завершается нормально.
Примечание API:
Этот метод следует использовать с большой осторожностью. Его использование может обойти или нарушить любые действия по очистке, которые должны выполняться обработчиками завершения работы, что может привести к повреждению данных. См. раздел «Завершение» выше для других возможных последствий остановки виртуальной машины Java.
Параметры:
status - Код завершения. По соглашению, ненулевой код состояния указывает на аномальное завершение. Если метод exit (эквивалентно System.exit) уже был вызван, то этот код состояния переопределит код состояния, переданный этому методу.
Исключения:
SecurityException - Если менеджер безопасности присутствует, и его метод checkExit не разрешает выход с указанным кодом
С тех пор как:
1.3
См. также:
  • exit(int)
  • addShutdownHook(java.lang.Thread)
  • removeShutdownHook(java.lang.Thread)

exec

@Deprecated(since="18") public Process exec(String command) throws IOException
Устарело.
Этот метод подвержен ошибкам и не должен использоваться, вместо него следует использовать соответствующий метод exec(String[]) или ProcessBuilder. Строка команды разбивается на токены, используя только символы пробела. Для аргумента с вложенным пробелом, например, для имени файла, это может вызвать проблемы, поскольку токен не включает полное имя файла.
Выполняет указанную строковую команду в отдельном процессе.

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

Примечание реализации:
В реализации эталонной системы можно включить ведение журнала созданного процесса, см. ProcessBuilder.start() для получения подробностей.
Параметры:
command - указанная системная команда.
Возвращает:
Новый объект Process для управления подпроцессом
Исключения:
SecurityException - Если менеджер безопасности существует, и его метод checkExec не разрешает создание подпроцесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если command равно null
IllegalArgumentException - Если command пусто
См. также:
  • exec(String[], String[], File)
  • ProcessBuilder

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 для управления дочерним процессом
Исключения:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если command является null, или один из элементов envp является null.
IllegalArgumentException - Если command пустое
См. также:
  • exec(String[], String[], File)
  • ProcessBuilder

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 для управления дочерним процессом
Исключения:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если command является null, или один из элементов envp является null
IllegalArgumentException - Если command пустое
С тех пор как:
1.3
См. также:
  • ProcessBuilder

exec

public Process exec(String[] cmdarray) throws IOException
Выполняет указанную команду и аргументы в отдельном процессе.

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

Примечание по реализации:
В эталонной реализации можно включить протоколирование созданного процесса, см. ProcessBuilder.start() для подробностей.
Параметры:
cmdarray - массив, содержащий вызываемую команду и ее аргументы.
Возвращает:
Новый объект Process для управления дочерним процессом
Исключения:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если cmdarray является null, или один из элементов cmdarray является null
IndexOutOfBoundsException - Если cmdarray — пустой массив (имеет длину 0)
См. также:
  • ProcessBuilder

exec

public Process exec(String[] cmdarray, String[] envp) throws IOException
Выполняет указанную команду и аргументы в отдельном процессе с указанной средой.

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

Примечание по реализации:
В эталонной реализации можно включить протоколирование созданного процесса, см. ProcessBuilder.start() для подробностей.
Параметры:
cmdarray - массив, содержащий вызываемую команду и ее аргументы.
envp - массив строк, каждый элемент которого содержит настройки переменных среды в формате имя=значение, или null, если дочерний процесс должен унаследовать среду текущего процесса.
Возвращает:
Новый объект Process для управления дочерним процессом
Исключения:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если cmdarray является null, или один из элементов cmdarray является null, или один из элементов envp является null
IndexOutOfBoundsException - Если cmdarray — пустой массив (имеет длину 0)
См. также:
  • ProcessBuilder

exec

public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
Выполняет указанную команду и аргументы в отдельном процессе с указанной средой и рабочей директорией.

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

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

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

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

ProcessBuilder.start() — это предпочтительный способ запуска процесса с изменённой средой.

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

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

Запуск процесса операционной системы сильно зависит от системы. Среди многих возможных проблем:

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

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

Если операционная система не поддерживает создание процессов, будет брошено исключение UnsupportedOperationException.

Implementation Note:
В эталонной реализации можно включить ведение журнала созданного процесса, см. ProcessBuilder.start() для получения подробностей.
Parameters:
cmdarray - массив, содержащий вызываемую команду и её аргументы.
envp - массив строк, каждый элемент которого содержит настройки переменной среды в формате имя=значение, или null если дочерний процесс должен унаследовать среду текущего процесса.
dir - рабочая директория дочернего процесса, или null если дочерний процесс должен унаследовать рабочую директорию текущего процесса.
Returns:
Новый объект Process для управления дочерним процессом
Throws:
SecurityException - Если существует менеджер безопасности и его метод checkExec не разрешает создание дочернего процесса
UnsupportedOperationException - Если операционная система не поддерживает создание процессов.
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если cmdarray равно null, или один из элементов cmdarray равен null, или один из элементов envp равен null
IndexOutOfBoundsException - Если cmdarray — пустой массив (имеет длину 0)
Since:
1.3
See Also:
  • ProcessBuilder

availableProcessors

public int availableProcessors()
Возвращает количество процессоров, доступных для виртуальной машины Java.

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

Returns:
максимальное количество процессоров, доступных для виртуальной машины; никогда не меньше одного
Since:
1.4

freeMemory

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

totalMemory

public long totalMemory()
Возвращает общее количество памяти в виртуальной машине Java. Возвращаемое значение этого метода может меняться со временем, в зависимости от среды хоста.

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

Returns:
общее количество памяти, в настоящее время доступной для текущих и будущих объектов, измеряется в байтах.

maxMemory

public long maxMemory()
Возвращает максимальное количество памяти, которое виртуальная машина Java попытается использовать. Если нет ограничения, то будет возвращено значение Long.MAX_VALUE.
Returns:
максимальное количество памяти, которое виртуальная машина попытается использовать, измеряется в байтах
Since:
1.4

gc

public void gc()
Выполняет сборщик мусора в виртуальной машине Java.

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

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

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

runFinalization

@Deprecated(since="18", forRemoval=true) public void runFinalization()
Deprecated, for removal: Этот элемент API планируется удалить в будущей версии.
Финализация устарела и будет удалена. См. Object.finalize() для получения информации о контексте и подробностей о вариантах миграции.

При запуске в JVM, в которой финализация отключена или удалена, нет объектов, ожидающих финализации, поэтому этот метод ничего не делает.

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

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

Метод System.runFinalization() — это общепринятый и удобный способ вызова этого метода.

См. Спецификацию языка Java:
12.6 Финализация экземпляров классов
See Also:
  • Object.finalize()

загрузка

public void load(String filename)
Загружает системную библиотеку, указанную аргументом filename. Аргумент filename должен быть абсолютным путём. (например Runtime.getRuntime().load("/home/avh/lib/libX11.so");). Если аргумент filename, после удаления всех платформ-специфичных префиксов, путей и расширений, указывает на библиотеку, имя которой, например, L, и системная библиотека, названная L, статически связана с виртуальной машиной, тогда вызывается функция JNI_OnLoad_L, экспортируемая библиотекой, а не происходит попытка загрузить динамическую библиотеку. Файл, соответствующий аргументу, не обязательно должен существовать в файловой системе. Для получения более подробной информации см. Спецификацию JNI. В противном случае, аргумент filename отображается на образ системной библиотеки зависящим от реализации способом.

Сначала, если существует менеджер безопасности, вызывается его метод checkLink с аргументом filename. Это может привести к исключению безопасности.

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

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

Параметры:
filename - файл для загрузки.
Исключения:
SecurityException - если менеджер безопасности существует и его метод checkLink не разрешает загрузку указанной динамической библиотеки
UnsatisfiedLinkError - если имя файла не является абсолютным путём, нативная библиотека не статически связана с виртуальной машиной или библиотека не может быть отображена на образ нативной библиотеки хост-системой.
NullPointerException - если filename является null
Внешние спецификации
  • Спецификация Java Native Interface
См. также:
  • getRuntime()
  • SecurityException
  • SecurityManager.checkLink(java.lang.String)

loadLibrary

public void loadLibrary(String libname)
Загружает системную библиотеку, указанную аргументом libname. Аргумент libname не должен содержать каких-либо платформ-специфичных префиксов, расширений файлов или путей. Если нативная библиотека, названная libname, статически связана с виртуальной машиной, тогда вызывается функция JNI_OnLoad_libname, экспортируемая библиотекой. Для получения более подробной информации см. Спецификацию JNI. В противном случае, аргумент libname загружается из системного места расположения библиотеки и отображается на образ нативной библиотеки зависящим от реализации способом.

Сначала, если существует менеджер безопасности, вызывается его метод checkLink с аргументом libname. Это может привести к исключению безопасности.

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

 static { System.loadLibrary("LibFile"); }
 
в объявлении класса. Когда класс загружается и инициализируется, необходимое нативное кодовое воплощение для нативных методов также будет загружено.

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

Параметры:
libname - имя библиотеки.
Исключения:
SecurityException - если менеджер безопасности существует и его метод checkLink не разрешает загрузку указанной динамической библиотеки
UnsatisfiedLinkError - если аргумент libname содержит путь к файлу, нативная библиотека не статически связана с виртуальной машиной или библиотека не может быть отображена на образ нативной библиотеки хост-системой.
NullPointerException - если libname является null
Внешние спецификации
  • Спецификация Java Native Interface
См. также:
  • SecurityException
  • SecurityManager.checkLink(java.lang.String)

версия

public static Runtime.Version version()
Возвращает версию Java Runtime Environment как Runtime.Version.
Возвращает:
версия Runtime.Version Java Runtime Environment
С:
9

© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Runtime.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API