Blog IT, Blog Marketing

Deployment Java

Deployment Java

Marcin Sarna , 16.02.2021 r.

Kilka sposobów na wdrożenie Twojego programu.

Jak dystrybuować?

Dystrybucja aplikacji na kilku komputerach w tej samej firmie nie stanowi problemu. Dostępnych jest wiele produktów do automatyzacji przesyłania plików na komputery. Problemy mogą zacząć się pojawiać, gdy trzeba skoordynować wdrażanie w różnych lokalizacjach fizycznych. Jednak największym problemem jest sytuacja, gdy komputery na których wdrożenie nastąpi nie są jeszcze znane z wyprzedzeniem. Z tego powodu dwie dekady temu widzieliśmy przejście od architektur klient-serwer do architektur internetowych.

Pozostaje jednak ciągle pytanie, jak wdrożyć aplikację desktopową w języku Java (tak, jeszcze się je pisze). Popatrzmy na kilka opcji dystrybucji tego rodzaju aplikacji.

Aplety

Ta metoda nie dotyczy wyłącznie aplikacji desktopowych. Aplety były pierwszym sposobem zdalnego udostępniania aplikacji Java. Pomysł polegał na umieszczeniu na serwerze sieciowym zarówno kodu bajtowego (pojedynczej klasy lub JAR), jak i odniesienia do niego na stronie HTML.

 <!DOCTYPE html>
<html>
<body>
<applet code="HelloWorld.class" height="640" width="480"></applet>
</body>
</html>

Zwróć uwagę, że aplet działa po stronie klienta, dlatego wymaga lokalnego środowiska JRE. Wymaga również wtyczki przeglądarki. Obie kwestie dotyczą bezpieczeństwa. To doprowadziło dostawców przeglądarek do usunięcia obsługi wtyczek, a zespół Java wycofał aplety w Javie 9.

Ponieważ współcześni dostawcy przeglądarek pracują nad ograniczeniem lub zmniejszeniem obsługi wtyczek, takich jak Flash, Silverlight czy Java w swoich produktach, twórcy aplikacji muszą rozważyć alternatywne opcje. Programiści Java, którzy korzystali z wtyczek do przeglądarek, przeprowadzili migrację z apletów Java do „bezwtyczkowej” technologii Java Web Start.

Open Web Start

Po apletach pojawiła się alternatywa dla dystrybucji aplikacji Java jaką jest Java Web Start. To kanoniczny sposób deploymentu dla aplikacji komputerowych. Jednak Oracle wycofał Java Web Start w JDK 9 i usunął go w JDK 11. To pozostawiło użytkowników JWS bez żadnej opcji. Firma Karakun przejęła projekt na własność i udostępnia go obecnie jako osobny pakiet pod nazwą Open Web Start, a oprogramowanie jest takie samo jak było.

Aby rozpowszechniać aplikację za pośrednictwem Open Web Start, oprócz samego JAR, musisz dostarczyć plik JNLP. Ten plik służy jako pewnego rodzaju zewnętrzny deskryptor wdrażania. Funkcje JNLP są dość proste, na przykład:

  • Dodaj skrót na pulpicie użytkownika
  • Określa, czy aplikacja może działać w trybie offline po jej pobraniu
  • Zaktualizuj policies
  • Użyj opcjonalnej listy bibliotek natywnych

jpackage

Chociaż Open Web Start nie jest już dostępny jako część JDK, narzędzie jpackage nadal jest. Jest dołączany od JDK 14. Jak sama nazwa wskazuje, jpackage umożliwia utworzenie natywnego instalatora z pliku JAR.

Jego podstawowe użycie jest proste: jpackage --input target --main-jar moj-plik-1.0.jar.

Licz się ze znaczącą objętością pliku JAR, który oprócz samego kodu programu zostanie jeszcze powiększony o pliku JRE.

Inne opcje

jlink nie jest może prawdziwym mechanizmem dystrybucji, ale umożliwia tworzenie niestandardowego środowiska uruchomieniowego z dedykowanym skryptem uruchamiania dla aplikacji. Jest częścią JDK od wersji Java 9. Chociaż teoretycznie może działać z każdą aplikacją, najlepiej nadaje się do aplikacji modułowych. Takie aplikacje muszą opisywać moduły, od których zależą, w module-info.java.

Modularyzacja aplikacji jest dość prosta. Aby jednak zdecydować, czy moduł JDK trafi do końcowego środowiska uruchomieniowego, jlink wymaga przechodniego przeanalizowania każdej zależności aplikacji. A około 35% bibliotek nie jest zmodularyzowanych ani nie deklaruje automatycznej nazwy modułu w swoim MANIFEST.MF. Możliwe jest dodanie tych informacji podczas kompilacji, mimo że procedura jest podatna na błędy i… nudna.

Firma Oracle wprowadziła też javapackager w Javie 8 – przodek pakietu jpackage, obecnie zastępowany przez ten drugi. Narzędzia Java Packager można używać do kompilowania, pakowania, podpisywania i wdrażania aplikacji Java i JavaFX z wiersza poleceń. Może być używany jako alternatywa dla zadania Ant lub budowania aplikacji w IDE.

Sprawdź oferty pracy na TeamQuest

Mamy też FXLauncher, który jest zarówno programem uruchamiającym, jak i automatycznym aktualizatorem, który koncentruje się wyłącznie na aplikacjach JavaFX (wydany na licencji Apache License 2.0). Mało? Rozważ Launch4j - wieloplatformowe narzędzie do pakowania aplikacji Java dystrybuowanych jako pliki JAR w lekkie natywne pliki wykonywalne systemu Windows. Plik wykonywalny można skonfigurować tak, aby wyszukiwał określoną wersję środowiska JRE lub używał wersji dołączonej, a także można ustawić niektóre opcje środowiska wykonawczego.

pakcr spakuje plik JAR, zasoby i maszynę JVM do dystrybucji w systemach Windows, Linux i macOS, dodając natywny plik wykonywalny, aby Twój program wyglądał jak natywna aplikacja (wydany na licencji Apache 2.0). No i Install4J – potężny, wieloplatformowy program do tworzenia instalatorów Java, który generuje natywne instalatory i programy uruchamiające aplikacje dla aplikacji Java. Ale to już jest oprogramowanie własnościowe.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej