Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Java-toepassing op PLCnext Control

Met Java 9, een nieuwe tool genaamd jlink werd geïntroduceerd. Het combineert modules en bouwt een all-in runtime-image op. Enerzijds kan de hele 32 bit ARM JDK op een PLCnext Control draaien. Maar met jlink en modules is het mogelijk om de resources die nodig zijn voor uw Java-toepassing te verminderen. Het creëert een bundel met alleen de benodigde onderdelen van de JDK die nodig zijn voor uw toepassing.

Vereisten

  • JDK voor uw hostsysteem
  • JDK voor de controller

De binaries van OpenJDK voor veel platforms zijn b.v. op AdoptOpenJDK. Voor deze tutorial kozen we de Linux arm32 jdk-12.0.2+10 voor de controller en zijn hanger voor een Windows x64-hostsysteem. We gebruiken de volgende locatie van de JDK's:

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

Maak een applicatiemodule

In dit voorbeeld printen we gewoon een Hallo wereld op de console. jlink gebruiken we moeten deze kleine applicatie in een module stoppen. Mijn startpunt op de terminal is een map met de naam "HelloWorld" en een src-map met de volgende structuur.

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

Dit is ons kleine codevoorbeeld in het HelloWorld.java-bestand:

package de.plcnext.hello;

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

En de module-info.java is nodig om de module te maken:

module de.pxc.hello { }

Nadat we de bronmap hebben gemaakt, compileren we ons project. Hiervoor gebruiken we het volgende commando op de terminal.

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

Er worden een modulemap en java-klassen gemaakt:

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

Om onze module op het hostsysteem te testen, kunnen we deze uitvoeren met de volgende opdracht:

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

Dit zou Hello PLCnext world! moeten opleveren .

Hoe jlink te gebruiken

Nu willen we dit op ons apparaat krijgen zonder de hele 300 MB JDK. Hiervoor gebruiken we jlink zonder extra parameters in de eerste stap. Maar eerst hebben we nog een informatie nodig, welke extra modules nodig zijn. Hier komen we achter door onze module met jdeps te analyseren.

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

Dit vertelt ons dat we java.base nodig hebben naast onze module. Als module-path we kiezen het pad naar onze applicatie en het pad naar de jmods van ons doelplatform JDK. In dit geval C:Javajdk-12-ARM-32bitjmods .

Nu ziet onze jlink-oproep er als volgt uit:

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

Het resultaat is een HelloWorldjre map met slechts ongeveer 45 MB. Wij kopiëren dit naar onze controller. In het geval van dit voorbeeld naar /opt/plcnext/projects/java/ . We moeten het "java"-bestand in de binaire map HelloWorldjre uitvoerbaar maken via chmod +x java en start onze module

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

Het zou de applicatie moeten uitvoeren en uitvoeren zoals eerder Hello PLCnext world! . Door enkele aanvullende parameters van jlink te gebruiken, kunt u het pakket nog meer strippen (in dit voorbeeld tot 28 MB) door --strip-debug te gebruiken , --no-header-files , --no-man-pages en --compress=2 . Waar zijn compressiekluizen het meest, maar kunnen ze uiteindelijk de prestaties schaden.


Industriële technologie

  1. Besturingscircuits
  2. Java-operators
  3. Java-interface
  4. Java proberen-met-bronnen
  5. Java-annotaties
  6. Java 10 - Klasse-gegevens delen
  7. 5 voordelen van productiecontrole op afstand
  8. Een PLCnext Control-apparaat beheren via SNMP
  9. Hoe maak je een eenvoudige PLCnext console applicatie in C#
  10. Clusterbeheer op PLCnext?
  11. Java-toepassing op PLCnext Control