При импорте класса java-библиотеки из jar это считается статическим связыванием? или динамический?
Скажем, у меня есть jcifs-1.3.14.jar в моей папке lib, и у меня есть класс, который импортируется из библиотеки и использует классы, такие как:
import jcifs.smb.*;
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain,
user,
pass);
SmbFile file = new SmbFile(path, auth);
// do some operations with the file here
При использовании библиотеки таким образом считается, что: A) Статическое связывание ИЛИ B) Динамическое связывание ИЛИ C) что-то еще?
Ответы
Ответ 1
Если вы ищете информацию о применении различных лицензий на программное обеспечение на Java-программах, поиск Google для <license name> Java
обычно приводит к полезному результату.
Например, для LGPL Java
, этот является первым хитом. В этом конкретном случае нижняя строка:
Приложения, которые ссылаются на LGPL библиотеки не должны выпускаться под LGPL. Приложения нужны только соблюдать требования раздела 6 LGPL: разрешить новые версии библиотеку, связанную с выражение; и разрешить чтобы отладить это.
т.е. до тех пор, пока библиотека предоставляется в отдельном файле JAR, который может быть легко заменен, LGPL позволяет это.
PS: Я не юрист! Если есть сомнения, проконсультируйтесь с ним. На самом деле, в зависимости от того, где вы живете, имеет смысл проконсультироваться с ним, независимо от того, имеете ли вы сомнение или нет.
Ответ 2
Статический и динамический, как в С++, не существует в Java. Все классы загружаются в JVM по мере их ссылки, поэтому вы должны думать, что все импортные (включая отражения) в Java динамические.
И да, это. * плохо, потому что он ссылается на все классы в этом пакете.
Ответ 3
Ну, вы не компилируете код из библиотеки в свои классы java. Скомпилированные классы ссылаются на классы из другой библиотеки по имени. Когда это необходимо, класс загружается загрузчиком классов. Это больше похоже на динамическое связывание.
С точки зрения лицензирования - например. LGPL, его следует рассматривать как динамическое связывание. Я никогда не слышал о каком-либо законе в этом случае (хотя я искал его), но это очень удобно, я с нетерпением жду этого, потому что многие разработчики немного беспокоятся об этом.