산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
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:Javajdk-12.0.2binjavac.exe -d .modulesde.plcnext.hello .srcde.plcnext.hellodeplcnexthelloHelloWorld.java .srcde.plcnext.hellomodule-info.java

modules 폴더와 자바 클래스 생성:

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의 jmods 경로를 지정합니다. 이 경우 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

결과는 약 45MB 크기의 HelloWorldjre 폴더입니다. 이를 컨트롤러로 복사합니다. 이 예제에서는 /opt/plcnext/projects/java/로 복사. chmod +x java로 HelloWorldjre 바이너리 폴더의 "java" 파일을 실행 가능하게 만들고 우리 모듈 시작:

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

애플리케이션이 실행돼 이전과 같이 Hello PLCnext world!를 출력해야 합니다. --strip-debug, --no-header-files, --no-man-pages, --compress=2 같은 jlink 추가 매개변수를 사용하면 패키지를 더 줄일 수 있습니다(이 예제에서 28MB까지). 압축이 가장 많은 공간을 절약하지만 마지막에 성능에 영향을 줄 수 있습니다.

산업기술

  1. 제어 회로: 기초, 응용, 모범 사례
  2. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  3. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  4. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  5. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  6. Java 10: 클래스 데이터 공유(CDS)로 성능 향상
  7. 현대 산업을 위한 원격 생산 제어의 5가지 핵심 이점
  8. SNMP로 PLCnext Control 장치 최적화: 실용 가이드
  9. C#으로 PLCnext 콘솔 애플리케이션 개발하기: 초보자 가이드
  10. PLCnext에서 클러스터 관리: Kubernetes로 산업 자동화 활용하기