O OpenJDK compila e roda com êxito no Pi, mas a única versão que encontrei é uma sem JIT. A Oracle fornece esse JDK para outras versões do ARM, mas não o ARMv6. Existe alguma maneira de colocar em funcionamento essa versão do JDK?
O OpenJDK compila e roda com êxito no Pi, mas a única versão que encontrei é uma sem JIT. A Oracle fornece esse JDK para outras versões do ARM, mas não o ARMv6. Existe alguma maneira de colocar em funcionamento essa versão do JDK?
Respostas:
A Oracle lançou agora (a partir do Java 7u6) um JDK com JIT que funciona no Pi com suporte completo ao AWT / Swing. Ele também suporta JVMTI (cacau tem apenas suporte parcial.) Comunicado de imprensa aqui .
Eu verifiquei que ele funciona com o Greenfoot e fornece uma enorme aceleração em comparação com os gostos de uma compilação OpenJDK simples (sem JIT).
No momento da escrita, ele não suporta ponto flutuante rígido e, portanto, não funciona com distribuições como o Raspbian que usam apenas flutuador rígido - no entanto, isso está planejado para uma versão futura.
ATUALIZAÇÃO: Como Darren apontou, uma versão hard float foi lançada para o ARM na forma de uma versão prévia do JDK8, você pode encontrá-la aqui .
ATUALIZAÇÃO 2: O float rígido agora é suportado no JDK7.
O pacote icedtea-6-jre-cacao contém um compilador JIT e, segundo consta, funciona no RasPi .
Eu não tentei eu mesmo.
A Oracle lançou agora uma visualização do desenvolvedor do Java JDK8 for ARM, que inclui especificamente suporte para Raspbian no Pi. Funciona e eu achei que era cerca de 20 vezes mais rápido que o OpenJDK para certos cálculos intensivos de ponto flutuante. http://jdk8.java.net/fxarmpreview/
No Rasbian, você pode usar o JamVM que inclui um "JIT de cópia de código"
apt-get install icedtea-7-jre-jamvm
Atualmente, o JamVM é a JVM mais rápida e estável que inclui um JIT no Rasbian.
O Avian também é suportado no Rasbian, que também inclui um JIT. Você terá que construí-lo manualmente: http://labb.zafena.se/?p=630
Espero que o Avian apareça no Raspbian quando ele tiver sido construído a partir da fonte SID do Debian. Atualmente, as aves existem no SID experimental do Debian dentro do jvm-7-avian-jre
pacote.
O Avian e o JamVM trabalham em conjunto com as classes OpenJDK-7, para que você possa usá-los para acelerar todos os lançadores java, como javac e java. o arquivo /etc/java-7-openjdk/jvm-armhf.cfg
determina qual JVM é usada por padrão no openjdk 7 no Rasbian.
Você também pode dizer aos lançadores java individualmente qual jvm usar:
java -jamvm
javac -J-jamvm
A Oracle lançou a versão completa (sem pré-visualização) do Java 8 e Java 7 para a arquitetura ARM do Raspberry Pi: link para o Java 8 .
Você também pode usar na linha de comando:
sudo apt-get update
sudo apt-get install oracle-java8-jdk
É possível combinar o OpenJDK 7 com a JVM do Java JDK8 que inclui um JIT para obter uma configuração com suporte ao X11 e funcionamento do Swing / AWT.
A interface JNI, com a exceção "Classpath", separa claramente a JVM e as classes do ambiente de tempo de execução. Se você usar o Hotspot do cliente (jre / lib / arm / client / libjvm.so) da visualização do JavaFX 8 em combinação com as classes de ambiente OpenJDK 7 Runtime compiladas pelo Rasbian e os lançadores de java (/ usr / lib / jvm / java-7- openjdk-armhf), você obterá as seguintes configurações e benefícios:
Configuração:
Faça o download do jdk-8-e-b36e-linux-arm-hflt-29_nov_2012.tar.gz em 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