2011-01-26 12 views
15

że mam JCIFS-1.3.14.jar w moim folderze lib i mam klasę, która jest importowanie z biblioteki i wykorzystuje zajęcia jak:Podczas importowania klasy biblioteki Java ze słoika jest to uważane za łączenie statyczne? lub dynamiczny?

import jcifs.smb.*; 
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, 
                   user, 
                   pass); 
SmbFile file = new SmbFile(path, auth); 
// do some operations with the file here 

Podczas korzystania z biblioteki w ten sposób jest to uważane za: A) Łączenie statyczne LUB B) Łączenie dynamiczne OR C) coś innego?

+1

Nie uważa się tego za zależność. –

+2

Myślę, że może to mieć znaczenie w przypadku niektórych licencji. Brałem udział w sprawie, w której biblioteka była LGPL, a więc dzwoniący był w związku z tym dynamicznie powiązany, aby uniknąć licencji wirusowej - statyczne łączenie powodowałoby, że ich kod byłby zgodny z LGPL –

+0

, ponieważ java robi to dynamicznie licencjonowaną bibliotekę LGPL można używać w produkt komercyjny bez zmuszania kodu wywołującego do LGPL? –

Odpowiedz

10

Jeśli szukasz informacji o stosowaniu różnych licencji na oprogramowanie w programach Java, przeszukiwanie Google pod kątem <license name> Java zwykle skutkuje trafnym trafieniem.

Np. Dla LGPL Java, this to pierwsze trafienie. W tym konkretnym przypadku, dolna linia:

Wnioski, które linkują do LGPL biblioteki nie musi być wydany na LGPL. Aplikacje wymagają tylko zgodnie z wymaganiami w sekcji 6 LGPL: zezwalaj na dołączanie nowych wersji biblioteki do aplikacji ; i pozwól, aby inżynieria odwrotna dokonała debugowania tego.

tj. tak długo, jak biblioteka jest dostarczana w oddzielnym pliku JAR, który można łatwo wymienić, LGPL na to pozwala.

PS: Nie jestem prawnikiem! W razie wątpliwości skonsultuj się z jednym. W rzeczywistości, w zależności od tego, gdzie mieszkasz, może być sens skonsultować się z jednym bez względu na to, czy masz wątpliwości.

+0

A jeśli pracujesz dla firmy i jest to częścią twojej pracy, jest szansa, że ​​istnieje również pewna polityka firmy. – biziclop

7

Statyczny kontra dynamiczny jak w C++ nie istnieje w Javie. Całą klasę ładuje się do JVM, ponieważ są one przywoływane, więc warto pomyśleć, że wszystkie importowane (w tym odbicia) w Javie są dynamiczne.

I tak, to * jest złe, ponieważ odnosi się do wszystkich klas w tym pakiecie.

+0

yeah the. * Ma na celu skrócenie kodu próbki –

+0

Cool. Myślałem, że to część tego pytania. –

+6

Um, instrukcje importu nie są zawarte w skompilowanym kodzie bajtowym. Wszystko wskazuje na pełną nazwę. Problem z importowaniem pakietu. * To wysoki potencjał konfliktów nazw. – ILMTitan

3

Cóż, nie kompilujesz kodu z biblioteki do klas java. Twoje skompilowane klasy odwołują klasy z innej biblioteki według nazwy. W razie potrzeby klasa jest ładowana przez moduł ładujący klasy. Jest bardziej podobny do dynamicznego łączenia.

Z punktu widzenia licencji - f.g. Licencja LGPL, należy ją traktować jako dynamiczne łączenie. Nigdy nie słyszałem o żadnym postępowaniu w tej sprawie (chociaż go szukałem), ale jest to wysoce prawdopodobne, nie mogę się doczekać, ponieważ wielu programistów jest trochę zaniepokojonych.

Powiązane problemy