二月 5, 2013

三步实现在 Raspberry Pi 上运行 JavaFX 应用

Written by

英文原文:JavaFX on Raspberry Pi – 3 Easy Steps

参与翻译者(4人)Tom LinGrisson寂寞沙洲ksc

 期待已久的Raspberry Pi JavaFX的开发者预览版终于出来了。这是一个很棒的平台对做小的嵌入式项目,低成本的计算机系统的教学和非常有趣爱好者来说。它的成本只有35美元的B型版本,拥有512MB RAM,700MHz的ARM处理器和I / O的HDMI,Composite,音频,以太网,和2 USB端口。

那么,你可以用 JavaFX 在一个 Raspberry Pi 上做什么呢?一个很棒的例子是,我们为 Devoxx 制作了一个会议日程表运行在数字标牌上,这个会议日程表通过一个飞行在太空的宇宙飞船动画显示出来:

更新:如果你不信任运行在 Pi 的 Java 应用程序的性能,那么看看 Rich Bair 在网站 fxexperience.com 上发布的文章:http://fxexperience.com/2012/12/javafx-on-raspberry-pi/

只需要简单的三个步骤既可让你的Pi跑上JavaFx, 如果你决定开始动手的话。

1. 安装Linux到你的Raspberry Pi上
2. 下载并拷贝Java/JavaFX 8到你的Pi上
3. 部署和运行JavaFX 应用在你的Pi上

当然,这里的前提是你已经入手了Raspberry Pi. 如果你还不知道哪里可以买到Raspberry Pi, 或怎么启动它的话. 我推荐你去看看Raspberry Pi的官网. Raspberry Pi Site

第一步 – 在你的 Raspberry Pi 上安装 Linux

最新发布的 Java 8 支持硬件浮点运算了,这是一件好事,因为这将为您带来更高的性能,同时其推荐的 Raspberry Pi 编译器也是用硬件进行浮点运算了。现在可以抛弃那些 soft, sofrfp 等等了,因为这些已经不再兼容支持硬件浮点运算的 JVM 了。

注:为什么原来一直为浮点运算而烦恼呢?主要是以前小的嵌入式系统芯片都不提供用于浮点运算模块以节省成本(如 ARM Cortex M0-M3 等)。幸运的是,用于支持 Raspberry Pi 运行的 ARMv6 芯片已经提供真正的硬件浮点运算了。

要在你的SD卡上部署Linux, 你首先要有一台具有SD card 读写能力的Windows, Mac 或者linux 机器。你所需要的安装版本是Raspbian Wheezy hard float , 这也是Respberry Pi上推荐安装版本。 下载地址是 http://www.raspberrypi.org/downloads

有好几种方法可以烧录镜像文件到SD card上,具体说明在这里,但基本上可以归类为:

windows: 使用 Win32DiskImager
Mac: 使用 RPi-sd Card Builder
Linux: 使用dd命令

一旦搞好你的 SD 卡,那就把它取出并连接到你的显示器上,并插上一个好点的 usb 电源(5v 700mA 或更高)。

注意:顺序很重要! – 如果你在给你的 Pi 接通电源前没有连接好HDMI显示器。那结果可能会是,虽然指示灯在闪烁,但你却只得到了一个空白的屏幕,这时你应该尝试重新启动的你的PI(拔下并重新插入它)。

这时,你的 Pi 应该已经启动起来了,并在屏幕上显示出你的 Raspberry Pi 的配置。这里有些参数你可能需要考虑调整,包括:

  • CPU/GPU 内存分配 – 要给予  GPU 最少 128MB 的内存,以使得一些对图形要求较高的应用能跑得更流畅 (这点对 JavaFX 很重要!)
  • 更改区域设置/键盘/时区 – 这些默认设置是英国的,因此每个非英国的人都应该修改这些设置,否则在试图输入标点符号时,你会骂你的键盘的!
  • Overscan – 如果你的显示器在显示时有黑框,那么你把这个选项设为关闭,那么你就可以看到全屏了。
  • 扩大根文件系统 – 这点不需要重启就可以重新指定你的卡的大小以便使用你的卡的全部空间(默认的映像文件只有 2GB 的根分区)。高度推荐,但如果在一个较大的卡上,完成这个操作可能需要花费点时间。
  • SSH – 如果你想要通过网络来访问你的 Pi,那么就把这个选项打开 (这是除了重启之外的、关闭空闲 JavaFX 进程的唯一方法)

在  JavaFX Raspberry Pi 的官方文档 里,他们也推荐通过修改配置文件  (/boot/config.txt) 来设置视频缓存区为 720p,把配置文件里下面两行前的注释符号去掉即可:

framebuffer_width=1280
framebuffer_height=720

当然这是可选的,但如果让 Pi 的输出分辨率低些,你肯定可以获得更好的性能。但在你明白这样改动会带来什么后果之前,不要修改这个配置。(同时,如果要改的话,你必须先通过 ssh 远程登录进 Pi 中,以防改动后显示不正常的话,你还可以改回来)。更多相关 HDMI 显示的问题,可以到 这里 来查询文档。

第2步 – 下载并复制 Java/JavaFX 8 到你的 Pi

你可以从下面地址中下载兼容的 Java/JavaFX 8 到你的 Raspberry Pi 上:

http://jdk8.java.net/fxarmpreview

如果你的 Pi 是通过以太网连接到网络的话,你可以直接下载到你的设备中。否则的话,你可以通过 sftp(通过 ssh)或 sneakernet 拷贝进去。

下载下来后,你就可以解压到你指定的路径下:

sudo tar -zxvf file_name -C /opt

然后,用以下命令运行:

sudo /opt/jdk1.8.0/bin/java -version

第 3 步– 在你的 Pi 上配置和运行 JavaFX 应用

几乎所有的 JavaFX 桌面应用都可以不经修改,仅需简单复制进去就可以在你的 Pi 上运行了。(有两种应用例外,这两种应用是为 WebView 或者 MediaView 开发的,当前的设备还没实现些应用的兼容)

一个更好的开始构建你的 Pi 的 JavaFX 应用的方法是,先使用 Scene Builder 可视化设计工具来设计你的用户界面,并把设计好的用户界面放到你的应用中,然后再配置到你的 Pi 上。我昨晚就在 Davis 的 Linux 用户组 (LUGOD) 上,在其他非常精明的与会者 的帮助下完成了这个工作(我还跟其他人学会了一些 linux 的命令技巧)。

我提交了一个花了我们15分钟的应用到 GitHub 上,你可以到下面的地址中下下来试试:

https://github.com/steveonjava/LUGOD-Pi-Test

要在你的 Pi 上运行这个例子,先用你喜欢的 IDE 构建好源码(或者直接在命令行里构建)并发布 Jar 包文件。然后把 jar 复制到你的 Pi 中,并用类似下面的命令来运行它:

sudo /opt/jdk1.8.0/bin/java -Djavafx.platform=eglfb \
-cp /opt/jdk1.8.0/jre/lib/jfxrt.jar:LUGODTest.jar lugodtest.LUGODTest

下图是我们在 LUGOD 会议上展出的运行在 Raspberry Pi 的 Scene Builder 工程界面和运行输出结果。

然而,让你感受最深的,还是你自己开发的应用。试着发布一个你自己的 JavaFX 应用,然后在后面的评论中,请留下你发布成功的应用的链接。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们

Category : Linux/Unix嵌入式开发

Tags :

发表评论

电子邮件地址不会被公开。

Proudly powered by WordPress and Sweet Tech Theme