JIT 컴파일러가있는 JDK가 있습니까?


24

OpenJDK는 Pi에서 성공적으로 컴파일되고 실행되지만 찾은 유일한 버전은 JIT가없는 것입니다. Oracle은 ARMv6이 아닌 다른 버전의 ARM에 이러한 JDK를 제공합니다. 그와 같은 JDK 버전을 설치하고 실행하는 방법이 있습니까?


배포판은 무엇입니까?
Jivings 2016 년

데비안은 현재 상황이 좋지만 상황에 도움이된다면 변화에 대해 너무 소란스럽지 않습니다!
berry120

공식 저장소에 OpenJDK 버전을 설치할 수 없습니까?
Jivings 2016 년

@Jivings Yup, 그것이 내가 지금 사용하고있는 것입니다. 그러나 그 버전에는 JIT가 포함되어 있지 않습니다 (따라서 질문!)
berry120

죄송합니다 :) 왜 JIT가 없는지 잘 모르겠습니다. 이상한 결정 인 것 같습니다. 근거가 있습니까?
Jivings 2016 년

답변:


15

오라클은 이제 Java 7u6부터 JIT가 포함 된 JDK를 출시하여 AWT / Swing을 완벽하게 지원하는 Pi에서 작동합니다. 또한 (카카오는 부분적으로 만 지원합니다.) JVMTI를 지원 보도 자료 여기 .

Greenfoot 과 함께 작동 하고 일반 (JIT가 아닌) OpenJDK 빌드와 비교할 때 엄청난 속도를 제공합니다.

작성 당시에는 하드 부동 소수점을 지원하지 않으므로 하드 플로트 만 사용하는 Raspbian과 같은 배포판에서는 작동하지 않습니다. 그러나 이것은 향후 릴리스를 위해 계획되어 있습니다.

업데이트 : Darren이 지적했듯이 이제 ARM 용 JDK8 프리뷰 릴리스의 형태로 하드 플로트 버전이 출시되었으므로 여기에서 찾을 수 있습니다 .

업데이트 2 : JDK7에서 하드 플로트가 지원됩니다.


어떤 배포판을 지원합니까?
Zoot

2
@Zoot Debian squeeze fine과 함께 사용했습니다. softfloat를 사용할 수있는 모든 Linux 배포판을 지원해야합니다.
berry120

6

icedtea-6-JRE-카카오 패키지는 JIT 컴파일러를 포함하고, 보도 RasPi에서 작동합니다 .

나는 그것을 직접 시도하지 않았다.


그래도 JDK가 아닌 JRE가 아닌가?
berry120

@ berry120 : JIT가 필요한 것은 JRE입니다. 프로그램이 컴파일 될 때 JIT가 사용 중인지 여부는 중요하지 않습니다.
finnw

아, 좋은 지적입니다. 그것을 시도해 줄 것입니다 :-)
berry120

1
카카오 JIT는 적어도 Raspbian에서 제대로 작동하지 않는 것처럼 보이며 쉬운 해결 방법이없는 것 같습니다.
대런 윌킨슨

4

오라클은 이제 Java JDK8 for ARM의 개발자 프리뷰를 발표했는데, 여기에는 Pi의 하드 플로트 Raspbian 지원이 포함됩니다. 작동하지만 특정 부동 소수점 집중 계산의 경우 OpenJDK보다 약 20 배 빠릅니다. http://jdk8.java.net/fxarmpreview/


당신은 나를 이길! 난 그냥 그 게시하려고했습니다 :-)
berry120

3

Rasbian에서는 "code-copying-JIT"가 포함 된 JamVM을 사용할 수 있습니다

apt-get install icedtea-7-jre-jamvm

JamVM은 현재 Rasbian의 JIT를 포함하는 가장 빠르고 안정적인 JVM입니다.

조류는 또한 JIT를 포함하는 Rasbian에서도 지원됩니다. 수동으로 빌드해야합니다. http://labb.zafena.se/?p=630

나는 Abian이 Debian SID 소스에서 빌드되었을 때 Raspbian에 나타날 것으로 기대합니다. 조류는 현재 jvm-7-avian-jre패키지 내부의 데비안 SID 실험에 존재 합니다.

Avian 및 JamVM은 OpenJDK-7 클래스와 함께 작동하므로 javac 및 java와 같은 모든 Java 실행 프로그램의 속도를 높이는 데 사용할 수 있습니다. 파일 /etc/java-7-openjdk/jvm-armhf.cfg은 Rasbian의 openjdk 7에서 기본적으로 사용할 JVM을 결정합니다.

또한 자바 런처에게 사용할 jvm을 개별적으로 알려줄 수 있습니다.

java -jamvm

javac -J-jamvm

2

오라클은 라즈베리 파이의 ARM 아키텍처 용 자바 (8) 및 Java 7의 전체 버전 (더 이상 미리보기)를 출시 : 링크 자바 8 .

명령 행에서 사용할 수도 있습니다.

sudo apt-get update
sudo apt-get install oracle-java8-jdk

1

XJ 지원 및 Swing / AWT 작동 설정을 얻기 위해 JIT가 포함 된 Java JDK8의 JVM과 OpenJDK 7을 결합 할 수 있습니다.

"클래스 경로"예외가있는 JNI 인터페이스는 JVM과 런타임 환경 클래스를 명확하게 구분합니다. JavaFX 8 미리보기에서 클라이언트 핫스팟 (jre / lib / arm / client / libjvm.so)을 Rasbian 컴파일 된 OpenJDK 7 런타임 환경 클래스 및 Java 실행기와 함께 사용하는 경우 (/ usr / lib / jvm / java-7- openjdk-armhf) 다음과 같은 설정 및 이점을 얻을 수 있습니다

  • 핫스팟 클라이언트 JIT (JavaFX 8 미리보기에서)
  • Swing / AWT 지원 (openjdk-7-jre 패키지의 OpenJDK 클래스 사용)
  • 펄스 오디오 지원 (openjdk-7-jre 및 openjdk-7-jre-headless 패키지의 IcedTea pulse-java)
  • icedtea-web을 사용한 웹 브라우저 애플릿 지원 (icedtea-7-plugin 패키지에서)
  • icedtea-web을 사용하는 JNLP javaws 실행기 (icedtea-7-plugin 패키지)
  • OpenJDK Java 런처에 의한 armhf JNI 자동 감지 (OpenJDK Java 런처는 armhf 특정 시스템 라이브러리 경로를 java.library.path에 추가) java.library.path에 / usr / lib / arm-linux-gnueabihf 경로를 포함 시키면 Pi4J GPIO 라이브러리 및 JogAmp gluegen-rt JOGL / JOAL과 같은 Java 라이브러리가 armhf Linux 시스템에서 실행 중인지 올바르게 감지 할 수 있습니다. 그런 다음 armel JNI 구현 대신 armhf JNI 구현을로드하십시오.
  • headfull OpenJDK 클래스를 사용하여 glassfish 및 tomcat과 같은 JavaEE 서버 응용 프로그램 내에서 이미지 처리 및 인쇄를 지원합니다.

설정:

http://jdk8.java.net/fxarmpreview/index.html 에서 jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz를 다운로드하십시오.

# Install openjdk-7 and the icedtea-web browser plugin
sudo apt-get install openjdk-7-jdk icedtea-7-plugin
# Extract the Oracle Client Hotspot JVM from the JavaFX 8 preview
tar --extract --verbose --file=jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz jdk1.8.0/jre/lib/arm/client
# Place the client hotspot dir containing the libjvm.so inside the OpenJDK 7 jre/lib/arm folder
sudo mv jdk1.8.0/jre/lib/arm/client /usr/lib/jvm/java-7-openjdk-armhf/jre/lib/arm/oracle
# Configure the OpenJDK Runtime to use the Oracle client Hotspot JVM dir
# This sed command places -oracle KNOWN at the first line of jvm-armhf.cfg
sudo sed -i -e "1i\\-oracle KNOWN" /etc/java-7-openjdk/jvm-armhf.cfg

java -version
java version "1.7.0_07" <--- This is the OpenJDK 7 Update version
OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-1+rpi1) <--- This is the   OpenJDK 7 Runtime version
Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode) <--- This is the Oracle Client Hotspot JVM version
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.