OpenJDK kompiluje się i działa na Pi z powodzeniem, ale jedyną wersją, którą znalazłem, jest wersja bez JIT. Oracle zapewnia taki JDK dla innych wersji ARM, ale nie ARMv6. Czy jest jakiś sposób, aby w międzyczasie uruchomić taką wersję JDK?
OpenJDK kompiluje się i działa na Pi z powodzeniem, ale jedyną wersją, którą znalazłem, jest wersja bez JIT. Oracle zapewnia taki JDK dla innych wersji ARM, ale nie ARMv6. Czy jest jakiś sposób, aby w międzyczasie uruchomić taką wersję JDK?
Odpowiedzi:
Oracle wydało teraz (od Java 7u6) JDK z JIT, który działa na Pi z pełną obsługą AWT / Swing. Obsługuje również JVMTI (kakao ma tylko częściowe wsparcie.) Informacja prasowa tutaj .
Sprawdziłem, że działa z Greenfoot i zapewnia ogromne przyspieszenie w porównaniu do zwykłej (nie JIT) wersji OpenJDK.
W chwili pisania tego tekstu nie obsługuje twardego zmiennoprzecinkowego, więc nie będzie działać z dystrybucjami takimi jak Raspbian, które używają tylko twardego zmiennoprzecinkowego - jest to jednak planowane w przyszłej wersji.
AKTUALIZACJA: Jak zauważył Darren, wersja ARM została wydana dla ARM w formie wersji zapoznawczej JDK8, można ją znaleźć tutaj .
AKTUALIZACJA 2: Hard float jest teraz obsługiwany w JDK7.
Pakiet icedtea-6-jre-cacao zawiera kompilator JIT i podobno działa na RasPi .
Sam tego nie próbowałem.
Oracle wydało teraz wersję programistyczną Java JDK8 dla ARM, która w szczególności zawiera obsługę twardego Raspbian na Pi. Działa i stwierdziłem, że jest on około 20 razy szybszy niż OpenJDK dla niektórych obliczeń intensywnych zmiennoprzecinkowych. http://jdk8.java.net/fxarmpreview/
Na Rasbian możesz używać JamVM, który zawiera „JIT-kopiowanie kodu”
apt-get install icedtea-7-jre-jamvm
JamVM jest obecnie najszybszym i najbardziej stabilnym JVM, który zawiera JIT na Rasbian.
Avian jest również obsługiwany w systemie Rasbian, który obejmuje również JIT. Będziesz musiał zbudować go ręcznie: http://labb.zafena.se/?p=630
Oczekuję, że Avian pojawi się w języku Raspbian, gdy zostanie zbudowany ze źródła SID Debiana. Avian obecnie istnieje w eksperymentalnym SID Debiana wewnątrz jvm-7-avian-jre
pakietu.
Zarówno Avian, jak i JamVM działają w połączeniu z klasami OpenJDK-7, więc można ich używać do przyspieszenia wszystkich programów uruchamiających Java, takich jak Java i Java. plik /etc/java-7-openjdk/jvm-armhf.cfg
określa, która JVM jest domyślnie używana w openjdk 7 na Rasbian.
Możesz także powiedzieć programom uruchamiającym Java indywidualnie, z którego programu JVM korzystać:
java -jamvm
javac -J-jamvm
Oracle wydało pełną wersję (nie jest już podglądem) Java 8 i Java 7 dla architektury ARM Raspberry Pi: link do Java 8 .
Możesz także użyć z wiersza poleceń:
sudo apt-get update
sudo apt-get install oracle-java8-jdk
Możliwe jest połączenie OpenJDK 7 z JVM Java JDK8, który zawiera JIT, aby uzyskać konfigurację z obsługą X11 i działaniem Swing / AWT.
Interfejs JNI, z wyjątkiem „Classpath”, wyraźnie oddziela JVM i klasy środowiska wykonawczego. Jeśli używasz Hotspot klienta (jre / lib / arm / client / libjvm.so) z podglądu JavaFX 8 w połączeniu ze skompilowanymi przez Rasbian klasami środowiska wykonawczego OpenJDK 7 Runtime i programami uruchamiającymi java (/ usr / lib / jvm / java-7- openjdk-armhf) otrzymasz następującą konfigurację i korzyści:
Ustawiać:
Pobierz jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz z 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