#1 楼
Oracle现在已经发布了(从Java 7u6开始)带有JIT的JDK,该JDK可在具有完全AWT / Swing支持的Pi上运行。它还支持JVMTI(可可豆仅部分支持。)新闻稿在这里。我已经验证了它可以与Greenfoot一起使用,并且与普通(非JIT)的同类产品相比提供了巨大的提速。 OpenJDK构建。在撰写本文时,它不支持硬浮点,因此不适用于仅使用硬浮点的Raspbian等发行版-但是计划在将来的发行版中使用。
UPDATE:正如Darren所指出的,现在已经以JDK8预览版本的形式为ARM发布了一个硬浮点版本。您可以在这里找到它。
UPDATE 2 :JDK7现在支持硬浮点。
评论
它支持哪些发行版?
–动物园
2012年8月16日19:54
@Zoot我已经将它与Debian紧密结合使用-它应该支持任何可以使用softfloat的Linux发行版。
– berry120
2012年8月16日在22:59
#2 楼
icedtea-6-jre-cacao软件包包含一个JIT编译器,并且据说可以在RasPi上使用。我自己还没有尝试过。
评论
不仅是JRE,还不是JDK吗?
– berry120
2012年6月14日23:16
@ berry120:需要在JRE中进行JIT。编译程序时是否正在使用JIT无关紧要。
– Finnw
2012年6月14日23:18
啊,好点。将尝试一下:-)
– berry120
2012年6月14日23:18
可可JIT似乎无法正常工作,至少在Raspbian上无法正常工作,而且似乎没有容易解决的方法。
–达伦·威尔金森(Darren Wilkinson)
2012年7月24日在19:18
#3 楼
甲骨文现在已经发布了Java JDK8 for ARM的开发人员预览版,该预览版特别包括对Pi上的硬浮动Raspbian的支持。它有效,并且我发现对于某些浮点密集型计算,它的速度比OpenJDK快20倍。 http://jdk8.java.net/fxarmpreview/评论
你打败我了!我正要发布:-)
– berry120
2012年12月20日下午13:51
#4 楼
在Rasbian上,您可以使用包含“代码复制JIT”的JamVMapt-get install icedtea-7-jre-jamvm
JamVM是目前最快且最稳定的JVM,在Rasbian上包含JIT。
还包含JIT的Rasbian也支持Avian。
您将必须手动构建它:http://labb.zafena.se/?p=630
我希望从Debian SID源构建的Avian能够出现在Raspbian中。 Avian目前存在于
jvm-7-avian-jre
软件包中的Debian SID实验版中。Avian和JamVM都可以与OpenJDK-7类结合使用,因此您可以同时使用它们来加速所有Java启动器,例如javac和java 。
文件
/etc/java-7-openjdk/jvm-armhf.cfg
确定Rasbian上的openjdk 7默认使用哪个JVM。您还可以分别告诉Java启动器要使用哪个jvm:
java -jamvm
javac -J-jamvm
#5 楼
Oracle为Raspberry Pi的ARM体系结构发布了Java 8和Java 7的完整版本(不再预览):链接到Java8。也可以从命令行使用:
sudo apt-get update
sudo apt-get install oracle-java8-jdk
#6 楼
可以将OpenJDK 7与Java JDK8中的JVM结合在一起,该Java JDK8包含一个JIT,以获得支持X11且Swing / AWT工作的设置。JNI接口(带有“ Classpath”异常)明显分开JVM和运行时环境类。如果将JavaFX 8预览中的客户端热点(jre / lib / arm / client / libjvm.so)与Rasbian编译的OpenJDK 7 Runtime环境类和Java启动器(/ usr / lib / jvm / java-7- openjdk-armhf),您将获得以下设置和好处:
热点客户端JIT(来自JavaFX 8预览版)
Swing / AWT支持(使用来自的OpenJDK类openjdk-7-jre软件包)
脉冲音频支持(来自openjdk-7-jre和openjdk-7-jre-headless软件包的IcedTea pulse-java)
使用icedtea-web的网络浏览器小程序支持(来自icedtea-7-plugin包)
一个使用icedtea-web的JNLP javaws启动器(来自icedtea-7-plugin包)
OpenJDK Java启动器对Armhf JNI的自动检测(OpenJDK Java启动器添加了armhf特定的系统库路径到java.library.path中)。通过将/ usr / lib / arm-linux-gnueabihf路径包含到java.library.path中,可以使Java库(例如Pi4J GPIO库和JogAmp gumgen-rt JOGL / JOAL)正确检测它是否在armhf linux系统上运行然后加载armhf JNI实现而不是armel JNI实现。
通过使用headfull OpenJDK类在JavaEE服务器应用程序(例如glassfish和tomcat)中提供图像处理和打印支持。
设置:
从
http://jdk8.java.net/fxarmpreview/index.html下载jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz br />
# 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
评论
什么是发行版?Debian目前处于紧缩状态,尽管我对改变是否对情况有所帮助并没有太过着迷!
不能在官方仓库中安装OpenJDK版本吗?
@Jivings是的,这就是我目前正在使用的。但是该版本没有JIT(因此出现了问题!)
@Jivings如果我不得不猜测,创建一个JIT并不是一件容易的事,因为针对每个平台/体系结构的优化可能有所不同。但这只是一个猜测:-)