Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Application Java sur PLCnext Control

Avec Java 9, un nouvel outil appelé jlink a été présenté. Il combine des modules et crée une image d'exécution complète. D'une part, l'ensemble du JDK ARM 32 bits peut être exécuté sur un PLCnext Control. Mais avec jlink et modules, il est possible de réduire les ressources nécessaires à votre application Java. Il crée un bundle avec uniquement les parties nécessaires du JDK nécessaires à votre application.

Prérequis

Les binaires d'OpenJDK pour de nombreuses plates-formes peuvent être trouvés, par ex. sur AdoptOpenJDK. Pour ce tutoriel, nous avons choisi le Linux arm32 jdk-12.0.2+10 pour le contrôleur et son pendentif pour un système hôte Windows x64. Nous utilisons l'emplacement suivant des JDK :

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

Créer un module d'application

Dans cet exemple, nous imprimons simplement un Hello World sur la console. Pour utiliser jlink nous devons mettre cette petite application dans un module. Mon point de départ sur le terminal est un dossier appelé "HelloWorld" et un dossier src avec la structure suivante.

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

Voici notre petit exemple de code dans le fichier HelloWorld.java :

package de.plcnext.hello;

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

Et le module-info.java est nécessaire pour créer le module :

module de.pxc.hello { }

Après avoir créé le dossier source, nous compilons notre projet. Pour cela, nous utilisons la commande suivante sur le terminal.

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

Un dossier de modules et des classes java sont créés :

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

Pour tester notre module sur le système hôte, nous pouvons l'exécuter avec la commande suivante :

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

Cela devrait afficher Hello PLCnext world! .

Comment utiliser jlink

Maintenant, nous voulons obtenir cela sur notre appareil sans l'ensemble du JDK de 300 Mo. Pour cela, nous utilisons jlink sans aucun paramètre supplémentaire dans la première étape. Mais d'abord, nous avons besoin d'une information supplémentaire, quels modules supplémentaires sont nécessaires. Nous le découvrirons en analysant notre module avec jdeps.

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

Cela nous dit, nous avons besoin de java.base en plus de notre module. Comme module-path nous choisissons le chemin vers notre application et le chemin vers les jmods de notre plate-forme cible JDK. Dans ce cas C:Javajdk-12-ARM-32bitjmods .

Maintenant, notre appel jlink ressemble à ceci :

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

Le résultat est un HelloWorldjre dossier avec seulement environ 45 Mo. Nous le copions dans notre contrôleur. Dans le cas de cet exemple à /opt/plcnext/projects/java/ . Nous devons rendre le fichier "java" dans le dossier binaire HelloWorldjre exécutable via chmod +x java et démarrez notre module

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

Il devrait exécuter l'application et la sortie comme avant Hello PLCnext world! . En utilisant des paramètres supplémentaires de jlink, vous pouvez réduire encore plus le paquet (dans cet exemple jusqu'à 28 Mo) en utilisant --strip-debug , --no-header-files , --no-man-pages et --compress=2 . Où sont les coffres-forts de compression les plus mais pourraient nuire à la performance à la fin.


Technologie industrielle

  1. Circuits de contrôle
  2. Opérateurs Java
  3. InterfaceJava
  4. Java essayer avec des ressources
  5. Annotations Java
  6. Java 10 - Partage de données de classe
  7. 5 avantages du contrôle de production à distance
  8. Comment créer une application console PLCnext simple en C#
  9. Gestion de cluster sur PLCnext ?