OpenJDK compila ed esegue correttamente il Pi, ma l'unica versione che ho trovato è una senza JIT. Oracle fornisce tale JDK per altre versioni di ARM, ma non ARMv6. C'è un modo per ottenere una versione del JDK attiva e funzionante nel frattempo?
OpenJDK compila ed esegue correttamente il Pi, ma l'unica versione che ho trovato è una senza JIT. Oracle fornisce tale JDK per altre versioni di ARM, ma non ARMv6. C'è un modo per ottenere una versione del JDK attiva e funzionante nel frattempo?
Risposte:
Oracle ha ora rilasciato (a partire da Java 7u6) un JDK con JIT che funziona sul Pi con pieno supporto AWT / Swing. Supporta anche JVMTI (il cacao ha solo un supporto parziale.) Comunicato stampa qui .
Ho verificato che funziona con Greenfoot e fornisce un enorme aumento di velocità rispetto a quelli simili a una build OpenJDK semplice (non JIT).
Al momento della stesura di questo documento non supporta il punto in virgola mobile e quindi non funzionerà con distribuzioni come Raspbian che utilizzano solo il float, ma è previsto per una versione futura.
AGGIORNAMENTO: Come ha sottolineato Darren, una versione float è stata rilasciata per ARM sotto forma di una versione di anteprima JDK8, la puoi trovare qui .
AGGIORNAMENTO 2: il float è ora supportato in JDK7.
Il icedtea-6-jre-cacao contiene un compilatore JIT e, a quanto si dice, funziona su RasPi .
Non l'ho provato da solo.
Oracle ha ora rilasciato un'anteprima per sviluppatori di Java JDK8 per ARM che include specificamente il supporto per Raspbian su float per Pi. Funziona e l'ho trovato circa 20 volte più veloce di OpenJDK per alcuni calcoli intensivi in virgola mobile. http://jdk8.java.net/fxarmpreview/
Su Rasbian puoi usare JamVM che include un "code-copying-JIT"
apt-get install icedtea-7-jre-jamvm
JamVM è attualmente la JVM più veloce e stabile che include una JIT su Rasbian.
Avian è supportato anche su Rasbian che include anche una JIT. Dovrai costruirlo manualmente: http://labb.zafena.se/?p=630
Mi aspetto che Avian appaia in Raspbian quando è stato creato da sorgenti Debian SID. Avian attualmente esiste in Debian SID sperimentale all'interno del jvm-7-avian-jre
pacchetto.
Sia Avian che JamVM funzionano in combinazione con le classi OpenJDK-7, quindi puoi usarle entrambe per accelerare tutti i lanciatori Java come Java e Java. il file/etc/java-7-openjdk/jvm-armhf.cfg
determina quale JVM viene utilizzata per impostazione predefinita all'interno di openjdk 7 su Rasbian.
Puoi anche dire ai lanciatori Java singolarmente quale jvm usare:
java -jamvm
javac -J-jamvm
Oracle ha rilasciato la versione completa (non più anteprima) di Java 8 e Java 7 per l'architettura ARM di Raspberry Pi: collegamento a Java 8 .
Puoi anche usare dalla riga di comando:
sudo apt-get update
sudo apt-get install oracle-java8-jdk
È possibile combinare OpenJDK 7 con JVM da Java JDK8 che include un JIT per ottenere una configurazione con X11 supportato e Swing / AWT funzionante.
L'interfaccia JNI, con l'eccezione "Classpath", separa chiaramente le classi di ambiente JVM e runtime. Se si utilizza l'hotspot client (jre / lib / arm / client / libjvm.so) dall'anteprima di JavaFX 8 in combinazione con le classi di ambiente Runtime OpenJDK 7 compilate Rasbian e i lanciatori Java (/ usr / lib / jvm / java-7- openjdk-armhf) otterrai le seguenti impostazioni e vantaggi:
Impostare:
Scarica jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz da 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