Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Aplicación Java en PLCnext Control

Con Java 9, una nueva herramienta llamada jlink Fue presentado. Combina módulos y crea una imagen de tiempo de ejecución integral. Por un lado, todo el ARM JDK de 32 bits se puede ejecutar en un PLCnext Control. Pero con jlink y módulos es posible reducir los recursos necesarios para su aplicación Java. Crea un paquete con solo las partes necesarias del JDK necesarias para su aplicación.

Requisitos

Los binarios de OpenJDK para muchas plataformas se pueden encontrar, p. en AdoptOpenJDK. Para este tutorial, elegimos Linux arm32 jdk-12.0.2+10 para el controlador y su colgante para un sistema host Windows x64. Estamos utilizando la siguiente ubicación de los JDK:

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

Crear un módulo de aplicación

En este ejemplo, solo estamos imprimiendo un Hello World en la consola Para usar jlink tenemos que poner esta pequeña aplicación en un módulo. Mi punto de partida en la terminal es una carpeta llamada "HelloWorld" y una carpeta src con la siguiente estructura.

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

Este es nuestro pequeño ejemplo de código en el archivo HelloWorld.java:

package de.plcnext.hello;

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

Y se necesita module-info.java para crear el módulo:

module de.pxc.hello { }

Después de crear la carpeta fuente, compilamos nuestro proyecto. Para esto usamos el siguiente comando en la terminal.

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

Se crea una carpeta de módulos y clases java:

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

Para probar nuestro módulo en el sistema anfitrión, podemos ejecutarlo con el siguiente comando:

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

Esto debería generar Hello PLCnext world! .

Cómo usar jlink

Ahora queremos tener esto en nuestro dispositivo sin los 300 MB de JDK. Para esto estamos usando jlink sin ningún parámetro adicional en el primer paso. Pero al principio necesitamos una información más, qué módulos adicionales se necesitan. Esto lo averiguaremos analizando nuestro módulo con jdeps.

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

Esto nos dice que necesitamos java.base además de nuestro módulo. Como module-path elegimos la ruta a nuestra aplicación y la ruta a los jmods de nuestra plataforma de destino JDK. En este caso C:Javajdk-12-ARM-32bitjmods .

Ahora nuestra llamada jlink se ve así:

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

El resultado es un HelloWorldjre carpeta con sólo unos 45 MB. Copiamos esto a nuestro controlador. En el caso de este ejemplo a /opt/plcnext/projects/java/ . Necesitamos hacer que el archivo "java" en la carpeta binaria HelloWorldjre sea ejecutable a través de chmod +x java e inicia nuestro módulo

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

Debería ejecutar la aplicación y la salida como antes Hello PLCnext world! . Al usar algunos parámetros adicionales de jlink, puede reducir el paquete aún más (en este ejemplo, hasta 28 MB) usando --strip-debug , --no-header-files , --no-man-pages y --compress=2 . ¿Dónde están más las cajas fuertes de compresión pero podrían dañar el rendimiento al final?


Tecnología Industrial

  1. Circuitos de control
  2. Operadores Java
  3. Interfaz Java
  4. Prueba de Java con recursos
  5. Anotaciones Java
  6. Java 10 - Intercambio de datos de clase
  7. 5 ventajas del control remoto de la producción
  8. Gestión de un dispositivo PLCnext Control a través de SNMP
  9. Cómo crear una aplicación de consola PLCnext simple en C#
  10. ¿Gestión de clústeres en PLCnext?
  11. Aplicación Java en PLCnext Control