Главная » Java » Загрузка native-кода

0

 

   В разделе 2.10 мы уже упоминали модификатор native, который находит применение в конструкциях объявлений методов и служит для указания на то, что код метода написан на одном из "родственных" (native) языков программирования. В процессе работы приложения код такого метода, подлежащего выполнению, должен быть предварительно загружен в виртуальную машину. Для осуществления подобных действий применяются описанные ниже методы класса Runtime (детали процесса зависят от особенностей исполняющей и операционной систем).

 public void loadLibrary(String libname)

Загружает динамическую библиотеку с наименованием libname. Имя соответствует файлу, расположенному в том каталоге локальной файловой системы, который предназначен для хранения библиотечных файлов. Правила сопоставления имен библиотек и конкретных файлов определяются системой.

 

public void load(String filename)

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

   Обычно классы, имеющие в своем составе native-методы, выполняют загрузку соответствующих библиотек в процессе инициализации, размещая инструкции 1°а" в пределах блоков статической инициализации. Впрочем, вполне приемлем и тако подход, когда код метода загружается по требованию, — только в том случае, есл необходимость в его выполнении действительно имеется.

   Загрузка библиотек  native-методов,  естественно,  является  привилегированной (privileged) операцией, и поэтому при отсутствии необходимых полномочии будет выброшено исключение типа SecurityException. Если файл библиотеки не может быть найден либо при попытке загрузки возникает ошибка, генерируется исключение типа Unsati sfiedLinkError.

  В составе класса System предусмотрен метод mapLibraryName, который "связывает" имя библиотеки с наименованием соответствующего файла в файловой системе. Так, например, библиотеке awt в среде Windows может соответствовать файл awt.dll, а в UNIX-системе — файл libawt.so.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии