Ответ 1
Если библиотека уже загружена, последующие вызовы для загрузки той же библиотеки будут проигнорированы.
Загружает системную библиотеку, указанную в аргумент libname. Способ в которое имя библиотеки отображается на актуальной системной библиотекой является система зависимыми.
Вызов System.loadLibrary(name) - это фактически эквивалентный вызову
Runtime.getRuntime().loadLibrary(name)
Загружает динамическую библиотеку с помощью указанное имя библиотеки. Файл содержащий нативный код загружается из локальная файловая система с места где обычно хранятся файлы библиотек получен. Детали этого процесса зависят от реализации. отображение из имени библиотеки в конкретное имя файла выполняется в системным образом.
Во-первых, если есть менеджер безопасности, его метод checkLink вызывается с libname в качестве аргумента. Это может приведет к исключению безопасности.
Метод System.loadLibrary(String) является обычным и удобным средство вызова этого метода. Если Нативные методы должны использоваться в реализация класса, стандартного стратегия состоит в том, чтобы поместить собственный код в файл библиотеки (назовите его LibFile) и затем поставить статический инициализатор:
static { System.loadLibrary("LibFile"); }
в объявлении класса. Когда класс загружается и инициализируется, необходимая реализация собственного кода для собственных методов будет тогда также загружен.
Если этот метод вызывается больше, чем один раз с тем же именем библиотеки, вторых и последующих звонков игнорируются.