2012-03-22 4 views

Odpowiedz

6

Chodzi o to, że można oddzielić zależności aplikacji; w celu zwiększenia mobilności aplikacji. Chodzi o to, że podczas kompilacji można uzależnić aplikację od api.jar. Następnie, gdy chcesz uruchomić program, możesz przełączyć się w odpowiednim słoju implementacyjnym (impl.jar) i odpowiednim słoju pakunku zasobów (bundle.jar).

Jako przykład załóżmy, że biblioteka wykonuje pewną interakcję z bazą danych. Piszesz swój kod, aby odnosił się do api.jar. Załóżmy teraz, że potrzebujesz go do pracy z określonym typem bazy danych, np. MySQL - dodajesz wtedy impl.jar, który jest specyficzny dla baz danych MySQL do ścieżki klasy, aby uruchomić go (jeśli potrzebujesz później innej bazy danych - wystarczy zmienić ten jar w ścieżce klasy).

Numer bundle.jar jest nieco bardziej niejasny i nie jest tak powszechny. To może być użyte do dostarczenia ustawień konfiguracyjnych dla biblioteki. Na przykład może być używany do dostarczania ustawień specyficznych dla języka lub do bardziej specyficznej konfiguracji. W przypadku biblioteki baz danych może być tak, że implementacja jest zaprojektowana dla wszystkich wersji MySQL, a jar pakietu zasobów dostarcza pliki konfiguracyjne, które pozwalają mu pracować dla konkretnej wersji MySQL.

6

Często:

  • name-api.jar zawiera tylko interfejs API.
  • name-impl.jar zapewnia realizację wszystkich interfejsów w imię-api.jar
  • name-bundle.jar skupia wszystkie wszystko ze wszystkimi niezbędnymi klas uruchomić aplikację Java.
-1

Nigdy nie widziałem takiego rozwiązania.

Jeśli projektant spakował aplikację do trzech JARów, powiedziałbym, że wszystkie trzy są potrzebne.

Powinieneś jednak wiedzieć, że to tylko wybór dokonany przez projektanta. Możliwe, że on sam stworzył pojedynczy JAR ze wszystkim, co w nim jest, a ty nie byłbyś mądrzejszy.

Zgaduję teraz, ale gdybyś otworzył te JAR-y, zobaczyłbyś tylko interfejsy w JAR API, implementacje tych interfejsów w implikowanym pliku JAR oraz pakiety zasobów i inne pliki .properties w pakiecie JAR . Spróbuj i zobacz. Dowiesz się czegoś.

1

api.jar zawiera interfejsy API. Są to interfejsy jako umowa, która powinna być zgodna z implementacją API.

impl.jar jest implementacją api.jar. Nie możesz po prostu mieć impl.jar bez api.jar.

bundle.jar to zasoby (jeśli się nie mylę). Są to zasoby potrzebne do wprowadzenia kodu niezbędnego do uruchomienia.