You can run JavaFX on the Raspberry Pi, an inexpensive ARM development board. This page describes how to set up your board to run JavaFX.

Prerequisites

You will need:

Touch screens known to work with JavaFX are:

In general a touch screen that is recognized by Linux and generates events EV_KEY, EV_ABS and EV_SYN will work with JavaFX.

Raspberry Pi OS

The configuration used by Oracle for testing is:

Note that you need the hard-float Raspbian image. If you use the soft-float Debian "wheezy" image you will not be able to run JDK 8 (or any other software compiled for ARM hard float).

Raspbian setup instructions are at http://elinux.org/RPi_Easy_SD_Card_Setup.

When you first power up the board with Raspbian you will get the raspi-config tool. There are a few things to note here:

If you are connecting to your Pi over the network, you can save some time by setting a host name for it in raspi-config, then installing the avahi-daemon package (sudo apt-get install avahi-daemon from the command line). You'll then be able to reach the Pi from a Linux PC with the command: ssh pi@<host name>.local

If the Raspberry Pi isn't detecting the screen size correctly, you might need to tweak video mode settings and maybe tell the Pi to ignore the capabilities reported by the display.

Running a JDK Early Access build on the Raspberry Pi

You can get a early access build for ARM hard float from http://jdk8.java.net/download.html. This bundle should be unpacked on the Pi. For example,

sudo tar zxvf jdk-8-ea-b97-linux-arm-vfp-hflt-03_jul_2013.tar.gz -C /opt

To check that the JDK is installed correctly, run:

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

This should show that you are running an EA build of JDK 8. If the VM won't even start, you might be running a hard-float VM on a soft-float system.

You can use the samples bundle from https://jdk8.java.net/download.html on the Raspberry Pi. Not all the samples will work on the Pi; here are some that will:

You can run these applications without any additional parameters. For example,

/opt/jdk1.8.0/bin/java -cp Stopwatch.jar stopwatch.MainScreen

Note that the default configuration of JavaFX on the Raspberry Pi does not use X11. Instead JavaFX works directly with the display framebuffer and input devices. So you should not have the X11 desktop running when starting JavaFX.

JDK 8 EA builds for the Raspberry Pi include full support for hardware accelerated graphics, with everything from the base, graphics, controls and FXML modules. Media and Web modules are not included.

Stopping an application

JavaFX on the Raspberry Pi takes over the whole screen and captures all Linux input devices. While this will generally be the behavior you want in a deployed application, it is less convenient for development because you can't stop an application using control-C unless the JavaFX application has a KeyEvent handler that listens for control-C and calls Platform.exit(). There's nothing unusual about this - many Linux fullscreen console applications have the same behavior - but it is often useful to have a quick way to end an an application during development without changing the application code.

There are two ways to run applications with the ability to be terminated by control-C:

JAVAFX_DEBUG=1 /opt/jdk1.8.0/bin/java -cp Stopwatch.jar stopwatch.MainScreen

The JAVAFX_DEBUG environment variable is only for use in development and you shouldn't rely on it for deployment of your application. In the future this functionality might be specified different or be removed.