亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

PLCnext 控件上的 Java 应用程序

在 Java 9 中,一个名为 jlink 的新工具 被介绍了。它结合了模块并构建了一个全面的运行时映像。一方面,整个 32 位 ARM JDK 可以在 PLCnext Control 上运行。但是使用 jlink 和模块可以减少 Java 应用程序所需的资源。它创建一个包,其中包含您的应用程序所需的 JDK 的必要部分。

先决条件

可以找到许多平台的 OpenJDK 二进制文件,例如在 AdoptOpenJDK 上。对于本教程,我们选择了 Linux arm32 jdk-12.0.2+10 用于 Windows x64 主机系统的控制器及其挂件。我们正在使用 JDK 的以下位置:

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

创建应用模块

在这个例子中,我们只是打印一个 Hello World 在控制台上。使用 jlink 我们必须把这个小应用程序放到一个模块中。我在终端上的起点是一个名为“HelloWorld”的文件夹和一个具有以下结构的 src 文件夹。

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

这是我们在 HelloWorld.java 文件中的小代码示例:

package de.plcnext.hello;

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

并且需要module-info.java来创建模块:

module de.pxc.hello { }

创建源文件夹后,我们编译我们的项目。为此,我们在终端上使用以下命令。

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

创建了一个模块文件夹和java类:

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

要在主机系统上测试我们的模块,我们可以使用以下命令运行它:

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

这应该输出 Hello PLCnext world! .

jlink的使用方法

现在我们想在没有整个 300MB JDK 的情况下将它安装到我们的设备上。为此,我们在第一步中使用没有任何附加参数的 jlink。但首先我们需要更多信息,需要哪些附加模块。我们将通过使用 jdeps 分析我们的模块来发现这一点。

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

这告诉我们,我们需要 java.base 除了我们的模块。作为 module-path 我们选择应用程序的路径和目标平台 JDK 的 jmod 路径。在这种情况下 C:Javajdk-12-ARM-32bitjmods .

现在我们的 jlink 调用如下所示:

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

结果是 HelloWorldjre 文件夹只有大约 45MB。我们将其复制到我们的控制器。以 /opt/plcnext/projects/java/ 为例 .我们需要通过 chmod +x java 使 HelloWorldjre 二进制文件夹中的“java”文件可执行 并启动我们的模块

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

它应该像 Hello PLCnext world! 之前一样运行应用程序和输出 .通过使用 jlink 的一些附加参数,您可以使用 --strip-debug 进一步精简包(在本例中减少到 28MB) , --no-header-files , --no-man-pages--compress=2 .哪里的压缩保险箱最多,但最终可能会损害性能。


工业技术

  1. 电机控制电路
  2. 控制电路
  3. Java 运算符
  4. Java 接口
  5. Java try-with-resources
  6. Java 注释
  7. Java 10 - 类数据共享
  8. 远程生产控制的5个优点
  9. 通过 SNMP 管理 PLCnext 控制设备
  10. 如何在 C# 中创建一个简单的 PLCnext 控制台应用程序
  11. PLCnext 上的集群管理?
  12. PLCnext 控件上的 Java 应用程序