Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Java-Anwendung auf PLCnext Control

Mit Java 9 gibt es ein neues Tool namens jlink wurde vorgestellt. Es kombiniert Module und erstellt ein All-in-Runtime-Image. Einerseits kann das gesamte 32 Bit ARM JDK auf einer PLCnext Control ausgeführt werden. Aber mit jlink und Module ist es möglich, die für Ihre Java-Anwendung benötigten Ressourcen zu reduzieren. Es erstellt ein Paket mit nur den notwendigen Teilen des JDK, die für Ihre Anwendung benötigt werden.

Voraussetzungen

Die Binärdateien von OpenJDK für viele Plattformen finden Sie z. auf AdoptOpenJDK. Für dieses Tutorial haben wir Linux arm32 jdk-12.0.2+10 ausgewählt für den Controller und sein Pendant für ein Windows x64-Hostsystem. Wir verwenden den folgenden Speicherort der JDKs:

C:
---Java
    |
    +---jdk-12.0.2
    |       ...
    |
    ---jdk-12-ARM-32bit
            ...

Erstellen Sie ein Anwendungsmodul

In diesem Beispiel drucken wir nur ein Hello World auf der Konsole. So verwenden Sie jlink wir müssen diese kleine Anwendung in ein Modul packen. Mein Ausgangspunkt auf dem Terminal ist ein Ordner namens „HelloWorld“ und ein src-Ordner mit der folgenden Struktur.

HelloWorld
---src
    ---de.plcnext.hello
        |   module-info.java
        |
        ---de
            ---plcnext
                ---hello
                        HelloWorld.java

Dies ist unser kleines Codebeispiel in der HelloWorld.java-Datei:

package de.plcnext.hello;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello PLCnext world!");
    }
}

Und die module-info.java wird benötigt, um das Modul zu erstellen:

module de.pxc.hello { }

Nach dem Erstellen des Quellordners kompilieren wir unser Projekt. Dazu verwenden wir auf dem Terminal folgenden Befehl.

C:Javajdk-12.0.2binjavac.exe -d .modulesde.plcnext.hello .srcde.plcnext.hellodeplcnexthelloHelloWorld.java .srcde.plcnext.hellomodule-info.java

Ein Modulordner und Java-Klassen werden erstellt:

HelloWorld
---modules
    ---de.plcnext.hello
        |   module-info.class
        |
        ---de
            ---plcnext
                ---hello
                        HelloWorld.class

Um unser Modul auf dem Hostsystem zu testen, können wir es mit dem folgenden Befehl ausführen:

C:Javajdk-12.0.2binjava.exe --module-path .modules -m de.plcnext.hello/de.plcnext.hello.HelloWorld

Dies sollte Hello PLCnext world! ausgeben .

Wie man jlink verwendet

Jetzt wollen wir dies ohne die ganzen 300 MB JDK auf unser Gerät bekommen. Dazu verwenden wir im ersten Schritt jlink ohne zusätzliche Parameter. Zunächst benötigen wir aber noch eine Information, welche Zusatzmodule benötigt werden. Das finden wir heraus, indem wir unser Modul mit jdeps analysieren.

C:Javajdk-12.0.2binjdeps.exe --module-path ".modules" --add-modules "de.plcnext.hello"

Das sagt uns, wir brauchen java.base zusätzlich zu unserem Modul. Als module-path Wir wählen den Pfad zu unserer Anwendung und den Pfad zu den jmods unserer Zielplattform JDK. In diesem Fall C:Javajdk-12-ARM-32bitjmods .

Jetzt sieht unser jlink-Aufruf so aus:

C:Javajdk-12.0.2binjlink.exe --module-path ".modules;C:Javajdk-12-ARM-32bitjmods" --add-modules "de.plcnext.hello,java.base" --output HelloWorldjre

Das Ergebnis ist ein HelloWorldjre Ordner mit nur ca. 45MB. Diese kopieren wir auf unseren Controller. In diesem Beispiel an /opt/plcnext/projects/java/ . Wir müssen die „Java“-Datei im HelloWorldjre-Binärordner über chmod +x java ausführbar machen und starten Sie unser Modul

./java -m de.plcnext.hello/de.plcnext.hello.HelloWorld

Es sollte die Anwendung ausführen und wie vor Hello PLCnext world! ausgeben . Durch die Verwendung einiger zusätzlicher Parameter von jlink können Sie das Paket noch weiter reduzieren (in diesem Beispiel auf 28 MB), indem Sie --strip-debug verwenden , --no-header-files , --no-man-pages und --compress=2 . Wo ist die Komprimierung am sichersten, könnte aber am Ende der Leistung schaden.


Industrietechnik

  1. Steuerkreise
  2. Java-Operatoren
  3. Java-Schnittstelle
  4. Java-Versuch-mit-Ressourcen
  5. Java-Anmerkungen
  6. Java 10 - Teilen von Klassendaten
  7. 5 Vorteile der Fernsteuerung der Produktion
  8. Verwalten eines PLCnext Control-Geräts über SNMP
  9. So erstellen Sie eine einfache PLCnext-Konsolenanwendung in C#
  10. Clusterverwaltung auf PLCnext?