javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen...
Transcript of javafx On Desktop, Mobile, And Embedded - Oracle · JavaFX on Desktop, Mobile, and Embedded Stephen...
![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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/1.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/2.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/3.jpg)
• 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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/4.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/5.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/6.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/7.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/8.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/9.jpg)
![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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/10.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/11.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/12.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/13.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/14.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/15.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/16.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/17.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/18.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/19.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/20.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/21.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/22.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/23.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/24.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/25.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/26.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/27.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/28.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/29.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/30.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/31.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/32.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/33.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/34.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/35.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/36.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/37.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/38.jpg)
=
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/39.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/40.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/41.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/42.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/43.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/44.jpg)
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](https://reader031.fdocuments.us/reader031/viewer/2022020108/5af60ab97f8b9ae9488e4826/html5/thumbnails/45.jpg)
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