PLCnext ControlのJavaアプリケーション
Java 9 では、jlink という新しいツールが が紹介されました。モジュールを組み合わせて、オールインのランタイム イメージを構築します。一方では、32 ビット ARM JDK 全体を PLCnext Control 上で実行できます。ただし、jlink を使用 およびモジュールを使用すると、Java アプリケーションに必要なリソースを削減できます。アプリケーションに必要な JDK の必要な部分だけを含むバンドルを作成します。
前提条件
- ホスト システムの JDK
- コントローラーの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
modules フォルダーと 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 を使用しています。しかし、最初に、どの追加モジュールが必要かという情報がもう 1 つ必要です。これは、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
.圧縮は最も安全ですが、最後にパフォーマンスを損なう可能性がある場所.
産業技術