Java - aplikacja z systemem aktualizacji, modułami, pluginami

0

Witam,
otóż biorę się za napisanie dużej aplikacji z kilkoma modułami (baza danych, web engine do pobierania informacji, raportowanie). Chciałbym aby aplikacja mogła aktualizować się przez internet pobierając odpowiednie pliki z serwera (wtedy nie trzeba było by ponownie konfigurować aplikacji itd). Ktoś ma pomysły jak to zrobić? Próbowałem rozgryźć JDownloadera, całość programu chyba jest w jednym pliku *.jar co mnie mocno zdziwiło. Program posiada też drugi *.jar jdupdate który jak łatwo się domyślić odpowiada aktualizacje.
Zastanawiam się też nad podejściem takim, żeby rozbić aplikację na kilka plików *.jar. Wtedy mała aplikacja uruchamiana przed główną aplikacją kontaktowała by się ze serwerem i ew podmieniała pliki które są stare. Nie wiem tylko jeszcze jak zaprojektować ewentualne moduły tak, żeby korzystać z nich w głównej aplikacji. Chciałem do systemu modułów użyć Java Plugin Framework (JPF) ale jest on nieaktualizowany od 2007 więc chyba średnio się nada do aplikacji. OSGi na razie nie mogę totalnie zrozumieć a mało jest tutoriali w sieci. Dlatego myślę, że obsługą pluginów (tzn. wczytywaniem plików jar) zajmie się główna klasa i jeżeli nie będą istniały odpowiednie pliki jar to zakończy aplikację żeby ta nie wyrzucała błędów.
Trzecia sprawa to system pluginów podobny do tego z JDownloadera. Mianowicie zauważyłem, że używa on do pobierania z serwisów systemu pluginów opartego o pliki *.class . Trochę poszperałem po sieci i znalazłem coś takiego jak URLClassLoader. Czy ta klasa wystarczy do obsługi zewnętrznych plików klas? Jak utworzyć taki plik np. w NetBeans lub Eclipse?

Z góry dzięki za wszelkie sugestie.
Pozdrawiam

0

A próbowałeś oprzeć swój program np na NetBeans Platform (http://netbeans.org/features/platform/)?

0

potrzebujesz 2 jary na windowsie (na unixach wystarczy jeden, bo system pozwala usuwać używaną binarkę).

W programie uruchamiasz aktualizatora (przez Runtime.exec) i wyłączasz sam program. Aktualizator ściąga najpierw nowszą wersję, potem podmienia plik z programem i go uruchamia.

URLClassLoader wystarczy do obsługi zewnętrznych bibliotek. Ale lepiej nie opieraj wszystkiego na .getMethod().invoke(), tylko zrób odpowiednie interfejsy.

Może się przyda jeszcze takie coś: http://pastebin.com/0vhhbFT6
Znalezione w necie i zmodyfikowane

0

Patrzylem ten link. Powiedz mi prosze, dlaczego potrzebny jest jakis ZipClassLoader? Przeciez jar to zip, a wiec URLClassLoader czy inny standardowy sobie z tym poradzi.

0

Netbeans platform wygląda nieźle. Obawiam się tylko czy narzut środowiska nie będzie zbyt duży. Ma ktoś z tym jakieś doświadczenie?
I czy ma ktoś jakieś tutoriale do tego środowiska bo "Top 10 API" za wiele mi nie wyjaśniło... a na youtube coś mało materiałów więc chyba nie jest to zbyt popularne środowisko.

0

http://netbeans.org/features/platform/all-docs.html

Ogólnie start aplikacji trochę zajmuje, ale potem już nie zauważyłem jakiś problemów z wydajnością. Chociaż nic specjalnie dużego nie pisałem(prosty CRUD).

1 użytkowników online, w tym zalogowanych: 0, gości: 1