Java 8 for Raspberry Pi 开发者预览版

  • Fabian Lange
  • 侯伯薇

2012 年 12 月 29 日

话题:Java语言 & 开发

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 程序库。

查看英文原文:Java 8 for Raspberry Pi Developer Preview
Java语言 & 开发