javafx on desktop, mobile, and embedded - oracle · javafx on desktop, mobile, and embedded stephen...

45
JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager JavaOne Community Chair

Upload: buinga

Post on 12-May-2018

237 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JavaFX on Desktop, Mobile, and EmbeddedStephen Chin (@steveonjava)Lead Java Community ManagerJavaOne Community Chair

Page 2: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Java Community Management

314 Java User Groups 9M+ Java

Developers

150+ 150+ Java Champions

50+ JUG groups contributing to JCP

2

Community

Page 3: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

• Cross-platform Animation, Video, Charting

• Integrate Java, JavaScript, and HTML5 in the same application

• New graphics stack takes advantage of hardware acceleration for 2D and 3D applications

• Bidirectional integration with Swing applications using JFXPanel and SwingNode

Immersive Application Experience

JavaFX Platform

Page 4: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Architecture of JavaFX

Java Virtual Machine

Java2D Open GL D3D

Prism GlassWinTk

MediaEngine

WebEngine

JavaFX Public API

Quantum Toolkit

Page 5: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

New Features in JavaFX 8

Page 6: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

DatePicker

• Allows selection of dates and ranges

• Can use custom formats and calendars

• Supports Cascading Style Sheets

Page 7: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

TreeTableView

• Combines a TreeView and a TableView

• Optional menu for hiding and showing columns

• Root can be hidden• Supports multiple selection• Supports CSS

Page 8: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

New Modena UI Theme

Page 9: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair
Page 10: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

HTML5 Features

• Canvas and SVG• Media playback• Form controls• History maintenance• Interactive element tags• DOM• Web workers*• Web sockets*• Web fonts*

* = new in HTML5

Page 11: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Build Applications VisuallyGluon Scene Builder 8

Page 12: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JAVAFX 3D

Page 13: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Mesh Geometry (3D Shapes)

■ Predefined shapes■ Box■ Cylinder■ Sphere

■ User-defined shapes■ Using TriangleMesh / MeshView

13

https://wikis.oracle.com/display/OpenJDK/SphereAndBox.java

Page 14: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

UV Mapping Textures to Shapes

14

Tip: A texture is a 2D image to be mapped on a 3D surface

Source: http://en.wikipedia.org/wiki/File:UVMapping.png

Page 15: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

3D Lights

■ Lights are nodes in the scene graph■ PointLight■ AmbientLight

■ Default light provided if no active lights

15

https://wikis.oracle.com/display/OpenJDK/3D+Features

Page 16: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JDK 8 Update Releases

16

Page 17: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JDK 8u40• Released in March 2015• Added a number of important missing features:

– Accessibility (Windows and Mac)– New Controls

• Spinner• Filtered Text• Dialogs (Alerts, TextInputDialog, ChoiceDialog)

– LCD Text on Canvas– 3D User-Defined Normals

• Several bugs fixed in controls, charts, layout, etc.

17

Page 18: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Accessibility• A full-featured minimal API and implementation• Supports native accessibility (VoiceOver, Narrator)• All built-in controls and charts are accessible• Developers can make their own controls accessible

18

Page 19: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Dialogs• Finally built-in to JavaFX!• Simple Alert API for prompting users• More advanced Dialog / DialogPane for

total customization• OS-specific button ordering

19

Page 20: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JDK 8u60• Released in August 2015• Focus was on bug fixing and stabilization of the platform• Small number of new features:

– Updated to newer version of WebKit– Added minimal High-DPI support on Windows

• Enabled by default when Windows UI scale is >= 150%• No API added to provide application control (stay tuned)

20

Page 21: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Coming up in JavaFX for JDK 9

21

Page 22: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Jigsaw Modularity• Jigsaw Modularity is the primary feature for JDK 9

– JEP 200: The Modular JDK (Umbrella)• JEP 201: Modular Source Code• JEP 220: Modular Run-Time Images• JEP 260: Encapsulate Most Internal APIs• JEP 261: Module System

• Modularizing JavaFX is our main goal for JDK 9!– JDK-8092093: Modularization support for JavaFX (Umbrella)

Page 23: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Jigsaw Modularity: JavaFX Modules• JavaFX module graph for runtime (JRE) modules:

23

javafx.graphics

javafx.controls

javafx.base

javafx.mediajavafx.fxml javafx.swing

javafx.web

Page 24: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JEP 253• JDK 9 with Jigsaw modularity is a big game changer:

– Up until JDK 9, developers could (ab)use API in com.sun.* packages.– JDK 9 enforces boundaries - com.sun.* becomes unavailable at compile time

• Many (if not most) JavaFX apps and libraries will fail to compile / execute under JDK 9.

• We asked the community for JDeps output• In summary:

– Almost all open source apps and most customer apps break!

Page 25: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JEP 253 :: Current Split

Control

Behavior

Skin

Private Implementation(com.sun.javafx.scene.control.*)

Public API(javafx.scene.control)

Page 26: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JEP 253 :: Future Split

Control

Behavior

Skin

Public API(javafx.scene.control) Private Implementation

(com.sun.javafx.scene.control.*)

Page 27: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JEP 253 :: Summary• Free side-effect of JEP 253:

– Move closer to providing a full API for third-party UI controls– This has been a feature we’ve been wanting for a very long time– We now have all controls and skins available as public API

– Next target is to make behaviors public API too• Outside scope of JDK 9

Page 28: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

High DPI• In JDK 9 we will add:

– High-DPI support for Linux– API to set the render scale and the threshold for

enabling High-DPI– Support for “snap to pixel” even when using non-integer

render scale

Page 29: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Nested Event Loop• Sometimes an application wants to process events without returning from

the current flow of control• JavaFX internally uses nested event loops in some cases:

– Calling showAndWait on Stage or Dialog– For displaying printer dialogs

• New API on Platform:– public static Object enterNestedEventLoop(Object key);– public static void exitNestedEventLoop(Object key, Object rval);– public static boolean isNestedLoopRunning();

Page 30: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Pulse Listener• Some applications want a callback during the pulse for each frame

– Using AnimationTimer provides a similar capability, but runs before CSS and layout (and forces a continuous pulse)

• New API on Scene:– public final void addScenePulseListener(Runnable r);

• This will add a listener (Runnable) that is called every frame– Called after CSS and layout have been done– Called before rendering– Any changes to the scene graph will be rendered this frame, but will not have CSS or

layout applied until next frame

Page 31: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Platform Startup• New API on Platform:

– public static void startup(Runnable);

• Starts the JavaFX runtime and then calls the run method of the Runnable on the JavaFX Application Thread– The startup method returns before the Runnable is run

• Must not be called if the JavaFX runtime has already been started– Cannot be used to restart the JavaFX runtime after it has terminated

Page 32: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Other JDK 9 Enhancements• JEP 257: Update to Newer Version of GStreamer

– Requires newer version of GLIB so some older Linux distroswill no longer work

• Updated Version of WebKit– We will do this at least one time in JDK 9, and maybe twice– Goal: pick up bug fixes and performance improvements in a more timely fashion

Page 33: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JavaFX on Mobile and Embedded

Page 34: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

JavaFX on iOS/Androidhttp://gluonhq.com

Page 35: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Gluon: Technology Stack

35

Gluon Mobile

Gluon Cloud

Page 36: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Open Source Efforthttps://bitbucket.org/javafxports/android/wiki/Home

Page 37: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

2048 Game in the Play Storehttp://jperedadnr.blogspot.com.es/2015/03/javafx-on-mobile-dream-come-true.html

Page 38: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

=

Have Java With Your DessertRaspberry Pi

Page 39: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

http://elinux.org/File:Raspi-Model-AB-Mono-2-699x1024.png

Page 40: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Embedded Controls Theme

Page 41: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Virtual Keyboard

Page 42: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

42

Page 43: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Raspberry Pi with Java

43

raspberrypiwithjava.com

Page 44: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Stephen Chintweet: @steveonjavablog: http://steveonjava.com

nighthacking.com

Real GeeksLive Hacking

NightHacking Tour

Page 45: javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen Chin (@steveonjava) Lead Java Community Manager. JavaOne Community Chair

Safe Harbor StatementThe 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.

45