OpenJDK успешно компилируется и работает на Pi, но единственная версия, которую я нашел, - это версия без JIT. Oracle предоставляет такой JDK для других версий ARM, но не для ARMv6. Есть ли способ получить и запустить такую версию JDK?
OpenJDK успешно компилируется и работает на Pi, но единственная версия, которую я нашел, - это версия без JIT. Oracle предоставляет такой JDK для других версий ARM, но не для ARMv6. Есть ли способ получить и запустить такую версию JDK?
Ответы:
Oracle выпустила (начиная с Java 7u6) JDK с JIT, который работает на Pi с полной поддержкой AWT / Swing. Он также поддерживает JVMTI (cacao имеет только частичную поддержку.) Пресс-релиз здесь .
Я убедился, что он работает с Greenfoot и обеспечивает значительное ускорение по сравнению с простыми (не JIT) сборками OpenJDK.
На момент написания статьи он не поддерживает жесткие числа с плавающей запятой и поэтому не будет работать с такими дистрибутивами, как Raspbian, которые используют только hard float - однако это запланировано на будущий выпуск.
ОБНОВЛЕНИЕ: Как отметил Даррен, сейчас для ARM выпущена хард-плавающая версия в виде предварительной версии JDK8, вы можете найти ее здесь .
ОБНОВЛЕНИЕ 2: Hard float теперь поддерживается в JDK7.
Пакет icedtea-6-jre-cacao содержит JIT-компилятор и, как сообщается, работает на RasPi .
Я сам не пробовал.
Oracle уже выпустила предварительную версию Java JDK8 для ARM для разработчиков, в которую включена поддержка Raspbian с плавающей точкой на Pi. Это работает, и я обнаружил, что он работает примерно в 20 раз быстрее, чем OpenJDK для некоторых вычислений с плавающей запятой. http://jdk8.java.net/fxarmpreview/
На Rasbian вы можете использовать JamVM, который включает "JIT-копирование кода"
apt-get install icedtea-7-jre-jamvm
JamVM в настоящее время является самой быстрой и стабильной JVM, которая включает JIT на Rasbian.
Avian также поддерживается на Rasbian, который также включает JIT. Вам придется построить его вручную: http://labb.zafena.se/?p=630
Я ожидаю, что Avian появится в Raspbian, когда он будет собран из источника SID Debian. Птичий в настоящее время существует в экспериментальном SID Debian внутриjvm-7-avian-jre
пакета.
И Avian, и JamVM работают в сочетании с классами OpenJDK-7, поэтому вы можете использовать их для ускорения всех программ запуска Java, таких как javac и java. файл/etc/java-7-openjdk/jvm-armhf.cfg
определяет, какая JVM используется по умолчанию в openjdk 7 на Rasbian.
Вы также можете указать java-пусковым установкам индивидуально, какой jvm использовать:
java -jamvm
javac -J-jamvm
Oracle выпустила полную версию (больше не предварительный просмотр) Java 8 и Java 7 для архитектуры ARM Raspberry Pi: ссылка на Java 8 .
Вы также можете использовать из командной строки:
sudo apt-get update
sudo apt-get install oracle-java8-jdk
Можно объединить OpenJDK 7 с JVM из Java JDK8, который включает JIT, чтобы получить установку с поддержкой X11 и рабочую версию Swing / AWT.
Интерфейс JNI, за исключением «Classpath», четко разделяет классы среды JVM и среды выполнения. Если вы используете клиентскую точку доступа (jre / lib / arm / client / libjvm.so) из предварительного просмотра JavaFX 8 в сочетании с скомпилированными Rasbian классами среды выполнения OpenJDK 7 и средствами запуска java (/ usr / lib / jvm / java-7- openjdk-armhf) вы получите следующие настройки и преимущества:
Настроить:
Загрузите jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz с http://jdk8.java.net/fxarmpreview/index.html
# 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