Dela via


Java-körmiljöer med jlink

Microsoft bekräftar och stöder införandet av anpassade Java-runtimes som skapats för specifika programbehov i stället för användning av allmänna Java-körningsfunktioner. Den här metoden för Java-distribution säkerställer att Java-körningen endast innehåller de delar av Java-plattformen som verkligen behövs av program, vilket ökar säkerheten, minskar distributionsstorleken och förbättrar prestanda för både moln- och serverbaserade Java-program samt skrivbords-/GUI-program.

Traditionellt skulle Oracle/Sun Microsystems producera Installationsprogram för Java Runtime Environment (JRE) som enbart innehåller Java Virtual Machine, Java API:er och OS- och webbläsarspecifika integreringar, som syftar till att aktivera datorer för att köra Java-program som laddats ned från Internet eller för att köra Applets- och Java Web Start-program via webbläsaren.

Med tillkomsten av moderna webbprogram och webbläsare blev både Applets- och Java Web Start-tekniker inaktuella och webbläsare stöder inte längre Java-plugin-program. Behovet av en förinstallerad Java Runtime-miljö för allmän användning på datorer blev mindre betydande över tid. Med Java 9 blev Applet API inaktuellt (se JEP 289) och med Java 17 blev API:et markerat för borttagning, vilket innebär att det säkert kommer att tas bort vid en framtida version av Java.

En annan viktig förändring är modulariseringen av Java, som också startades med Java 9-versionen (se JSR 376). Som en del av den här ändringen kan utvecklare nu använda en nyligen tilslagen kommandorad i JDK:t som anropas jlink för att skapa en anpassad Java-körning som är särskilt utformad för att passa programbehoven, som ska distribueras som en inbyggd inbäddad körning tillsammans med programkoden ofta gånger som en del av en containeravbildning för molnbaserade arbetsbelastningar. eller som en del av installationsprogram för GUI-baserade program.

Idag, Minecraft: Java Edition distribueras till miljontals Minecraft-spelare med en anpassad Java-körning inbäddad i spelet. Bakom onlinetjänster som LinkedIn, Yammer, Bing och Azure distribuerar Microsoft även hundratusentals JVM:er med den här tekniken.

Skapa en anpassad Java-körning

Om du vill skapa en Java-körning måste du ha JDK 9 eller senare installerat i din miljö. Ladda ned och installera Microsoft Build of OpenJDK först.

Identifiera nödvändiga moduler med jdeps

Java-plattformen är nu indelat i moduler. En fullständig lista finns i dokumentationen för Java 17 . andra versioner av Java kan innehålla nya moduler.

JDK-verktyget jdeps kan användas för att analysera en .class fil, en katalog eller en JAR fil för att identifiera Java-modulberoenden, JDK-interna beroenden och annan användbar information som hjälper utvecklare att skapa Java-körning.

$ 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

Verktyget jdeps anger att den här klassen bara är beroende av typer i paketen java.lang och java.io , därför behöver den bara modulen java.base. En liknande utdata skulle skapas för en JAR fil som indata. Med en lista över de moduler som krävs kan du nu skapa en Java-körning.

Om du vill skapa en Java-körning från JDK måste du veta vilka moduler du vill ha. Använd jdeps för att identifiera dem. Mer information om jlink kommandoradsverktyget finns i dokumentationen.

Exempel:

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

Du kan nu använda Java-körningen som finns på /javaruntime för att köra programkoden som är beroende av java.base modulen. Strukturen för mappen javaruntime som skapas av jlink liknar JDK-katalogstrukturen och java kommandoradsverktyget för att starta JVM finns i ./bin/ mappen som vanligt. Med tanke på att en anpassad Java-körning innehåller alla nödvändiga moduler i ett befintligt program kan det refereras till av JAVA_HOME.

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

I exemplet ovan förbrukar den producerade Java-körningen i Windows cirka 24 MB i Windows.

Skapa en Java-körning med Docker-containeravbildning

Du kan använda Docker-bygganden i flera steg för att skapa, konsumera och paketera den anpassade Java-körmiljön som en del av din avbildningsprocess. Se hur du skapar Java-körningar med Docker.

Kunskapsbas

javax.net.ssl.SSLHandshakeException: Fick en dödlig avisering: handshake_failure

Gå till Java-säkerhet och kryptografi för en förklaring av hur du åtgärdar det här problemet.

Resurser

Ge synpunkter på Microsofts version av OpenJDK

Skicka oss dina kommentarer, tankar och idéer för att hjälpa oss att förbättra Microsoft Build of OpenJDK. Besök vår OpenJDK-diskussionssida på GitHub för att skicka oss din feedback.

Java och OpenJDK är varumärken eller registrerade varumärken som tillhör Oracle och/eller dess dotterbolag.