Moduly runtime Java s jlinkem

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.

Po nástupu moderních webových aplikací a prohlížečů se zřetědily technologie Applets i Java Web Start a prohlížeče už nepodporují moduly plug-in Java. Potřeba prostředí Java Runtime pro obecné účely předinstalovaná na počítačích se stala méně významnou přesčasovou. 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í.

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

Vytvoření vlastního modulu runtime Java

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 k Javě 17 . Další 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

Teď můžete použít modul runtime Java umístěný na /javaruntime spuštění kódu aplikace závislého na java.base modulu. Struktura složky vytvořené jlink pomocí JDK se podobá adresářové struktuře sady JDK a java nástroj příkazového javaruntime řá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: Došlo k závažné výstraze: handshake_failure

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

Zdroje informací

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 afilací.