© Excellent backgrounds/Shutterstock.com
Java Magazin
Teil 2: Erstellen von modularen Laufzeit-Images mit jlink

Nur das, was wir wirklich brauchen

Während des Softwareentwicklungsprozesses begegnen wir verschiedenen Situationen, in denen wir ein kundenspezifisches Java Runtime Environment (JRE) für unser Betriebssystem benötigen. Die Gründe dafür sind unterschiedlich: Vielleicht wollen wir eine bessere Leistung erzielen oder haben einige kundenspezifische Bibliotheken, die nur mit einem bestimmten Betriebssystem funktionieren. jlink hilft uns, diese Probleme zu lösen, indem wir mit seiner Hilfe eine benutzerdefinierte Version vom JRE erstellen können, die maßgeschneidert auf unser Betriebssystem ist und nur die Module enthält, die wir wirklich benötigen.

Alexandru Jecan


ArtikelserieTeil 1: Java-9-Anwendungen kompilieren, paketieren und ausführenTeil 2: Erstellen von modularen Laufzeit-Images mit jlinkTeil 3: Top-down- und Bottom-up-Migration

Java 9 stellt ein neues Werkzeug für die dynamische Verknüpfung von Modulen vor: jlink. Es hat die Aufgabe, eine Gruppe von Modulen zusammenzubauen, um dadurch ein Laufzeit-Image zu erzeugen. Um jlink zu verwenden, sind keine Änderungen im Quellcode erforderlich. jlink stellt in einem maßgeschneiderten Laufzeit-Image die Module zusammen. Es ändert die module-info.class-Dateien nicht. jlink startet mit den Modulen, die wir angeben, anschließend sucht es rekursiv nach allen requires-Anweisungen innerhalb der Deskriptoren der angegebenen Module. Ein Laufzeit-Image, das von jlink erzeugt wurde, enthält die minimale Anzahl der benötigten Module zusammen mit all ihren Abhängigkeiten. Während des Baus des Laufzeit-Images sind wir in der Lage, genau zu spezifizieren, welche Module dem Laufzeitbild hinzugefügt werden sollen. Als Ergebnis wird eine plattformspezifische, binäre, ausführbare Datei erstellt.

Das jlink-Werkzeug führt den Auflösungsprozess aus, um die für die Erzeugung des Laufzeit-Images erforderlichen Module zu berechnen. Das minimale Laufzeit-Image, das wir hypothetisch mit jlink erzeugen können, ist ein Laufzeit-Image, das nur das Hauptmodul java.base enthält. Basierend auf der Art der Plattformmodule erkennt jlink, welche die Zielplattform ist. Wenn wir beispielsweise ein Linux-Betriebssystem haben und einen Modulpfad an ein Windows-System weitergeben, wird jlink die Windows-Versionen dieser Module verknüpfen und ein Windows-Laufzeit-Image erzeugen. Es ist wichtig zu wissen, dass der Modulpfad, den wir jlink angeben, das Modul für die Zielplattform sein muss.

Die jlink-Images sind für jedes Betriebssystem spezifisch und sind eine Anpassung des JDKs und der JRE. Ein jlink-Image enthält die Verzeichnisse bin, conf, include, legal, lib und release. Für eine Anwendung, die nur das Modul java.base verwendet, wird ein maßgeschneidertes Laufzeit-Image erzeugt, das nur aus unseren Applikationsmodulen und aus dem java.base-Modul besteht.

Eingabeformate für jlinkDie Eingabeformate, die jlink unterstützt, sind: modulare JAR-Dateien, JMOD- Dateien, JAR-Dateien oder .class-Dateien. Die Ausgabeformate, die jlink generien kann, sind: JAR-Dateien, JMOD-Dateien, JVM-Images und maßgeschneiderte JRE-Images.

jlinks allgemeine Syntax

Um ein Laufzeit-Image mit jlink zu erstellen, wird der jlink-Befehl ...

Java Magazin
Teil 2: Erstellen von modularen Laufzeit-Images mit jlink

Nur das, was wir wirklich brauchen

Während des Softwareentwicklungsprozesses begegnen wir verschiedenen Situationen, in denen wir ein kundenspezifisches Java Runtime Environment (JRE) für unser Betriebssystem benötigen. Die Gründe dafür sind unterschiedlich: Vielleicht wollen wir eine bessere Leistung erzielen oder haben einige kundenspezifische Bibliotheken, die nur mit einem bestimmten Betriebssystem funktionieren. jlink hilft uns, diese Probleme zu lösen, indem wir mit seiner Hilfe eine benutzerdefinierte Version vom JRE erstellen können, die maßgeschneidert auf unser Betriebssystem ist und nur die Module enthält, die wir wirklich benötigen.

Alexandru Jecan


ArtikelserieTeil 1: Java-9-Anwendungen kompilieren, paketieren und ausführenTeil 2: Erstellen von modularen Laufzeit-Images mit jlinkTeil 3: Top-down- und Bottom-up-Migration

Java 9 stellt ein neues Werkzeug für die dynamische Verknüpfung von Modulen vor: jlink. Es hat die Aufgabe, eine Gruppe von Modulen zusammenzubauen, um dadurch ein Laufzeit-Image zu erzeugen. Um jlink zu verwenden, sind keine Änderungen im Quellcode erforderlich. jlink stellt in einem maßgeschneiderten Laufzeit-Image die Module zusammen. Es ändert die module-info.class-Dateien nicht. jlink startet mit den Modulen, die wir angeben, anschließend sucht es rekursiv nach allen requires-Anweisungen innerhalb der Deskriptoren der angegebenen Module. Ein Laufzeit-Image, das von jlink erzeugt wurde, enthält die minimale Anzahl der benötigten Module zusammen mit all ihren Abhängigkeiten. Während des Baus des Laufzeit-Images sind wir in der Lage, genau zu spezifizieren, welche Module dem Laufzeitbild hinzugefügt werden sollen. Als Ergebnis wird eine plattformspezifische, binäre, ausführbare Datei erstellt.

Das jlink-Werkzeug führt den Auflösungsprozess aus, um die für die Erzeugung des Laufzeit-Images erforderlichen Module zu berechnen. Das minimale Laufzeit-Image, das wir hypothetisch mit jlink erzeugen können, ist ein Laufzeit-Image, das nur das Hauptmodul java.base enthält. Basierend auf der Art der Plattformmodule erkennt jlink, welche die Zielplattform ist. Wenn wir beispielsweise ein Linux-Betriebssystem haben und einen Modulpfad an ein Windows-System weitergeben, wird jlink die Windows-Versionen dieser Module verknüpfen und ein Windows-Laufzeit-Image erzeugen. Es ist wichtig zu wissen, dass der Modulpfad, den wir jlink angeben, das Modul für die Zielplattform sein muss.

Die jlink-Images sind für jedes Betriebssystem spezifisch und sind eine Anpassung des JDKs und der JRE. Ein jlink-Image enthält die Verzeichnisse bin, conf, include, legal, lib und release. Für eine Anwendung, die nur das Modul java.base verwendet, wird ein maßgeschneidertes Laufzeit-Image erzeugt, das nur aus unseren Applikationsmodulen und aus dem java.base-Modul besteht.

Eingabeformate für jlinkDie Eingabeformate, die jlink unterstützt, sind: modulare JAR-Dateien, JMOD- Dateien, JAR-Dateien oder .class-Dateien. Die Ausgabeformate, die jlink generien kann, sind: JAR-Dateien, JMOD-Dateien, JVM-Images und maßgeschneiderte JRE-Images.

jlinks allgemeine Syntax

Um ein Laufzeit-Image mit jlink zu erstellen, wird der jlink-Befehl ...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang