Introduction to JavaFX on Raspberry Pi
Upcoming SlideShare
Loading in...5
×
 

Introduction to JavaFX on Raspberry Pi

on

  • 2,827 views

 

Statistics

Views

Total Views
2,827
Views on SlideShare
2,576
Embed Views
251

Actions

Likes
2
Downloads
46
Comments
0

21 Embeds 251

https://twitter.com 199
http://helloraspberrypi.blogspot.com.es 12
http://helloraspberrypi.blogspot.com 6
http://helloraspberrypi.blogspot.hk 4
https://www.linkedin.com 4
http://plus.url.google.com 4
http://helloraspberrypi.blogspot.in 3
http://helloraspberrypi.blogspot.com.au 2
http://helloraspberrypi.blogspot.co.uk 2
http://helloraspberrypi.blogspot.pt 2
http://helloraspberrypi.blogspot.kr 2
http://www.linkedin.com 2
http://helloraspberrypi.blogspot.be 1
http://helloraspberrypi.blogspot.com.br 1
http://helloraspberrypi.blogspot.tw 1
http://helloraspberrypi.blogspot.ru 1
http://helloraspberrypi.blogspot.mx 1
http://helloraspberrypi.blogspot.gr 1
http://helloraspberrypi.blogspot.sk 1
http://helloraspberrypi.blogspot.ae 1
http://helloraspberrypi.blogspot.nl 1
More...

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduction to JavaFX on Raspberry Pi Introduction to JavaFX on Raspberry Pi Presentation Transcript

    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Introduction to JavaFX on Raspberry Pi Bruno Borges Oracle Product Manager for Latin America Java Evangelist bit.ly/javafxraspberrypij1
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 132 Bruno Borges Oracle Product Manager / Evangelist Developer, Gamer, Beer lover JavaFX / Embedded Enthusiast Twitter: @brunoborges
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. What do you need to build JavaFX apps?  JavaFX Scene Builder ● Linux supported!  Java SE 6/7/8 ● SE 8 comes with JavaFX libs as part of JRE  NetBeans 7.3.1+ Some things, and coffee
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. JavaFX Scene Builder 1.1 GA bit.ly/javafxdownload
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Raspberry Pi Configurations for JavaFX applications CPU Overclock 900~950MHz Memory split 128MB for video Framebuffer framebuffer_width=1280 framebuffer_height=720
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. CPU Overclock for JavaFX applications $ cat /proc/cpuinfo Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 697.95 … $ sudo raspi-config bit.ly/raspioverclock
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. CPU Overclock for JavaFX applications $ cat /proc/cpuinfo Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 697.95 … $ sudo raspi-config
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. CPU Overclock for JavaFX applications $ cat /proc/cpuinfo Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 697.95 … $ sudo raspi-config
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Memory Split for JavaFX applications 128mb best performance 64mb may work $ sudo raspi-config
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Memory Split for JavaFX applications 128mb best performance 64mb may work $ sudo raspi-config
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Video Framebuffer for JavaFX applications Edit /boot/config.txt Enable (uncomment) these options, with these values: framebuffer_width=1280 framebuffer_height=720
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Exiting a JavaFX Application on Raspberry.Pi Connect over SSH and kill the java process $ killall -9 java Enable the debug environment variable to enable control-C exit command $ export JAVA_DEBUG=1 $ java -cp Stopwatch.jar stopwatch.MainScreen
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Final parameters for JavaFX on Raspy Do not show virtual keyboard (optional) -Dcom.sun.javafx.isEmbedded=false Send video to the framebuffer (required!) -Djavafx.platform=eglfb
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Building Your 1st JavaFX App
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1315 Your First JavaFX App for RaspberryPi
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1316 Your First JavaFX App for RaspberryPi public class MyApplication extends Application { @Override public void start(Stage stage) throws Exception { URL fxml = getClass().getResource("MyApplication.fxml"); Parent root = FXMLLoader.load(fxml); Scene scene = new Scene(root); stage.setScene(scene); stage.setFullScreen(true); // for Desktop. Not need for Pi stage.show(); } public static void main(String[] args) { launch(args); } }
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1317  Properties // JavaFX DoubleProperty value = new SimpleDoubleProperty(0); public double getValue() { return value.get(); } public void setValue(double newValue){ value.set(newValue); } public DoubleProperty valueProperty() { return value; }
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1318  Properties // JavaFX DoubleProperty value = new SimpleDoubleProperty(0); public double getValue() { return value.get(); } public void setValue(double newValue){ value.set(newValue); } public DoubleProperty valueProperty() { return value; }
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1319  Bindings  Binding unidirecional ● bind();  Binding bi-direcional ● bindBidirectional();
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1320  Bindings  Binding unidirecional ● bind();  Binding bi-direcional ● bindBidirectional();
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1321  Bindings @FXML private Label humidityLabel; ... // HUMIDITY MONITOR HumidityMonitor humidityMon = new HumidityMonitor(...); humidityLabel.textProperty().bind(humidityMon.valueProperty()); humidityMonitor.start();
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1322  Bindings IntegerProperty number1 = new SimpleIntegerProperty(1); IntegerProperty number2 = new SimpleIntegerProperty(2); DoubleProperty number3 = new SimpleDoubleProperty(0.5); NumberBinding sum1 = number1.add(number2); NumberBinding result1 = number1 .add(number2) .multiply(number3); NumberBinding sum2 = Bindings.add(number1, number2); NumberBinding result2 = Bindings .add(number1, multiply(number2, number3));
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1323  JAX-RS 2.0 Client API Download libs from here: bit.ly/jersey-libs-javafx https://jersey.java.net/
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1324  JAX-RS 2.0 Client API import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; ... Client client = ClientBuilder.newClient();
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1325  JAX-RS 2.0 Client API String uriTemplate = "http://{host}:{port}/things"; String host = System.getProperty( "things.host", "192.168.1.101"); String port = System.getProperty( "things.port", "8080");
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1326  JAX-RS 2.0 Client API Map<String, Object> params = new HashMap<>(); params.put("host", host); params.put("port", port); UriBuilder uriBuilder = UriBuilder.fromUri(uriTemplate); Client thingsServerURI = uriBuilder.buildFromMap(params);
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1327  JAX-RS 2.0 Client API Using the things REST client String sHumidity = thingsServerURI .path("/humidity") .request() .get(String.class);
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1328  Working with Threads Using the things REST client with threads class MonitorService extends TimerTask { public void run() { String sval = thingsHumidyPath .request().get(String.class); final float humidity = new Float(sval); Platform.runLater(new Runnable() { @Override public void run() { floatValue.set(humidity); value.set(Float.toString(humidity)); } }); } }
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1329  Working with Threads Using the things REST client with threads class MonitorService extends TimerTask { public void run() { String sval = thingsHumidyPath .request().get(String.class); final float humidity = new Float(sval); Platform.runLater(new Runnable() { @Override public void run() { this.floatValue.set(humidity); this.value.set(Float.toString(humidity)); } }); } }
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1330  Back to the Bindings @FXML private Label humidityLabel; ... // HUMIDITY MONITOR HumidityMonitor humidityMon = new HumidityMonitor(...); humidityLabel.textProperty().bind(humidityMon.valueProperty()); humidityMonitor.start();
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1331  Working with Threads Using the things REST client with threads Start the Monitoring service Timer timer = new Timer(true); timer.schedule(new MonitorService(), 0, DELAY);
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. QUESTIONS?
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1333 Thanks! @brunoborges
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved. The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
    • Copyright © 2012, Oracle and/or its affiliates. All rights reserved.