Java Language
Wdrożenie Java
Szukaj…
Wprowadzenie
Istnieje wiele technologii „pakowania” aplikacji Java, aplikacji internetowych itp. W celu wdrożenia na platformie, na której będą działać. Obejmują one od prostych bibliotek lub wykonywalnych plików JAR
plików WAR
i EAR
, po instalatory i samodzielne pliki wykonywalne.
Uwagi
Na najbardziej podstawowym poziomie program Java można wdrożyć, kopiując skompilowaną klasę (tj. Plik „.class”) lub drzewo katalogów zawierające skompilowane klasy. Jednak Java jest zwykle wdrażana na jeden z następujących sposobów:
Przez skopiowanie pliku JAR lub kolekcji plików JAR do systemu, w którym zostaną wykonane; np. używając
javac
.Przez skopiowanie lub przesłanie pliku WAR, EAR lub podobnego pliku do „kontenera serwletu” lub „serwera aplikacji”.
Uruchamiając instalator aplikacji, który automatyzuje powyższe. Instalator może również zainstalować osadzone środowisko JRE.
Umieszczając pliki JAR aplikacji na serwerze WWW, aby umożliwić ich uruchomienie za pomocą Java WebStart.
Przykład tworzenia plików JAR, WAR i EAR podsumowuje różne sposoby tworzenia tych plików.
Istnieje wiele otwartych i komercyjnych narzędzi „generatora instalatora” i „generatora EXE” dla języka Java. Podobnie istnieją narzędzia do zaciemniania plików klasy Java (w celu utrudnienia inżynierii wstecznej) i dodawania sprawdzania licencji środowiska wykonawczego. Wszystko to jest poza zakresem dokumentacji „Java Programming Language”.
Tworzenie wykonywalnego pliku JAR z wiersza polecenia
Aby zrobić słoik, potrzebujesz jednego lub więcej plików klas. Powinna to być główna metoda, jeśli ma być uruchamiana podwójnym kliknięciem.
W tym przykładzie użyjemy:
import javax.swing.*;
import java.awt.Container;
public class HelloWorld {
public static void main(String[] args) {
JFrame f = new JFrame("Hello, World");
JLabel label = new JLabel("Hello, World");
Container cont = f.getContentPane();
cont.add(label);
f.setSize(400,100);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Został nazwany HelloWorld.java
Następnie chcemy skompilować ten program.
Możesz użyć dowolnego programu, który chcesz to zrobić. Aby uruchomić z wiersza poleceń, zapoznaj się z dokumentacją dotyczącą kompilowania i uruchamiania pierwszego programu Java.
Po utworzeniu pliku HelloWorld.class utwórz nowy folder i nazwij go, jak chcesz.
Utwórz inny plik o nazwie manifest.txt i wklej do niego
Main-Class: HelloWorld
Class-Path: HelloWorld.jar
Umieść go w tym samym folderze z HelloWorld.class
Za pomocą wiersza polecenia ustaw bieżący katalog ( cd C:\Your\Folder\Path\Here
w systemie Windows) jako folder.
Użyj terminalu i zmień katalog na katalog ( cd /Users/user/Documents/Java/jarfolder
na Macu) twój folder
Po jar -cvfm HelloWorld.jar manifest.txt HelloWorld.class
wpisz jar -cvfm HelloWorld.jar manifest.txt HelloWorld.class
i naciśnij klawisz Enter. Spowoduje to utworzenie pliku jar (w folderze z manifestem i HelloWorld.class) przy użyciu określonych plików .class o nazwie HelloWorld.jar. Zobacz sekcję Składnia, aby uzyskać informacje o opcjach (takich jak -m i -v).
Po wykonaniu tych kroków przejdź do katalogu z plikiem manifestu i powinieneś znaleźć plik HelloWorld.jar
Kliknięcie go powinno wyświetlić tekst Hello, World
w polu tekstowym.
Tworzenie plików JAR, WAR i EAR
Typy plików JAR, WAR i EAR są zasadniczo plikami ZIP z plikiem „manifest” i (dla plików WAR i EAR) określoną wewnętrzną strukturą katalogu / pliku.
Zalecanym sposobem tworzenia tych plików jest użycie narzędzia do budowania specyficznego dla języka Java, które „rozumie” wymagania dla odpowiednich typów plików. Jeśli nie korzystasz z narzędzia do kompilacji, następną opcją jest „eksport” IDE.
( Notka redakcyjna: opisy sposobu tworzenia tych plików najlepiej umieścić w dokumentacji odpowiednich narzędzi. Umieść je tam. Proszę pokazać powściągliwość i NIE rób klocków w tym przykładzie! )
Tworzenie plików JAR i WAR za pomocą Maven
Utworzenie JAR lub WAR za pomocą Maven polega na umieszczeniu poprawnego elementu <packaging>
w pliku POM; na przykład,
<packaging>jar</packaging>
lub
<packaging>war</packaging>
Po więcej szczegółów. Maven można skonfigurować do tworzenia „wykonywalnych” plików JAR poprzez dodanie wymaganych informacji o klasie punktu wejścia i zależnościach zewnętrznych jako właściwości wtyczki dla wtyczki jar maven. Istnieje nawet wtyczka do tworzenia plików „uberJAR”, które łączą aplikację i jej zależności w jeden plik JAR.
Więcej informacji można znaleźć w dokumentacji Maven ( http://www.riptutorial.com/topic/898 ).
Tworzenie plików JAR, WAR i EAR za pomocą Ant
Narzędzie do budowania Anta ma osobne „zadania” do budowania JAR, WAR i EAR. Więcej informacji można znaleźć w dokumentacji Ant ( http://www.riptutorial.com/topic/4223 ).
Tworzenie plików JAR, WAR i EAR za pomocą IDE
Wszystkie trzy najpopularniejsze środowiska IDE Java mają wbudowaną obsługę tworzenia plików wdrażania. Funkcjonalność jest często opisywana jako „eksportowanie”.
- Eclipse - http://www.riptutorial.com/topic/1143
- NetBeans - http://www.riptutorial.com/topic/5438
- Intellij-IDEA - Eksportowanie
Tworzenie plików JAR, WAR i EAR za pomocą komendy jar
.
Można również utworzyć te pliki „ręcznie” za pomocą polecenia jar
. Jest to po prostu kwestia złożenia drzewa plików z poprawnymi plikami składników w odpowiednim miejscu, utworzenia pliku manifestu i uruchomienia jar
aby utworzyć plik JAR.
Więcej informacji można znaleźć w jar
polecenia jar
( Tworzenie i modyfikowanie plików JAR )
Wprowadzenie do Java Web Start
Oracle Java Tutorials podsumowuje Web Start w następujący sposób:
Oprogramowanie Java Web Start umożliwia uruchamianie w pełni funkcjonalnych aplikacji jednym kliknięciem. Użytkownicy mogą pobierać i uruchamiać aplikacje, takie jak pełny arkusz kalkulacyjny lub klient czatu internetowego, bez konieczności przeprowadzania długich procedur instalacyjnych.
Inne zalety Java Web Start to obsługa podpisanego kodu i wyraźne deklarowanie zależności platformy oraz obsługa buforowania kodu i wdrażania aktualizacji aplikacji.
Java Web Start jest również nazywany JavaWS i JAWS. Głównymi źródłami informacji są:
- Poradniki Java - Lekcja: Java Web Start
- Przewodnik Java Web Start
- Często zadawane pytania dotyczące Java Web Start
- Specyfikacja JNLP
- Dokumentacja API
javax.jnlp
- Witryna programistów Java Web Start
Wymagania wstępne
Na wysokim poziomie Web Start działa poprzez dystrybucję aplikacji Java spakowanych jako pliki JAR ze zdalnego serwera WWW. Wymagania wstępne to:
Istniejąca instalacja Java (JRE lub JDK) na komputerze docelowym, na którym aplikacja ma być uruchomiona. Wymagana jest Java 1.2.2 lub nowsza:
- Począwszy od Java 5.0, obsługa Web Start jest zawarta w JRE / JDK.
- W przypadku wcześniejszych wersji obsługa Web Start jest instalowana osobno.
- Infrastruktura Web Start zawiera Javascript, który może być zawarty na stronie internetowej, aby pomóc użytkownikowi w instalacji niezbędnego oprogramowania.
Serwer WWW obsługujący oprogramowanie musi być dostępny dla komputera docelowego.
Jeśli użytkownik zamierza uruchomić aplikację Web Start za pomocą łącza na stronie internetowej, wówczas:
- potrzebują kompatybilnej przeglądarki internetowej i
- w przypadku nowoczesnych (bezpiecznych) przeglądarek należy im powiedzieć, jak powiedzieć przeglądarce, aby zezwoliła na uruchamianie Javy ... bez narażania bezpieczeństwa przeglądarki.
Przykładowy plik JNLP
Poniższy przykład ilustruje podstawową funkcjonalność JNLP.
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="https://www.example.com/demo"
href="demo_webstart.jnlp">
<information>
<title>Demo</title>
<vendor>The Example.com Team</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="Demo.jar" main="true"/>
</resources>
<application-desc
name="Demo Application"
main-class="com.example.jwsdemo.Main"
width="300"
height="300">
</application-desc>
<update check="background"/>
</jnlp>
Jak widać, plik JNLP oparty na XML, a wszystkie informacje zawarte są w elemencie <jnlp>
.
- Atrybut
spec
podaje wersję specyfikacji JNPL, z którą ten plik jest zgodny. - Atrybut
codebase
podaje podstawowy adres URL do rozwiązywania względnych adresów URLhref
w pozostałej części pliku. - Atrybut
href
podaje ostateczny adres URL tego pliku JNLP. - Element
<information>
zawiera metadane aplikacji, w tym jej tytuł, autorów, opis i witrynę pomocy. - Element
<resources>
opisuje zależności dla aplikacji, w tym wymaganą wersję Java, platformę systemu operacyjnego i pliki JAR. - Element
<application-desc>
(lub<applet-desc>
) zapewnia informacje potrzebne do uruchomienia aplikacji.
Konfigurowanie serwera WWW
Serwer WWW musi być skonfigurowany do używania application/x-java-jnlp-file
jako MIMEtype dla plików .jnlp
.
Plik JNLP i pliki JAR aplikacji muszą zostać zainstalowane na serwerze WWW, aby były dostępne przy użyciu adresów URL wskazanych w pliku JNLP.
Włączanie uruchamiania za pośrednictwem strony internetowej
Jeśli aplikacja ma zostać uruchomiona za pośrednictwem łącza internetowego, strona zawierająca łącze musi zostać utworzona na serwerze internetowym.
Jeśli możesz założyć, że Java Web Start jest już zainstalowany na komputerze użytkownika, wtedy strona internetowa musi zawierać link do uruchomienia aplikacji. Na przykład.
<a href="https://www.example.com/demo_webstart.jnlp">Launch the application</a>
W przeciwnym razie strona powinna również zawierać skrypty wykrywające rodzaj przeglądarki, z której korzysta użytkownik, i poprosić o pobranie i zainstalowanie wymaganej wersji Java.
UWAGA: Nie jest dobrym pomysłem zachęcanie użytkowników do zachęcania do zainstalowania Java w ten sposób, a nawet do włączenia Java w swoich przeglądarkach internetowych, aby działało uruchamianie strony JNLP.
Uruchamianie aplikacji Web Start z wiersza polecenia
Instrukcje uruchamiania aplikacji Web Start z wiersza poleceń są proste. Zakładając, że użytkownik ma zainstalowaną JRE lub JDK Java 5.0, wystarczy uruchomić to:
$ javaws <url>
gdzie <url>
to adres URL pliku JNLP na zdalnym serwerze.
Tworzenie UberJAR dla aplikacji i jej zależności
Częstym wymogiem dla aplikacji Java jest to, że można ją wdrożyć, kopiując pojedynczy plik. W przypadku prostych aplikacji, które zależą tylko od standardowych bibliotek klas Java SE, wymóg ten jest spełniony poprzez utworzenie pliku JAR zawierającego wszystkie (skompilowane) klasy aplikacji.
Sprawy nie są takie proste, jeśli aplikacja zależy od bibliotek stron trzecich. Jeśli po prostu umieścisz pliki JAR zależności w pliku JAR aplikacji, standardowy moduł ładujący klasy Java nie będzie w stanie znaleźć klas bibliotek i aplikacja się nie uruchomi. Zamiast tego należy utworzyć pojedynczy plik JAR, który zawiera klasy aplikacji i powiązane zasoby wraz z klasami zależności i zasobami. Muszą być one zorganizowane jako pojedyncza przestrzeń nazw dla przeszukiwacza klas.
Taki plik JAR jest często nazywany UberJAR.
Tworzenie UberJAR za pomocą polecenia „jar”
Procedura tworzenia UberJAR jest prosta. (Dla uproszczenia użyję poleceń Linuksa. Polecenia powinny być identyczne dla Mac OS i podobne dla Windows).
Utwórz katalog tymczasowy i zmień katalog na ten.
$ mkdir tempDir $ cd tempDir
Dla każdego zależnego pliku JAR, w odwrotnej kolejności , w jakiej muszą się pojawić w ścieżce klasy aplikacji, użyłem polecenia
jar
do rozpakowania pliku JAR do katalogu tymczasowego.$ jar -xf <path/to/file.jar>
Wykonanie tej czynności w przypadku wielu plików JAR spowoduje nałożenie zawartości plików JAR.
Skopiuj klasy aplikacji z drzewa kompilacji do katalogu tymczasowego
$ cp -r path/to/classes .
Utwórz UberJAR z zawartości katalogu tymczasowego:
$ jar -cf ../myApplication.jar
Jeśli tworzysz wykonywalny plik JAR, dołącz odpowiedni plik MANIFEST.MF, jak opisano tutaj.
Tworzenie UberJAR za pomocą Maven
Jeśli Twój projekt został zbudowany przy użyciu Maven, możesz go utworzyć, aby utworzyć UberJAR za pomocą wtyczek „maven-assembly” lub „maven-shadow”. Aby uzyskać szczegółowe informacje, zobacz temat Montaż Maven (w dokumentacji Maven ).
Zalety i wady UberJAR
Niektóre zalety UberJAR są oczywiste:
- UberJAR jest łatwy do dystrybucji.
- Nie można zerwać zależności bibliotek dla UberJAR, ponieważ biblioteki są samodzielne.
Ponadto, jeśli użyjesz odpowiedniego oprzyrządowania, aby utworzyć UberJAR, będziesz mieć możliwość wykluczenia klas bibliotek, które nie są używane z pliku JAR. Jednak zwykle odbywa się to za pomocą statycznej analizy klas. Jeśli Twoja aplikacja korzysta z refleksji, przetwarzania adnotacji i podobnych technik, musisz uważać, aby klasy nie zostały nieprawidłowo wykluczone.
UberJAR mają również pewne wady:
- Jeśli masz wiele UberJAR z tymi samymi zależnościami, wówczas każda z nich będzie zawierała kopię zależności.
- Niektóre biblioteki open source mają licencje, które mogą wykluczać 1 ich użycie w UberJAR.
1 - Niektóre licencje na biblioteki typu open source pozwalają na korzystanie z biblioteki tylko użytkownik końcowy może zastąpić jedną wersję biblioteki inną. UberJAR może utrudnić wymianę zależności między wersjami.