Czy jest dostępny JDK z kompilatorem JIT?

24

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?

berry120
źródło
Jaka jest dystrybucja?
Jivings
Debian ściska się obecnie, choć nie jestem zbytnio zaniepokojony zmianą, jeśli to pomogłoby w sytuacji!
berry120
Czy nie możesz zainstalować wersji OpenJDK w oficjalnym repozytorium?
Jivings
@Jivings Tak, właśnie tego obecnie używam. Ale ta wersja nie ma JIT (stąd pytanie!)
berry120
Przepraszam :) Nie mam pojęcia, dlaczego to nie ma JIT. Wydaje się to dziwną decyzją, czy znalazłeś jakieś uzasadnienie?
Jivings

Odpowiedzi:

15

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.

berry120
źródło
Jakie dystrybucje obsługuje?
Zoot,
2
@Zoot Używałem go z Debianem squeeze fine - powinien obsługiwać każdą dystrybucję Linuksa, która może korzystać z softfloat.
berry120
6

Pakiet icedtea-6-jre-cacao zawiera kompilator JIT i podobno działa na RasPi .

Sam tego nie próbowałem.

finnw
źródło
Czy to jednak nie tylko środowisko JRE, a nie JDK?
berry120
@ berry120: Potrzebny jest JIT. Nie powinno mieć znaczenia, czy JIT był używany podczas kompilacji programu.
finnw
Ach, dobra racja. Spróbuje :-)
berry120
1
Wydaje się, że JIT kakao nie działa poprawnie, przynajmniej na Raspbian, i wydaje się, że nie ma łatwego rozwiązania.
Darren Wilkinson
4

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/

Darren Wilkinson
źródło
Pobiłeś mnie do tego! Właśnie miałem to opublikować :-)
berry120
3

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-jrepakietu.

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.cfgokreś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
Xerxes Rånby
źródło
2

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
Płyn symulujący
źródło
1

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:

  • JIT klienta Hotspot (z podglądu JavaFX 8)
  • Obsługa Swing / AWT (przy użyciu klas OpenJDK z pakietu openjdk-7-jre)
  • wsparcie puls-audio (IcedTea puls-java z pakietu openjdk-7-jre i openjdk-7-jre-headless)
  • obsługa apletów przeglądarki internetowej za pomocą icedtea-web (z pakietu wtyczek icedtea-7)
  • program uruchamiający javaws JNLP korzystający z icedtea-web (z pakietu wtyczek icedtea-7)
  • autodetekcja JNI armhf przez program uruchamiający Java OpenJDK (program uruchamiający Java OpenJDK dodaje ścieżkę biblioteki systemowej specyficznej dla armhf do pliku java.library.path). Włączając ścieżkę / usr / lib / arm-linux-gnueabihf do java.library.path pozwala bibliotekom Java, takim jak biblioteka GPIO Pi4J i JogAmp gluegen-rt JOGL / JOAL, poprawnie wykrywać, że działa na systemie linux armhf a następnie załaduj implementację JNI armhf zamiast implementacji JNI armel.
  • Obsługa przetwarzania i drukowania obrazów w aplikacjach serwerowych JavaEE, takich jak glassfish i tomcat, za pomocą pełnych klas OpenJDK.

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
Xranby
źródło