工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

JlinkでPLCnext Control上のJava 9アプリを最適化

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:\Java\jdk-12.0.2\bin\javac.exe -d .\modules\de.plcnext.hello .\src\de.plcnext.hello\de\plcnext\hello\HelloWorld.java .\src\de.plcnext.hello\module-info.java

modulesフォルダとJavaクラスが作成されます:

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

ホストシステムでモジュールをテストするには、以下のコマンドで実行:

C:\Java\jdk-12.0.2\bin\java.exe --module-path .\modules -m de.plcnext.hello/de.plcnext.hello.HelloWorld

これによりHello PLCnext world!が出力されるはずです。

jlinkの使い方

今度は300MBのJDK全体なしでデバイスにデプロイします。最初のステップでは追加パラメータなしでjlinkを使用します。まず、どの追加モジュールが必要かを知る必要があります。これはjdepsでモジュールを分析して調べます。

C:\Java\jdk-12.0.2\bin\jdeps.exe --module-path ".\modules" --add-modules "de.plcnext.hello"

これにより、java.baseが追加で必要であることがわかります。module-pathには、アプリケーションへのパスとターゲットプラットフォームJDKのjmodsへのパスを指定します。ここではC:\Java\jdk-12-ARM-32bit\jmodsです。

jlinkコマンドは以下のようになります:

C:\Java\jdk-12.0.2\bin\jlink.exe --module-path ".\modules;C:\Java\jdk-12-ARM-32bit\jmods" --add-modules "de.plcnext.hello,java.base" --output HelloWorldjre

結果として、約45MBのHelloWorldjreフォルダが生成されます。これをコントローラにコピーします。この例では/opt/plcnext/projects/java/に配置。chmod +x javaでHelloWorldjreのbinフォルダ内の「java」ファイルを実行可能にし、モジュールを起動:

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

アプリケーションが実行され、以前と同じくHello PLCnext world!が出力されます。jlinkの追加パラメータ--strip-debug、--no-header-files、--no-man-pages、--compress=2を使用すると、さらに小さく(この例では28MBまで)できます。圧縮が最も効果的ですが、最終的にはパフォーマンスに影響する可能性があります。

産業技術

  1. 制御回路:基礎、応用、ベストプラクティス
  2. モダン産業におけるリモート生産制御の5つの主要メリット
  3. SNMPでPLCnext Controlデバイスを最適化:実践ガイド
  4. C#でPLCnextコンソールアプリケーションを開発:初心者ガイド
  5. PLCnextでのクラスタ管理:産業オートメーションにおけるKubernetesの活用
  6. JlinkでPLCnext Control上のJava 9アプリを最適化
  7. Java演算子をマスター:種類、構文、実践例
  8. Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
  9. Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
  10. Javaアノテーション完全ガイド:種類、配置場所、実践例
  11. Java 10のアプリケーションクラスデータ共有(AppCDS)で起動高速化