Чи є JDK з компілятором JIT?


24

OpenJDK збирається і працює на Pi успішно, але єдина версія, яку я знайшов, - це версія без JIT. Oracle надає такий JDK для інших версій ARM, але не для ARMv6. Чи є якийсь спосіб запустити таку версію JDK та запустити її тим часом?


Що таке дистрибутив?
Відхилення

В даний час Debian здавлюється, хоча я не надто метушився щодо зміни, якщо це допоможе ситуації!
berry120

Ви не можете встановити версію OpenJDK в офіційному репо?
Jivings

@Jivings Yup, саме цим я зараз користуюся. Але ця версія не поставляється з JIT (звідси питання!)
berry120

Вибачте :) Я поняття не маю, чому тоді цього не має JIT. Це здається дивним рішенням, чи знайшли ви це обґрунтування?
Jivings

Відповіді:


15

Зараз Oracle випустив (на Java 7u6) JDK з JIT, який працює на Pi з повною підтримкою AWT / Swing. Він також підтримує JVMTI (у какао є лише часткова підтримка.) Прес-реліз тут .

Я переконався, що він працює з Greenfoot і забезпечує величезну швидкість порівняно з подібними до простої (не-JIT) збірки OpenJDK.

На момент написання він не підтримує жорстку плаваючу точку, і тому не буде працювати з дистрибутивами, такими як Raspbian, які використовують лише жорсткий флоат - це, однак, планується для майбутнього випуску.

ОНОВЛЕННЯ: Як зазначив Даррен, тепер для ARM випущена версія з твердим плаваючим файлом у вигляді попереднього випуску JDK8, ви можете знайти її тут .

ОНОВЛЕННЯ 2: Тепер у JDK7 підтримується жорсткий поплавок.


Які дистрибутиви він підтримує?
Zoot

2
@Zoot Я використовував його з Debian видавлюванням штрафу - він повинен підтримувати будь-який дистрибутив Linux, який може використовувати softfloat.
berry120

6

The icedtea-6-jre-cacao містить компілятор JIT і, як повідомляється, працює над RasPi .

Я сам цього не пробував.


Це не лише JRE, а не JDK?
berry120

@ berry120: Саме в JRE потрібен СТІ. Не має значення, чи використовувався JIT під час складання програми.
finnw

Ах, хороший пункт. Спробую :-)
berry120

1
Какао JIT, здається, не працює належним чином, принаймні, на Raspbian, і це, здається, не є легким виправленням.
Даррен Вілкінсон

4

Зараз Oracle випустив попередній перегляд розробника Java JDK8 для ARM, який спеціально включає підтримку твердоплавного Raspbian на Pi. Це працює, і я виявив, що це в 20 разів швидше, ніж OpenJDK для певних обчислень з плаваючою точкою. http://jdk8.java.net/fxarmpreview/


Ти побив мене до цього! Я ось-ось збирався дописувати, що :-)
berry120

3

На Rasbian ви можете використовувати JamVM, який включає в себе "копіювання коду-JIT"

apt-get install icedtea-7-jre-jamvm

На даний момент JamVM - це найшвидший і стабільний JVM, який включає JIT на Rasbian.

Пташиний також підтримується на Rasbian, який також включає JIT. Створити його доведеться вручну: http://labb.zafena.se/?p=630

Я очікую, що Avian з'явиться в Raspbian, коли він побудований з джерела Debian SID. Пташині в даний час існують в експериментальній Debian SID всередині jvm-7-avian-jreпакета.

І Avian, і JamVM працюють у поєднанні з класами OpenJDK-7, тому ви можете використовувати їх як для прискорення всіх пускових пристроїв, таких як javac, так і java. файл/etc/java-7-openjdk/jvm-armhf.cfg визначає, який JVM використовується за замовчуванням у openjdk 7 на Rasbian.

Ви також можете окремо повідомити пускові установки Java, який jvm використовувати:

java -jamvm

javac -J-jamvm

2

Oracle випустив повну версію (більше не попередній перегляд) Java 8 та Java 7 для архітектури ARM Raspberry Pi: посилання на Java 8 .

Ви також можете використовувати з командного рядка:

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

1

Можна комбінувати OpenJDK 7 з JVM від Java JDK8, що включає JIT, щоб отримати налаштування з підтримкою X11 та роботою Swing / AWT.

Інтерфейс JNI, за винятком "Classpath", чітко відокремлює класи JVM та середовище виконання. Якщо ви використовуєте точку доступу клієнта (jre / lib / arm / client / libjvm.so) з попереднього попереднього перегляду JavaFX 8 у поєднанні з компільованим середовищем програми OpenJDK 7 Runtime і запусниками Java (Rasrbian) OpenJDK 7 (/ usr / lib / jvm / java-7- openjdk-armhf) Ви отримаєте таку настройку та переваги:

  • Точка клієнта JIT (з попереднього перегляду JavaFX 8)
  • Підтримка Swing / AWT (використання класів OpenJDK з пакету openjdk-7-jre)
  • підтримка імпульсного аудіо (IcedTea pulse-java з пакету openjdk-7-jre та openjdk-7-jre-headless)
  • підтримка аплетів веб-браузера за допомогою icedtea-web (з пакету icedtea-7-плагінів)
  • пусковий запуск JNLP з використанням icedtea-web (з пакета плагін icedtea-7)
  • Автовідкриття armhf JNI за допомогою Java-пускових програм OpenJDK (пускові установки OpenJDK додають специфічний шлях для armhf системної бібліотеки в java.library.path). Включивши шлях / usr / lib / arm-linux-gnueabihf в java.library.path, дозволяє бібліотекам Java, таким як бібліотека Pi4J GPIO і JogAmp gluegen-rt JOGL / JOAL, правильно визначити, що вона працює в системі armhf linux. а потім завантажте реалізацію armhf JNI замість armel JNI.
  • Підтримка обробки зображень та друку всередині серверних додатків JavaEE, таких як скловолокна та tomcat, за допомогою головних класів OpenJDK.

Налаштування:

Завантажте 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.