Как я могу запустить программное обеспечение Java?

35

Каков наилучший способ запуска кода Java на RP? Работает ли установка OpenJDK из репозиториев Debian / Fedora нормально? Есть ли твики, которые нужно использовать для улучшения производительности? Кроме того, есть ли «легковесная» JVM, доступная для RP, которая работает лучше / быстрее, чем стандартная JVM от OpenJDK? Если да, то как это получается и устанавливается?

Даррен Уилкинсон
источник
1
Обратите внимание, что OpenJDK еще не имеет ARM JIT, что делает его медленным.
Турбьёрн Равн Андерсен
Похоже, что ARM JIT от Oracle не является частью OpenJDK.
Турбьёрн Равн Андерсен

Ответы:

15

Что касается «облегченной» части вашего вопроса, есть несколько меньших JVM, которые вы можете рассмотреть.

Например, JamVM изначально был разработан для работы в небольших системах, таких как RP, и он и Cacao (еще одна меньшая JVM) доступны в виде пакетов в debian:

icedtea-7-jre-jamvm
icedtea-7-jre-cacao

хотя оба используют библиотеки классов open-jdk AFAIK и библиотеки классов, которые являются огромной частью (с точки зрения дискового пространства) установки JRE.

Maks
источник
11

Установка из репозиториев должна нормально работать на Debian:

sudo apt-get clean
sudo apt-get update
sudo apt-get install openjdk-6-jre

Похоже, что Java недоступна в репозитории Arch.

Может кто-нибудь, пожалуйста, отредактируйте с информацией для Fedora, я не знаю этого дистрибутива.

Jivings
источник
3

Я видел большой интерес к запуску различных урезанных JVM, работающих на Raspberry Pi, но мало кто задумывался о компиляции Java прямо в машинный код. http://gcc.gnu.org/java/ содержит компилятор, который может дать вам машинный код из Java или байтового кода Java. Проект, который я собирался использовать для gcj, закончился тем, что его свернули до того, как он вышел из-под контроля, но компилятор считается подходящим для встраиваемых систем, поэтому он должен вполне соответствовать raspberry pi.

На полпути вниз по странице в этом форуме есть очень хороший график, который кто-то сделал, сравнивая относительную производительность различных JVM, а также gcj http://www.raspberrypi.org/phpBB3/viewtopic.php?t=6330&p=124107 . Имейте в виду, что эти тесты были сделаны до резкого увеличения производительности, включенного в последний дистрибутив raspbian.

Дэн Б
источник
Теперь, шесть месяцев спустя, у вас есть практический опыт работы с этим на Raspberry?
Турбьёрн Равн Андерсен
2

Я не знаю специального облегченного JDK, о котором я знаю, но нормальный openjdk из репозитория, кажется, работает нормально .

Я говорю хорошо , нет проблем с функциональностью как таковой, по крайней мере, я не нашел. Включая заголовочные приложения, Swing / AWT также, кажется, работает хорошо (не пробовал JavaFX.) С другой стороны, производительность не совсем подходит из-за отсутствия JIT (см. Этот вопрос ).

berry120
источник
2

Oracle любезно перенесла версию Java 7 SE без головы в ARM для Raspberry PI. Я скопировал файлы классов из некоторого моего не основанного на EE консольного кода, и он работает нормально - но примерно в 9 раз медленнее, чем Pentium IV на 3 ГГц. см. http://eclipsejpa.blogspot.ca/2012/10/java-se-7-embedded-on-raspberry-pi.html

http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html

Майкл О'Брайен
источник
1

Oracle выпустила Java 8 (и Java 7) для ARM. Используйте ссылку с этой страницы, чтобы получить лучшую на данный момент версию Java для вашего Raspberry Pi.

Это также должно работать:

sudo apt-get update
sudo apt-get install oracle-java8-jdk
симулянт
источник
0

Я не знаю, как это работает с JVM, но я знаю, что ARM SoC на Raspberry Pi может запускать сам байт-код Java.

У меня нет Raspberry Pi для тестирования JRE. Поэтому я размышляю.

Используйте: cat /proc/cpuinfo/и посмотрите, сможет ли Java поддерживать Raspberry Pi.

Ranomier
источник
1
Этот javaфлаг /proc/cpuinfoозначает, что процессор поддерживает расширение Jazelle. Вы можете прочитать об этом в Википедии .
Кшиштоф Адамски
Проблема с Jazelle заключается в том, что ни одна из JVM с открытым исходным кодом не может его использовать.
Алекс Чемберлен