JITコンパイラが利用可能なJDKはありますか?


24

OpenJDKはPiで正常にコンパイルおよび実行されますが、私が見つけた唯一のバージョンはJITのないバージョンです。Oracleは、ARMv6ではなく、ARMの他のバージョンにこのようなJDKを提供します。その間にJDKのそのようなバージョンを起動して実行する方法はありますか?


ディストリビューションとは何ですか?
Jivings

Debianは現在のところ圧迫していますが、これが状況を改善するのであれば、私は変更について大騒ぎしていません!
berry120

公式リポジトリにOpenJDKバージョンをインストールできませんか?
Jivings

@Jivingsうん、それは私が現在使用しているものです。しかし、そのバージョンにはJITが付属していません(そのため質問です!)
berry120

申し訳ありませんが、なぜJITがないのかわかりません。奇妙な決定のように思えますが、その根拠は見つかりましたか?
Jivings

回答:


15

Oracleは(Java 7u6の時点で)完全なAWT / SwingをサポートするPiで動作するJITを備えたJDKをリリースしました。JVMTIもサポートしています(cacaoには部分的なサポートのみがあります。)プレスリリースはこちら

Greenfootで動作することを確認し、プレーン(非JIT)OpenJDKビルドのようなものと比較して大幅な高速化を提供します。

執筆時点では、ハードフローティングポイントをサポートしていないため、ハードフロートのみを使用するRaspbianなどのディストリビューションでは動作しません。ただし、これは将来のリリースで計画されています。

更新:Darrenが指摘したように、ハードフロートバージョンがARM向けにJDK8プレビューリリースの形式でリリースされましこちらで見つけることができます。

更新2:JDK7ではハードフロートがサポートされるようになりました。


どのディストリビューションをサポートしていますか?
Zoot

2
@Zoot Debian squeezeで使用しました-softfloatを使用できるLinuxディストリビューションをサポートするはずです。
berry120

6

IcedTea-6-JRE-カカオパッケージには、JITコンパイラが含まれている、と伝えRasPiに取り組んでいます

自分で試したことはありません。


それはJDKではなくJREだけではありませんか?
berry120

@ berry120:JITが必要なのはJREです。プログラムのコンパイル時にJITが使用中であったかどうかは問題ではありません。
finnw

ああ、良い点。試してみます:-)
berry120

1
少なくともRaspbianでは、カカオJITは適切に動作していないようで、簡単な修正方法はないようです。
ダレンウィルキンソン

4

オラクルは現在、ARM向けのJava JDK8の開発者向けプレビュー版をリリースしました。これには、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です。

Avianは、JITも含むRasbianでもサポートされています。手動でビルドする必要があります:http : //labb.zafena.se/?p=630

Avianは、Debian SIDソースからビルドされたRaspbianに登場することを期待しています。Avianは現在、jvm-7-avian-jreパッケージ内で実験的なDebian SIDに存在しています。

AvianとJamVMの両方がOpenJDK-7クラスと連携して動作するため、両方を使用してjavacやjavaなどのすべてのjavaランチャーを高速化できます。このファイルは、/etc/java-7-openjdk/jvm-armhf.cfgRasbianのopenjdk 7内でデフォルトで使用されるJVMを決定します。

また、使用するjvmをjavaランチャーに個別に伝えることもできます。

java -jamvm

javac -J-jamvm

2

Oracleは、Raspberry PiのARMアーキテクチャ用のJava 8およびJava 7のフルバージョン(プレビュー版ではなくなりました):Java 8へのリンクをリリースしました。

コマンドラインからも使用できます:

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

1

OpenJDK 7を、JITを含むJava JDK8のJVMと組み合わせて、X11がサポートされ、Swing / AWTが動作するセットアップを取得することができます。

「Classpath」例外を含むJNIインターフェイスは、JVMクラスとランタイム環境クラスを明確に分離します。JavaFX 8プレビューのクライアントホットスポット(jre / lib / arm / client / libjvm.so)を、RasbianでコンパイルされたOpenJDK 7ランタイム環境クラスおよびJavaランチャー(/ usr / lib / jvm / java-7- openjdk-armhf)次の設定と利点が得られます:

  • Hotspot Client JIT(JavaFX 8プレビューから)
  • Swing / AWTサポート(openjdk-7-jreパッケージのOpenJDKクラスを使用)
  • パルスオーディオのサポート(openjdk-7-jreおよびopenjdk-7-jre-headlessパッケージのIcedTea pulse-java)
  • icedtea-webを使用したweb-browserアプレットのサポート(icedtea-7-pluginパッケージから)
  • icedtea-webを使用したJNLP javawsランチャー(icedtea-7-pluginパッケージから)
  • OpenJDK javaランチャーによるarmhf JNI自動検出(OpenJDK javaランチャーは、armhf固有のシステムライブラリパスをjava.library.pathに追加します)。/ usr / lib / arm-linux-gnueabihfパスをjava.library.pathに含めることにより、Pi4J GPIOライブラリやJogAmp gluegen-rt JOGL / JOALなどのJavaライブラリがarmhf Linuxシステムで実行されていることを正しく検出できますそして、armel JNI実装の代わりにarmhf JNI実装をロードします。
  • ヘッドフル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.