Udostępnij za pośrednictwem


Środowiska wykonawcze Java z jlink

Firma Microsoft potwierdza i obsługuje wdrażanie niestandardowych środowisk uruchomieniowych Java spreparowanych dla określonych potrzeb aplikacji, a nie użycia środowisk uruchomieniowych Języka Java ogólnego przeznaczenia. Ta metoda wdrażania języka Java zapewnia, że środowisko uruchomieniowe Java zawiera tylko części platformy Java, które są naprawdę potrzebne przez aplikacje, co zwiększa bezpieczeństwo, zmniejsza rozmiar wdrożenia i zwiększa wydajność zarówno dla aplikacji Java opartych na chmurze, jak i na serwerze, a także aplikacji klasycznych/gui.

Tradycyjnie systemy Oracle/Sun Microsystems tworzyłyby instalatory środowiska Java Runtime Environment (JRE), które będą zawierać wyłącznie maszynę wirtualną Java, interfejsy API Języka Java oraz integrację systemu operacyjnego i przeglądarki, mające na celu włączenie komputerów do uruchamiania aplikacji Java pobranych z Internetu lub uruchamiania apletów i aplikacji Java Web Start za pośrednictwem przeglądarki.

Wraz z pojawieniem się nowoczesnych aplikacji internetowych i przeglądarek zarówno aplety, jak i technologie Java Web Start stały się przestarzałe, a przeglądarki nie obsługują już wtyczek Java. Potrzeba wstępnie zainstalowanych środowisk uruchomieniowych Java powszechnego zastosowania na komputerach stała się mniej znacząca z czasem. W środowisku Java 9 interfejs API apletu stał się przestarzały (zobacz JEP 289) i z językiem Java 17 interfejs API został oznaczony do usunięcia, co oznacza, że z pewnością zostanie usunięty w przyszłej wersji języka Java.

Kolejną znaczącą zmianą jest modułyzacja języka Java, również rozpoczęta w wersji Java 9 (zobacz JSR 376). W ramach tej zmiany deweloperzy mogą teraz używać nowego polecenia w zestawie JDK nazwanego jlink, aby tworzyć niestandardowe środowisko uruchomieniowe Java, specjalnie zaprojektowane pod kątem potrzeb aplikacji, które ma być wdrażane jako wbudowane środowisko uruchomieniowe razem z kodem aplikacji, często w postaci obrazu kontenera dla obciążeń w chmurze lub jako część instalatorów dla aplikacji z graficznym interfejsem użytkownika.

Obecnie Minecraft: Java Edition jest udostępniany milionom graczy Minecraft z niestandardowym środowiskiem uruchomieniowym Java osadzonym w grze. Za usługami online, takimi jak LinkedIn, Yammer, Bing i Azure, firma Microsoft wdraża również setki tysięcy maszyn wirtualnych Java przy użyciu tej techniki.

Tworzenie niestandardowego środowiska uruchomieniowego Java

Aby utworzyć środowisko uruchomieniowe języka Java, w środowisku musi być zainstalowany zestaw JDK 9 lub nowszy. Pobierz i zainstaluj Microsoft Build OpenJDK najpierw.

Identyfikowanie wymaganych modułów za pomocą polecenia jdeps

Platforma Java jest teraz podzielona na moduły. Aby uzyskać pełną listę, zapoznaj się z dokumentacją środowiska Java 17 ; inne wersje języka Java mogą zawierać nowe moduły.

Narzędzie jdeps JDK może służyć do analizowania .class pliku, katalogu lub JAR pliku w celu identyfikowania zależności modułów Java, zależności wewnętrznych zestawu JDK i innych przydatnych informacji, które pomogą deweloperom tworzyć środowiska uruchomieniowe Języka Java.

$ cat HelloWorld.java
public class HelloWorld {
  public static void main(String args[]) {
    System.out.println("Hello World!");
  }
}

$ jdeps HelloWorld.class
HelloWorld.class -> java.base
   <unnamed>                                          -> java.io                                            java.base
   <unnamed>                                          -> java.lang                                          java.base

Narzędzie jdeps wskazuje, że ta klasa zależy tylko od typów w java.lang pakietach i java.io , dlatego potrzebuje tylko modułu java.base. Podobne dane wyjściowe zostaną wygenerowane dla pliku JAR jako dane wejściowe. Po utworzeniu listy wymaganych modułów możesz teraz utworzyć środowisko uruchomieniowe Języka Java.

Aby utworzyć środowisko uruchomieniowe Języka Java na podstawie zestawu JDK, musisz wiedzieć, które moduły chcesz. Użyj polecenia jdeps , aby je zidentyfikować. Aby uzyskać szczegółowe informacje na jlink temat narzędzia wiersza polecenia, zapoznaj się z dokumentacją.

Przykład:

$ jlink \
         --add-modules java.base \
         --strip-debug \
         --no-man-pages \
         --no-header-files \
         --compress=2 \
         --output /javaruntime

Teraz możesz użyć środowiska uruchomieniowego Java znajdującego się w lokalizacji , /javaruntime aby wykonać kod aplikacji zależny od java.base modułu. Struktura folderu utworzonego przez javaruntime przez program jlink jest podobna do struktury katalogów JDK, a narzędzie wiersza poleceń java do uruchamiania maszyny wirtualnej JVM znajduje się jak zwykle w folderze ./bin/. Biorąc pod uwagę, że niestandardowe środowisko uruchomieniowe Java zawiera wszystkie wymagane moduły istniejącej aplikacji, można odwoływać się do niego za pomocą polecenia JAVA_HOME.

$ /javaruntime/bin/java HelloWorld
Hello, World!

W powyższym przykładzie utworzone środowisko uruchomieniowe Java w systemie Windows zużywa około 24 MB w systemie Windows.

Tworzenie środowiska uruchomieniowego Java przy użyciu obrazu kontenera platformy Docker

Kompilacje wieloetapowe platformy Docker umożliwiają tworzenie, używanie i pakowanie niestandardowego środowiska uruchomieniowego Java w ramach kompilacji obrazu. Zobacz , jak tworzyć środowiska uruchomieniowe Java przy użyciu platformy Docker.

Baza wiedzy

javax.net.ssl.SSLHandshakeException: Odebrano alert krytyczny: handshake_failure

Odwiedź stronę Zabezpieczenia języka Java i kryptografia , aby zapoznać się z wyjaśnieniem, jak rozwiązać ten problem.

Zasoby

Prześlij opinię na temat zestawu Microsoft Build of OpenJDK

Wyślij nam swoje komentarze, myśli i pomysły, aby pomóc nam ulepszyć microsoft build of OpenJDK. Odwiedź naszą stronę dyskusji OpenJDK w witrynie GitHub , aby wysłać nam swoją opinię.

Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle i/lub jej podmiotami partnerskimi.