Sdílet prostřednictvím


Java Runtime s nástrojem jlink

Microsoft bere na vědomí a podporuje přijetí vlastních modulů runtime Java vytvořených pro konkrétní potřeby aplikací, spíše použití modulů runtime Java pro obecné účely. Tato metoda nasazení v Javě zajišťuje, že modul runtime Java obsahuje jenom části platformy Java, které aplikace skutečně potřebují, a tím zvyšují zabezpečení, snižují velikost nasazení a zvyšují výkon pro cloudové i serverové aplikace v Javě i desktopové a grafické uživatelské rozhraní.

Oracle/Sun Microsystems tradičně vytvoří instalační programy prostředí Java Runtime Environment (JRE), které budou obsahovat výhradně virtuální počítač Java, rozhraní JAVA API a konkrétní integrace operačního systému a prohlížeče a prohlížeče, jejichž cílem je umožnit počítačům spouštění aplikací Java stažených z internetu nebo spouštění aplikací Applets a Java Web Start prostřednictvím prohlížeče.

Příchodem moderních webových aplikací a prohlížečů se staly zastaralými technologie aplety i Java Web Start a prohlížeče už nepodporují Java plug-iny. Potřeba prostředí Java Runtime pro všeobecné účely předinstalované na počítačích se časem stala méně významnou. S Javou 9 se rozhraní API Applet přestalo používat (viz JEP 289) a s Javou 17 se rozhraní API označilo k odebrání, což znamená, že se určitě odebere v budoucí verzi Javy.

Další významnou změnou je modularizace Javy, která také začala s verzí Java 9 (viz JSR 376). V rámci této změny teď můžou vývojáři použít nově přidaný příkazový řádek v JDK jlink k vytvoření vlastního modulu runtime Java, který je speciálně navržený tak, aby vyhovoval potřebám aplikací, aby se nasadili jako integrovaný modul runtime spolu s kódem aplikace často jako součást image kontejneru pro cloudové úlohy. nebo jako součást instalačních programů pro aplikace založené na grafickém uživatelském rozhraní.

Dnes je Minecraft: Java Edition nasazen milionům hráčům Minecraftu s vlastním Java runtimem vloženým do hry. Za online službami, jako jsou LinkedIn, Yammer, Bing a Azure, Microsoft pomocí této techniky nasadí stovky tisíc JVM.

Vytvoření vlastního Java runtime

Pokud chcete vytvořit modul runtime Java, musíte mít ve svém prostředí nainstalovaný JDK 9 nebo novější. Nejprve stáhněte a nainstalujte Microsoft Build openJDK.

Identifikace požadovaných modulů pomocí jdeps

Platforma Java se teď segmentuje do modulů. Úplný seznam najdete v dokumentaci Javy 17 ; jiné verze Javy můžou obsahovat nové moduly.

Nástroj jdeps JDK lze použít k analýze .class souboru, adresáře nebo JAR souboru k identifikaci závislostí modulů Java, interních závislostí sady JDK a dalších užitečných informací, které vývojářům pomůžou vytvářet moduly runtime 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

Nástroj jdeps označuje, že tato třída závisí pouze na typech v java.lang a java.io balíčcích, a proto potřebuje pouze modul java.base. Podobný výstup by se vytvořil pro JAR soubor jako vstup. Se seznamem požadovaných modulů teď můžete vytvořit modul runtime Java.

Pokud chcete vytvořit modul runtime Java z sady JDK, musíte vědět, které moduly chcete použít. Slouží jdeps k jejich identifikaci. Podrobnosti o nástroji příkazového jlink řádku najdete v dokumentaci.

Příklad:

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

Nyní můžete použít běhové prostředí Java umístěné na /javaruntime ke spuštění kódu aplikace, který závisí na modulu java.base. Struktura složky vytvořené javaruntime pomocí JDK se podobá adresářové struktuře sady JDK a jlink nástroj příkazového java řádku pro spuštění prostředí JVM se nachází ve ./bin/ složce obvyklým způsobem. Vzhledem k tomu, že vlastní modul runtime Java obsahuje všechny požadované moduly existující aplikace, lze na něj odkazovat JAVA_HOME.

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

V předchozím příkladu využívá vytvořený modul runtime Java ve Windows přibližně 24 MB ve Windows.

Vytvoření modulu runtime Java pomocí image kontejneru Dockeru

Pomocí vícefázových sestavení Dockeru můžete vytvářet, využívat a zabalit vlastní modul runtime Java jako součást sestavení image. Podívejte se, jak vytvářet moduly runtime Java pomocí Dockeru.

Znalostní báze

javax.net.ssl.SSLHandshakeException: Obdržena kritická výstraha: handshake_failure

Vysvětlení, jak tento problém vyřešit, najdete v tématu Zabezpečení a kryptografie v Javě .

Prostředky

Poskytnutí zpětné vazby k sestavení OpenJDK od Microsoftu

Pošlete nám svoje komentáře, myšlenky a nápady, které nám pomůžou vylepšit Microsoft Build OpenJDK. Navštivte naši diskuzní stránku OpenJDK na GitHubu a pošlete nám svůj názor.

Java a OpenJDK jsou ochranné známky nebo registrované ochranné známky společnosti Oracle a/nebo jejích přidružených společností.