Oracle 上周发布了针对ARM 处理器的Java 8 开发者预览版。这个版本可以在 JDK 8 (with JavaFX) for ARM 预览版下载地址获得,它特别针对在 Raspberry Pi 设备上运行 JavaFX 做了剪裁。
尽管这还不是完全优化后的最终用户版本,但是它表现了 Java 8 当前在 Oracle 的商业 ARM 版本的状态。作为开发者预览版,它的许可禁止任何商业化使用,但是期望允许 Raspberry Pi 社区对其做出贡献。然而,Oracle 当前没有计划把它们的 ARM 接口的任何部分开源,所以很让人怀疑的是,为什么开发者会为 Oracle 贡献测试时间和修复补丁。另一方面,这个预览版让开发者可以探索构建运行在 Raspberry Pi 和 Java 上的解决方案的选择。
想要安装这个版本,Raspberry Pi 需要运行 Raspbian Wheezy 的最新版本,它会支持使用 Raspberry Pi 的浮点处理器。在下载并解压到所需的目标目录中后,程序就可以完整运行了。Oracle 鼓励开发者试验运行 JavaFX 应用程序。想要做到这一点,需要将下面的属性作为命令行参数传递进来。
-Djavafx.platform=eglfb
这个版本的版本信息如下:
pi@raspberrypi ~ $ /opt/jdk1.8.0/bin/java -version java version "1.8.0-ea" Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e) Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode)
正如这里所清晰声明的,包默认是“HotSpot 客户端虚拟机”。强制使其成为“服务器”会导致以下错误:
pi@raspberrypi ~ $ /opt/jdk1.8.0/bin/java -server -version Error occurred during initialization of VM Server VM is only supported on ARMv7+ VFP
开发者预览版中一个值得注意的缺陷是,Java 只能使用 Linux 所检测到的第一个鼠标和键盘。在 Raspberry Pi 论坛中相应的帖子中已经得到Java 架构师Daniel Blaukopf 的确认,这个问题会在下一个版本中修复。
有些人已经对于Java 在Raspberry Pi 上的表现做了评测。一次简单的主要评测显示HotSpot 要比本地代码快,所以我们使用 Linpack Benchmark 做了自己的测试,它特别是针对浮点运算的。显然,它显示出来 Raspberry Pi 的速度和一般的最终用户或者服务器的硬件没有什么可比性。
在 i7 920 上 LinPack Java Benchmark 得到的结果是:
Mflop/s: 639.949 Time: 0.13 secs (0.131 sec) Norm Res: 5.68 Precision: 2.220446049250313E-16
而在 Raspberry Pi 上得到的是:
Mflop/s: 16.461 Time: 5.09 secs (5.093 sec) Norm Res: 5.68 Precision: 2.220446049250313E-16
为了比较 HotSpot 和本地代码,以下是同样评测的 C 语言版本(像 ELinux Pi Performance Wiki 描述的那样编译)的结果:
Reps Time(s) DGEFA DGESL OVERHEAD KFLOPS ---------------------------------------------------- 1 0.81 97.53% 0.00% 2.47% 26687.764
但是 Raspberry Pi 的性能并不是它流行的主要原因。正如 Holly Cummins 在 Devoxx 2012 的简短发言中演示的,她在帽子中运行了一台应用程序服务器,它的目标是在很小型的标准计算及硬件上运行范围广泛的应用程序。对于 Java on Raspberry Pi 非常有用的附件是 Pi4J 项目,它为访问 GPIO 针脚提供了 Java 程序库。
评论