Udostępnij za pośrednictwem


Środowiska uruchomieniowe Języka Java z linkiem

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 Java Runtime Environment ogólnego przeznaczenia na komputerach stała się mniej znacząca w nadgodzinach. 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ć nowo dodanego wiersza polecenia w zestawie JDK wywoływanego jlink w celu utworzenia niestandardowego środowiska uruchomieniowego Java zaprojektowanego specjalnie pod kątem potrzeb aplikacji, które mają być wdrażane jako wbudowane środowisko uruchomieniowe wraz z kodem aplikacji często w ramach obrazu kontenera dla obciążeń opartych na chmurze, lub jako część instalatorów dla aplikacji opartych na graficznym interfejsie użytkownika.

Obecnie Minecraft: Java Edition jest wdrażany w milionach graczy Minecraft z niestandardowym środowiskiem uruchomieniowym Java osadzonym w grze. Za Usługi online, takimi jak LinkedIn, Yammer, Bing i Azure, firma Microsoft wdraża również setki tysięcy maszyn JVM 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. Najpierw pobierz i zainstaluj zestaw Microsoft Build zestawu OpenJDK.

Identyfikowanie wymaganych modułów za pomocą polecenia jdeps

Platforma Java jest teraz podzielona na moduły. Zapoznaj się z dokumentacją środowiska Java 17 , aby uzyskać pełną listę. 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 JAR pliku 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 javaruntime przez jlink program jest podobna do struktury katalogów JDK, a java narzędzie wiersza polecenia do uruchamiania maszyny wirtualnej JVM znajduje się w ./bin/ folderze w zwykły sposób. 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 filiami.