Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft erkent en ondersteunt de acceptatie van aangepaste Java-runtimes die zijn gemaakt voor specifieke toepassingen, in plaats van het gebruik van Java-runtimes voor algemeen gebruik. Deze methode van Java-implementatie zorgt ervoor dat de Java-runtime alleen de onderdelen van het Java-platform bevat die echt nodig zijn voor toepassingen, waardoor de beveiliging wordt verhoogd, de implementatiegrootte wordt verkleind en de prestaties worden verbeterd, zowel voor Java-toepassingen in de cloud als voor desktop-/GUI-toepassingen.
Normaal gesproken zou Oracle/Sun Microsystems JRE-installatieprogramma's (Java Runtime Environment) produceren die alleen de Java Virtual Machine, de Java-API's en specifieke integraties van het besturingssysteem en het besturingssysteem bevatten, gericht op het inschakelen van computers voor het uitvoeren van Java-toepassingen die zijn gedownload van internet of voor het uitvoeren van Applets- en Java Web Start-toepassingen via de browser.
Met de komst van moderne webtoepassingen en browsers werden zowel Applets- als Java Web Start-technologieën afgeschaft en ondersteunen browsers geen Java-invoegtoepassingen meer. De behoefte aan algemene Java Runtime-omgevingen, die vooraf op computers zijn geïnstalleerd, werd na verloop van tijd minder significant. Met Java 9 werd de Applet-API afgeschaft (zie JEP 289) en met Java 17 werd de API gemarkeerd voor verwijdering, wat betekent dat deze zeker wordt verwijderd in een toekomstige release van Java.
Een andere belangrijke wijziging is de modularisering van Java, ook gestart met de Java 9-release (zie JSR 376). Als onderdeel van deze wijziging kunnen ontwikkelaars nu een nieuw toegevoegde opdrachtregel gebruiken in de JDK die wordt aangeroepen jlink
om een aangepaste Java-runtime te produceren die speciaal is ontworpen om aan de behoeften van toepassingen te voldoen, om te worden geïmplementeerd als een ingebouwde ingesloten runtime, samen met de toepassingscode vaak als onderdeel van een containerinstallatiekopie voor cloudworkloads, of als onderdeel van installatieprogramma's voor op GUI gebaseerde toepassingen.
Tegenwoordig wordt Minecraft: Java Edition geïmplementeerd in miljoenen Minecraft-gamers met een aangepaste Java-runtime die is ingesloten in het spel. Achter onlineservices zoals LinkedIn, Yammer, Bing en Azure implementeert Microsoft ook honderdduizenden JVM's met behulp van deze techniek.
Een aangepaste Java-runtime maken
Als u een Java-runtime wilt maken, moet JDK 9 of hoger zijn geïnstalleerd in uw omgeving. Download en installeer eerst de Microsoft Build van OpenJDK.
Vereiste modules identificeren met jdeps
Het Java-platform is nu gesegmenteerd in modules. Zie de documentatie van Java 17 voor een volledige lijst; andere versies van Java kunnen nieuwe modules bevatten.
Het JDK-hulpprogramma jdeps
kan worden gebruikt om een .class
bestand, map of bestand JAR
te analyseren om Afhankelijkheden van Java-modules, interne JDK-afhankelijkheden en andere nuttige informatie te identificeren waarmee ontwikkelaars Java-runtimes kunnen produceren.
$ 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
Het hulpprogramma jdeps
geeft aan dat deze klasse alleen afhankelijk is van typen in de java.lang
en java.io
pakketten, daarom heeft het alleen de module java.base
nodig. Er wordt een vergelijkbare uitvoer geproduceerd voor een JAR
bestand als invoer. Met een lijst met de vereiste modules kunt u nu een Java-runtime maken.
Een Java-runtime maken met jlink
Als u een Java-runtime wilt maken op basis van de JDK, moet u weten welke modules u wilt. Gebruik jdeps
deze om ze te identificeren. Raadpleeg de jlink
voor meer informatie over het opdrachtregelprogramma.
Voorbeeld:
$ jlink \
--add-modules java.base \
--strip-debug \
--no-man-pages \
--no-header-files \
--compress=2 \
--output /javaruntime
U kunt nu de Java-runtime /javaruntime
gebruiken om de toepassingscode uit te voeren die afhankelijk is van de java.base
module. De structuur van de javaruntime
map die wordt jlink
geproduceerd, is vergelijkbaar met de JDK-mapstructuur en het java
opdrachtregelprogramma om de JVM te starten, bevindt zich zoals gewoonlijk in de ./bin/
map. Gezien een aangepaste Java-runtime alle vereiste modules van een bestaande toepassing bevat, kan ernaar worden verwezen door JAVA_HOME
.
$ /javaruntime/bin/java HelloWorld
Hello, World!
In het bovenstaande voorbeeld verbruikt de geproduceerde Java-runtime in Windows ongeveer 24 MB in Windows.
Een Java-runtime maken met Docker-containerinstallatiekopieën
U kunt Docker-builds met meerdere fasen gebruiken om de aangepaste Java-runtime te maken, te gebruiken en in te pakken als onderdeel van de build van uw installatiekopieën. Lees hoe u Java-runtimes maakt met behulp van Docker.
Kennisbank
javax.net.ssl.SSLHandshakeException: Ontvangen een fatale waarschuwing: handshake_failure
Ga naar Java-beveiliging en cryptografie voor een uitleg over het oplossen van dit probleem.
Hulpmiddelen
Feedback geven over de Microsoft Build van OpenJDK
Stuur ons uw opmerkingen, gedachten en ideeën om ons te helpen de Microsoft Build van OpenJDK te verbeteren. Ga naar onze OpenJDK-discussiepagina op GitHub om ons uw feedback te sturen.
Java en OpenJDK zijn handelsmerken of gedeponeerde handelsmerken van Oracle en/of haar gelieerde ondernemingen.