SlideShare a Scribd company logo
Entwicklung mit JavaFX
Die Java UI-Technologie im JDK 9
1 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Wolfgang Weigend
Sen. Leitender Systemberater
Java Technologie und Architektur
The following 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
2 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
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.
Agenda
• Aktueller Status von JavaFX
• Entwicklungsressourcen beim Engineering und in der Java Community
• Linux on ARM Port
• JavaFX-Aufbau und Architekturkonzept
• Migration von Swing Komponenten
3 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Barrierefreiheit
• Vorteile bei der Entwicklung von JavaFX Anwendungen
• SceneBuilder GUI Editor
• Automatisiertes Testen von JavaFX GUI Komponenten
• Open Source Projekt OpenJFX
• Zusammenfassung
Aktueller Status von JavaFX
• JavaFX 8 ist fester Bestandteil der Java SE 8 und JavaFX 9 bei Java SE 9
– General Availability for Windows, Linux, Mac OS
– Java SE 8 Roadmap until 2025 and expected JDK 18.9 until 2028 with paid support
– Java SE Development Kit 8 Update 6 for ARM
• Starting with JDK 8u33, JavaFX Embedded is removed from the ARM bundle and is not supported
– http://www.oracle.com/technetwork/java/javase/jdk-8u33-arm-relnotes-2406696.html
4 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
– http://mail.openjdk.java.net/pipermail/openjfx-dev/2015-January/016570.html
• Development Tools
– NetBeans 8.2 und NetBeans Developer Builds mit JDK 9.0.1
– JavaFX Scene Builder 2.0 und Scene Builder Version 8.4.1 für JDK 8
– e(fx)clipse
• major release cycle alignment with eclipse roadmap
• minor release cycle with JavaFX roadmap
Entwicklungsressourcen beim Engineering
und in der Java Community
• Development Team
– Kevin Rushforth
– Senior Engineering Manager
– openjfx-dev@openjdk.java.net
– Technical Writer and Documentation
5 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
– Technical Writer and Documentation
– Oracle Java Advanced Support
• Java Community
– Gluon
– MicroDoc Systems
– BestSolution.at EDV Systemhaus GmbH
– Saxonia Systems AG, Canoo Engineering AG, open knowledge GmbH
– Dirk Lemmermann and many other contributors
JavaFX Day Cinema Düsseldorf 25th October 2017
6 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Gluon Ignite library
Dependency Injection Frameworks in JavaFX applications
• With the Gluon Ignite library, developers can use popular dependency injection frameworks in their JavaFX
applications, including inside their FXML controllers
• Gluon Ignite creates a common abstraction over several popular dependency injection frameworks:
– currently Guice, Spring, and Dagger, and plan to add more as the demand becomes obvious
• With full support of JSR-330 Gluon Ignite makes using dependency injection in JavaFX applications trivial
• Example of creating an application using the Guice framework and Gluon Ignite:
7 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Source:
http://gluonhq.com/
open-source/ignite/
JavaFX Linux on ARM Port created by MicroDoc
• Agreement by Oracle and MicroDoc
• MicroDoc has started to create and deploy embedded runtimes in 1999
– MicroDoc worked with customers from a large variety of industries including Automotive, Telematics,
Telecommunication, GSM Network Infrastructure, Building Automation, Smart Home, Smart Grid /
Smart Metering, Mobile Computing, Airline Traffic Management, Security Systems, Laser
Technology, Education
• MicroDoc creates Linux on ARM Port for JavaFX on their own
8 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• MicroDoc creates Linux on ARM Port for JavaFX on their own
– Source code and testing included
– As well for higher versions of Java, i.e. Java SE 9
• MicroDoc leds own projects
• MicroDoc Linux on ARM Port created and shipped
– OpenJFX 8 source with Multi-Touch JavaFX build for manufacturing customer in Austria
– Debian Linux
Source: https://www.microdoc.com/
JavaFX Runtime Architektur
9 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
JavaFX Architektur Komponenten
• Glass Windowing Toolkit: Provides native operating services, such as managing the
windows, timers, and surfaces
• Prism: Graphics pipeline that can run on hardware and software renderers
• UI Toolkit: Ties Prism and Glass together and makes them available to the JavaFX APIs
JavaFX Architektur
• Internal API
• Course-grained porting layer
− FX APIs isolated from
implementation details
10 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
implementation details
• Allows porting to completely
different systems
JavaFX Architektur
• Quantum Toolkit ties Prism and Glass
Windowing Toolkit together and makes
them available to the JavaFX layer above
in the stack
11 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Quantum Toolkit manages the threading
rules related to rendering versus events
handling
JavaFX Architektur
• Graphics API
− Converts the scene graph into
rendering calls
− Abstracts D3D, OpenGL*, Java2D
12 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
behind a “Graphics” object
− Handles “dirty regions”, clipping, and
other optimizations
− Font support
− Rasterization• Use hardware where possible
− Fast paths using shaders for ellipses, rectangles, etc.
• Reduce context switches
− Looking towards possible state sorting optimizations in the future
• Fallback to software rendering when necessary
− Bad drivers are the main reason for doing so
* No direct OpenGL support
JavaFX Architektur
• Windowing API
− Windows
− Mac
− Linux
13 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Provides basic OS services
− Drawing surface
− Input events
− Event queue
Scenegraph
• Instead of remove/add:
− group.getChildren().remove(node);
− group.getChildren().add(0, node);
• node.toFront()
JavaFX Scenegraph
14 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• node.toFront()
• node.toBack()
Scenegraph
−node.toFront()
−node.toBack()
Displaying HTML in JavaFX
public class WebViewDemo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override public void start(Stage stage) {
WebView webView = new WebView();
15 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
WebView webView = new WebView();
webView.getEngine().load("http://java.oracle.com");
Scene scene = new Scene(webView);
stage.setScene(scene);
stage.setTitle("Web View Demo");
stage.show();
}
}
Class JFXPanel
java.lang.Object
java.awt.Component
java.awt.Container
private static void initFX(JFXPanel fxPanel) {
// This method is invoked on JavaFX thread
Scene scene = createScene();
fxPanel.setScene(scene);
}
JavaFX mit JFXPanel Komponente in
Swing Anwendungen einbinden
public class Test {
private static void initAndShowGUI() {
// This method is invoked on Swing thread
JFrame frame = new JFrame("FX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
16 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
javax.swing.JComponent
javafx.embed.swing.JFXPanel
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI();
}
});
}
}
frame.add(fxPanel);
frame.setVisible(true);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
}
WebView und Swing Interoperabilität
• Embed Web content in
JavaFX applications
• HTML rendering
based on WebKit*
Web View Component
• Embed JavaFX content
into existing Swing
applications
• Extend existing Swing
Swing and SWT Interop.
• Faster loading of JavaFX
Web applications based
on Prism
• Pre-loader for improved
Browser Plug-In
17 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
based on WebKit*
• Hardware accelerated
rendering using PRISM
• Integration
– DOM access and manipulation
– CSS User Styles
– Java-Calls to JS
– JS-Calls to Java
• Extend existing Swing
applications with new
JavaFX features such as
WebView and high-
performance graphics
• Applies to SWT-
applications as well since
JavaFX 2.1
• Pre-loader for improved
user experience with
JavaFX Web
applications
* Updates with JDK 9 GA
Swing to JavaFX Migration
• Swing UI Controls analysieren
– Soll “Swing-Behavior” in JavaFX Migration mit eingebaut werden?
– Exakt gleiche Darstellung auf Pixel-Ebene?
• Layout Manager
– Teilweise automatisch überführen
18 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
– Teilweise automatisch überführen
– Manuelle Tätigkeit
• Geschäftslogik/Code entflechten
– Wie stark ist die Verzahnung von Code & UI?
• Fachlicher Freeze während der Migration, mit dem Ziel
einer möglichst kurzen Code-Freeze-Phase
Barrierefreiheit mit JavaFX
• GUI can be made more accessible by providing screen reader devices
which speak graphical content to blind people
• JavaFX accessibility on Microsoft Windows and Mac OS X
– By providing support for reading JavaFX controls via a screen reader
• Apple's VoiceOver for the Mac, Microsoft's Narrator for Windows
Accessibility support with JDK 8 Update 40
19 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Apple's VoiceOver for the Mac, Microsoft's Narrator for Windows
• Job Access With Speech (JAWS) Screen Reader for Windows by Freedom Scientific
– By providing JavaFX controls that are traversable using the keyboard
• By supporting a special high-contrast mode that makes controls more visible to
users
– this mode is activated on Windows by pressing Alt+Left Shift+Print Screen
Source: http://www.javaworld.com/article/2991463/learn-java/javafx-improvements-in-java-se-8u40.html
JavaFX supports accessibility by adding the following
properties to the javafx.scene.Node class
• accessibleRoleProperty
– Node's accessible role, which is a value of the javafx.scene.AccessibleRole
enumerated type that identifies the kind of control to the screen reader
– E.g., AccessibleRole.BUTTON or AccessibleRole.MENU.
– The screen reader uses a node's role to identify supported attributes and actions
• accessibleRoleDescriptionProperty
20 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• accessibleRoleDescriptionProperty
– Node's role description, which is a string
• accessibleTextProperty
– Node's accessible text, which is a string
• accessibleHelpProperty
– Node's accessible help, which is a string
• javafx.scene.control.Label labelFor-property is used by a
screen reader to provide more information to the user
Source: http://www.javaworld.com/article/2991463/learn-java/javafx-improvements-in-java-se-8u40.html
JavaFX provides an advanced API for interacting with
screen reader and accessing accessibility state
• Advanced API includes the javafx.scene.AccessibleAction and
javafx.scene.AccessibleAttribute enumerated types along with
the following Node methods:
– Object queryAccessibleAttribute(AccessibleAttribute attribute,
Adv. API to introduce accessibility support to own controls or other nodes
21 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
– Object queryAccessibleAttribute(AccessibleAttribute attribute,
Object... parameters)
– void executeAccessibleAction(AccessibleAction action, Object...
parameters)
– Void notifyAccessibleAttributeChanged(AccessibleAttribute
attributes)
Source: http://www.javaworld.com/article/2991463/learn-java/javafx-improvements-in-java-se-8u40.html
Java Entwicklungswerkzeuge
• Source editor with improved syntactic
highlighting, code completion, refactoring etc.
• Full debugger and profiler support
• Project wizard for easy creation of JavaFX
applications
22 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
applications
Other Java IDE’s
• Source editor with syntactic highlighting,
code completion, refactoring etc.
• Full debugger and Profiler support
jdeps - Java-Class-Dependency-Analyzer JDK 9.0.1 (1)
C:jdk-9.0.1JavaFXApplication3dist> jdeps -profile JavaFXApplication3.jar
JavaFXApplication3.jar -> C:Program Files (x86)Javajdk1.8.0_45jrelibextjfxrt.jar
JavaFXApplication3.jar -> C:Program Files (x86)Javajdk1.8.0_45jrelibrt.jar (compact1)
javafxapplication3 (JavaFXApplication3.jar)
-> java.io compact1
-> java.lang compact1
-> javafx.application jfxrt.jar
-> javafx.collections jfxrt.jar
23 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
-> javafx.collections jfxrt.jar
-> javafx.event jfxrt.jar
-> javafx.scene jfxrt.jar
-> javafx.scene.control jfxrt.jar
-> javafx.scene.layout jfxrt.jar
-> javafx.stage jfxrt.jar
C:jdk-9.0.1JavaFXApplication3dist> jdeps -v JavaFXApplication3.jar
C:jdk-9.0.1bin> jdeps --generate-module-info C:jdk-9.0.1JavaFXApplication3distc:jdk-
9.0.1JavaFXApplication3distJavaFXApplication3.jar
writing to C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3module-info.java
jdeps - Java-Class-Dependency-Analyzer JDK 9.0.1 (2)
C:jdk-9.0.1bin> jdeps --generate-module-info C:jdk-
9.0.1JavaFXApplication3distc:jdk9.0.1JavaFXApplication3distJavaFXApplication3.jar
writing to C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3module-info.java
C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3> dir
25.10.2017 10:36 171 module-info.java
24 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3> type module-info.java
module JavaFXApplication3 {
requires javafx.base;
requires javafx.controls;
requires transitive javafx.graphics;
exports javafxapplication3;
}
jdeps - Java-Class-Dependency-Analyzer JDK 9.0.1 (3)
C:jdk-9.0.1bin> jdeps --module-path C:jdk-9.0.1JavaFXApplication3dist -s -dotoutput c:jdk-
9.0.1JavaFXApplication3dist c:jdk-9.0.1JavaFXApplication3distJavaFXApplication3.jar
C:jdk-9.0.1JavaFXApplication3dist> type summary.dot
digraph "summary" {
"JavaFXApplication3.jar" -> "java.base (java.base)";
"JavaFXApplication3.jar" -> "javafx.base (javafx.base)";
"JavaFXApplication3.jar" -> "javafx.controls (javafx.controls)";
"JavaFXApplication3.jar" -> "javafx.graphics (javafx.graphics)";
25 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
"JavaFXApplication3.jar" -> "javafx.graphics (javafx.graphics)";
}
http://www.webgraphviz.com/
Design Objectives
Oracle’s next generation Java client solution
• Built on Java in Java
• Modular architecture
• Migration path for Java client UI technologies
JavaFX – Moving Client Forward
26 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Migration path for Java client UI technologies
• Advanced tooling
• Delivering on the cross-platform promise
Design Objectives
• Defining a Property
• Using a ChangeListener
• Using the High-Level Binding API
– The High-Level API is the quickest way to use bindings in applications
– It consists of two parts: the Fluent API, and the Bindings class
JavaFX – Properties and Bindings
27 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
– It consists of two parts: the Fluent API, and the Bindings class
• The Fluent API exposes methods on the various dependency objects, where as the Bindings class
provides static factory methods instead
– Bindings Class could used to do the same thing too
• Exploring Observable, ObservableValue, InvalidationListener, and ChangeListener
– Using an InvalidationListener
• Using the Low-Level Binding API
Source: https://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm
Java APIs und FXML
Java APIs für JavaFX
• End-to-end Java development
• Java language features - generics,
annotations, multi-threading
• Fluent API for UI construction
FXML
• Scriptable, XML-based markup language
for defining UI
• Convenient alternative to developing UI
programmatically in Java
28 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Fluent API for UI construction
• Alternative JVM supported languages
(e.g. Groovy, Scala) with JavaFX
• Leverage sophisticated Java IDEs,
debuggers and profilers
• Java APIs preserve convenient
JavaFX Script features (e.g., bind)
programmatically in Java
• Easy to learn and intuitive for developers
familiar with web technologies or other
markup based UI technologies
• Powerful scripting feature allows
embedding scripts within FXML. Any JVM
scripting language can be used, including
JavaScript, Groovy, and Scala
Modena Modern Theme – Since JavaFX 8
29 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Rich Text - Since JavaFX 8
• Use Cases
– text editor, code editor
– mixed style Labels, buttons, cells, headings, descriptions,
large textual content, etc.
• Details
30 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Details
– TextFlow, a new layout container
– Text is just a node… so you can add effects, event
handlers, and animations
– You can also use CSS, FXML
TreeTableView - Since JavaFX 8
• Goal: reuse as many API, or API concepts, as possible from
the TreeView and TableView controls API
31 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
DatePicker - Since JavaFX 8
32 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Public API for CSS structure - Since JavaFX 8
• CSS styling is one of the key features for JavaFX
• CSS has been implemented exclusively in private API
(com.sun.javafx.css package)
• Tools (e.g. Scene Builder) require a CSS public API
33 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Tools (e.g. Scene Builder) require a CSS public API
• Developers will be able to define custom CSS styles
Hello World in JavaFX
Programming in Java
public class JavaFXExample extends Application {
@Override public void start(Stage stage){
Scene scene = new Scene(
LabelBuilder.create()
.text("Hello World!")
.layoutX(25)
34 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
.build());
stage.setTitle("Welcome to JavaFX!");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Hello World in JavaFX
Programming in FXML und Java
FXML
<BorderPane>
<center>
<Label text=”%helloworld"/>
</center>
</BorderPane>
Java
35 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Java
public class FXMLExample extends Application {
@Override public void start(Stage stage) throws Exception {
stage.setTitle("FXML Example");
Parent root = FXMLLoader.load(getClass().getResource
(“example.fxml"),
ResourceBundle.getBundle(“r.fxml_example"));
stage.setScene(new Scene(root));
stage.show();
}
public static void main(String[] args) { launch(args); }
}
JavaFX Scene Builder 2.0
36 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
http://www.oracle.com/technetwork/java/javase/downloads/sb2download-2177776.html
JavaFX Scene Builder
• UI layout tool for JavaFX
• FXML visual editor
• Can be used standalone or with all major Java IDEs
– Tighter integration with NetBeans IDE
37 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
– Tighter integration with NetBeans IDE
• Preview mode
• CSS support
• Supported on Windows and Mac OS X
Gluon supports Scene Builder for Java SE 9.0.1
• Scene Builder only as source code within the OpenJFX project
• Gluon provides Scene Builder builds
– Actively work on improvements to Scene Builder, in a public repo, to further drive the
functionality of Scene Builder forward
– These builds will be the Oracle bits, with additional improvements based on community
involvement and our desires to better support third party projects such as ControlsFX,
FXyz, DataFX, others
38 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
FXyz, DataFX, others
• Downloads:
• Scene Builder is
open source and licensed
under the BSD license
• Scene Builder version for
Java 9.0.1 was released
on 17th of October 2017
The latest version of Scene Builder for Java 8 is 8.4.1, it was released on 17th of October 2017
Source: http://gluonhq.com/open-source/scene-builder/
Funktionale Systemtests für JavaFX
Automatisiertes Testen für JavaFX UI Controls
39 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
QF-Test
Firma Quality First Software
Professionelles GUI-Testen für
Java & Web www.qfs.de
•Functional Testing
•UI Controls
•Scenegraph
QF-Test und JavaFX 8 und künftig für JavaFX 9
• JavaFX ist eine pure Java-Anbindung analog Swing
• QF-Test Version 4.1.5 mit offizielle Unterstützung für Java 8 / JavaFX 8
• Die kommende Version QF-Test 4.2 unterstützt Java 9 / JavaFX 9
• Wenn Sie bereits jetzt Java 9 Anwendungen testen möchten, können Sie
eine Vorabversion von QF-Test 4.2 per E-Mail an qfs@qfs.de anfordern.
40 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
eine Vorabversion von QF-Test 4.2 per E-Mail an qfs@qfs.de anfordern.
Java Swing
Eclipse/SWT
Web
QF-Test & JavaFX 8 – GUI Testautomatisierung
41 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
JavaFX in the Browser
http://www.jpro.io/
42 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
jpro is a new technology which brings Java back into the browser - without
Java Plugin. To achieve that, jpro runs JavaFX on the server and maps its
scenegraph directly into the browser
The client side rendering is highly optimized with browser side approximations
and browser side rendering to get a smooth user experience free of lags
© 2017 jpro technologies AG
jpro architecture - JavaFX in the browser
Thin client model
43 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. © 2017 jpro technologies AG
JavaFX und Open Source
http://openjdk.java.net/projects/openjfx
44 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
OpenJFX
•UI Controls
•Scenegraph
•JemmyFX
Open Source und Standardisierung
• JavaFX source code being contributed as part of OpenJFX
http://openjdk.java.net/projects/openjfx/
– Source code being contributed in phases
– Open sourced as of March 2013
• UI Controls
45 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Scene Graph
• JemmyFX
• Functional Tests
• JavaFX via OpenJFX towards OpenJDK under discussion
JavaFX goes Open Source
iOS- und Android-Implementierungen
• iOS- und Android-Implementierungen sind Open Source
• Lizensierung mit eigenem Applikations-Co-Bundle
46 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
JavaFXPorts: JavaFX on Mobile and Tablets
Package your JavaFX Application for deployment on iOS and Android
• JavaFX on client, desktop, laptop and embedded systems
• JavaFX on mobile and tablets
• JavaFXPorts 8.60.9 released
• Why is a port needed? - Isn't Java Write Once Run Anywhere?
47 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
• Why is a port needed? - Isn't Java Write Once Run Anywhere?
OpenJDK
http://javafxports.org/page/home
Zusammenfassung
JavaFX is the strategic Java UI technology for rich client applications
Unified development of Java and Web applications
• Browser Plug-in, Web Start, Native Executables
• Hardware Accelerated Graphics (DirectX, ..)
• JavaFX Web View based on WebKit
‒ JavaFX with WebView for HTML5 features
48 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
‒ JavaFX with WebView for HTML5 features
‒ Improved JavaScript Engine
‒ JavaFX as applet integrated to run in a web page
• IDE support for Eclipse e(fx)clipse, IntelliJ, IDEA, NetBeans, etc.
• Private vs. JavaFX Public API with JDK 9
Wanted JavaFX for mobile operating systems iOS & Android - desirable
Developer community could make use of the JavaFX Open Source process
• Get hands-on porting for iOS and Android
Danke!
Wolfgang.Weigend@oracle.com
Twitter: wolflook
49 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Ad

More Related Content

What's hot (20)

Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9
J On The Beach
 
Monitoring and Tuning GlassFish
Monitoring and Tuning GlassFishMonitoring and Tuning GlassFish
Monitoring and Tuning GlassFish
C2B2 Consulting
 
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Robert Scholte
 
Rapid application development with spring roo j-fall 2010 - baris dere
Rapid application development with spring roo   j-fall 2010 - baris dereRapid application development with spring roo   j-fall 2010 - baris dere
Rapid application development with spring roo j-fall 2010 - baris dere
Baris Dere
 
Javantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin ToshevJavantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin Toshev
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to Gradle
Strannik_2013
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
Sander Mak (@Sander_Mak)
 
What's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the CloudWhat's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the Cloud
martinlippert
 
Grails 3.0 Preview
Grails 3.0 PreviewGrails 3.0 Preview
Grails 3.0 Preview
graemerocher
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypes
Strannik_2013
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
DPC Consulting Ltd
 
Git.From thorns to the stars
Git.From thorns to the starsGit.From thorns to the stars
Git.From thorns to the stars
Strannik_2013
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
VMware Tanzu
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
David Delabassee
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
Ioan Eugen Stan
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 Issues
Atlassian
 
Webcast - Making kubernetes production ready
Webcast - Making kubernetes production readyWebcast - Making kubernetes production ready
Webcast - Making kubernetes production ready
Applatix
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
Alex Tumanoff
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9
Mauricio "Maltron" Leal
 
Monitoring and Tuning GlassFish
Monitoring and Tuning GlassFishMonitoring and Tuning GlassFish
Monitoring and Tuning GlassFish
C2B2 Consulting
 
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Robert Scholte
 
Rapid application development with spring roo j-fall 2010 - baris dere
Rapid application development with spring roo   j-fall 2010 - baris dereRapid application development with spring roo   j-fall 2010 - baris dere
Rapid application development with spring roo j-fall 2010 - baris dere
Baris Dere
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to Gradle
Strannik_2013
 
What's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the CloudWhat's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the Cloud
martinlippert
 
Grails 3.0 Preview
Grails 3.0 PreviewGrails 3.0 Preview
Grails 3.0 Preview
graemerocher
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypes
Strannik_2013
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
DPC Consulting Ltd
 
Git.From thorns to the stars
Git.From thorns to the starsGit.From thorns to the stars
Git.From thorns to the stars
Strannik_2013
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
VMware Tanzu
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
David Delabassee
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
Ioan Eugen Stan
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 Issues
Atlassian
 
Webcast - Making kubernetes production ready
Webcast - Making kubernetes production readyWebcast - Making kubernetes production ready
Webcast - Making kubernetes production ready
Applatix
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
Alex Tumanoff
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 

Similar to Development with JavaFX 9 in JDK 9.0.1 (20)

Show and Tell: Building Applications on Cisco Open SDN Controller
Show and Tell: Building Applications on Cisco Open SDN Controller Show and Tell: Building Applications on Cisco Open SDN Controller
Show and Tell: Building Applications on Cisco Open SDN Controller
Cisco DevNet
 
Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-on
Bill Ott
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: Overview
Tarun Telang
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
Wolfgang Weigend
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
John Archer
 
desktop_resume
desktop_resumedesktop_resume
desktop_resume
Chris Markle
 
Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application development
Clarence Ho
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
Artur Alves
 
Creating GenAI Apps in Java with SD4J and the ONNX Runtime - MiTechCon - Mic...
Creating GenAI Apps in Java with SD4J and  the ONNX Runtime - MiTechCon - Mic...Creating GenAI Apps in Java with SD4J and  the ONNX Runtime - MiTechCon - Mic...
Creating GenAI Apps in Java with SD4J and the ONNX Runtime - MiTechCon - Mic...
Juarez Junior
 
DSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
DSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX RuntimeDSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
DSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
Juarez Junior
 
GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 Applications
Arun Gupta
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
Arun Gupta
 
JavaFx
JavaFxJavaFx
JavaFx
Rohan Bhanderi
 
JavaFX: A Rich Internet Application (RIA) Development Platform
JavaFX: A Rich Internet Application (RIA) Development PlatformJavaFX: A Rich Internet Application (RIA) Development Platform
JavaFX: A Rich Internet Application (RIA) Development Platform
Praveen Srivastava
 
Evaluation Ria Frameworks
Evaluation Ria FrameworksEvaluation Ria Frameworks
Evaluation Ria Frameworks
Rishi Singh
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
lennartkats
 
Oleksandr Denysiuk "Modern Digital Enterprises"
Oleksandr Denysiuk "Modern Digital Enterprises"Oleksandr Denysiuk "Modern Digital Enterprises"
Oleksandr Denysiuk "Modern Digital Enterprises"
LogeekNightUkraine
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
David Delabassee
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
vipin kumar
 
Eclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client RoundupEclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client Roundup
Murat Yener
 
Show and Tell: Building Applications on Cisco Open SDN Controller
Show and Tell: Building Applications on Cisco Open SDN Controller Show and Tell: Building Applications on Cisco Open SDN Controller
Show and Tell: Building Applications on Cisco Open SDN Controller
Cisco DevNet
 
Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-on
Bill Ott
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: Overview
Tarun Telang
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
Wolfgang Weigend
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
John Archer
 
Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application development
Clarence Ho
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
Artur Alves
 
Creating GenAI Apps in Java with SD4J and the ONNX Runtime - MiTechCon - Mic...
Creating GenAI Apps in Java with SD4J and  the ONNX Runtime - MiTechCon - Mic...Creating GenAI Apps in Java with SD4J and  the ONNX Runtime - MiTechCon - Mic...
Creating GenAI Apps in Java with SD4J and the ONNX Runtime - MiTechCon - Mic...
Juarez Junior
 
DSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
DSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX RuntimeDSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
DSS_ML_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
Juarez Junior
 
GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 Applications
Arun Gupta
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
Arun Gupta
 
JavaFX: A Rich Internet Application (RIA) Development Platform
JavaFX: A Rich Internet Application (RIA) Development PlatformJavaFX: A Rich Internet Application (RIA) Development Platform
JavaFX: A Rich Internet Application (RIA) Development Platform
Praveen Srivastava
 
Evaluation Ria Frameworks
Evaluation Ria FrameworksEvaluation Ria Frameworks
Evaluation Ria Frameworks
Rishi Singh
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
lennartkats
 
Oleksandr Denysiuk "Modern Digital Enterprises"
Oleksandr Denysiuk "Modern Digital Enterprises"Oleksandr Denysiuk "Modern Digital Enterprises"
Oleksandr Denysiuk "Modern Digital Enterprises"
LogeekNightUkraine
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
David Delabassee
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
vipin kumar
 
Eclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client RoundupEclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client Roundup
Murat Yener
 
Ad

More from Wolfgang Weigend (18)

It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
Wolfgang Weigend
 
It's a jdk jungle out there - JDK 11 and OpenJDK 11
It's a jdk jungle out there - JDK 11 and OpenJDK 11It's a jdk jungle out there - JDK 11 and OpenJDK 11
It's a jdk jungle out there - JDK 11 and OpenJDK 11
Wolfgang Weigend
 
The JDK 8 end of public updates and the Java SE subscription
The JDK 8 end of public updates and the Java SE subscription The JDK 8 end of public updates and the Java SE subscription
The JDK 8 end of public updates and the Java SE subscription
Wolfgang Weigend
 
JDK versions and OpenJDK
JDK versions and OpenJDKJDK versions and OpenJDK
JDK versions and OpenJDK
Wolfgang Weigend
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
Wolfgang Weigend
 
Microservices and Container
Microservices and ContainerMicroservices and Container
Microservices and Container
Wolfgang Weigend
 
JDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemJDK 9 Java Platform Module System
JDK 9 Java Platform Module System
Wolfgang Weigend
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
Wolfgang Weigend
 
Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017
Wolfgang Weigend
 
Javamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsawJavamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsaw
Wolfgang Weigend
 
Das 1×1 des java supports wie die wartung älterer jdk-versionen weitergeht
Das 1×1 des java supports wie die wartung älterer jdk-versionen weitergehtDas 1×1 des java supports wie die wartung älterer jdk-versionen weitergeht
Das 1×1 des java supports wie die wartung älterer jdk-versionen weitergeht
Wolfgang Weigend
 
Automated testing of JavaFX GUI components
Automated testing of JavaFX GUI componentsAutomated testing of JavaFX GUI components
Automated testing of JavaFX GUI components
Wolfgang Weigend
 
Java mission control and java flight recorder
Java mission control and java flight recorderJava mission control and java flight recorder
Java mission control and java flight recorder
Wolfgang Weigend
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI components
Wolfgang Weigend
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Wolfgang Weigend
 
JavaFX goes open source
JavaFX goes open sourceJavaFX goes open source
JavaFX goes open source
Wolfgang Weigend
 
Jm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornJm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashorn
Wolfgang Weigend
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
Wolfgang Weigend
 
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15
Wolfgang Weigend
 
It's a jdk jungle out there - JDK 11 and OpenJDK 11
It's a jdk jungle out there - JDK 11 and OpenJDK 11It's a jdk jungle out there - JDK 11 and OpenJDK 11
It's a jdk jungle out there - JDK 11 and OpenJDK 11
Wolfgang Weigend
 
The JDK 8 end of public updates and the Java SE subscription
The JDK 8 end of public updates and the Java SE subscription The JDK 8 end of public updates and the Java SE subscription
The JDK 8 end of public updates and the Java SE subscription
Wolfgang Weigend
 
Microservices and Container
Microservices and ContainerMicroservices and Container
Microservices and Container
Wolfgang Weigend
 
JDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemJDK 9 Java Platform Module System
JDK 9 Java Platform Module System
Wolfgang Weigend
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
Wolfgang Weigend
 
Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017
Wolfgang Weigend
 
Javamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsawJavamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsaw
Wolfgang Weigend
 
Das 1×1 des java supports wie die wartung älterer jdk-versionen weitergeht
Das 1×1 des java supports wie die wartung älterer jdk-versionen weitergehtDas 1×1 des java supports wie die wartung älterer jdk-versionen weitergeht
Das 1×1 des java supports wie die wartung älterer jdk-versionen weitergeht
Wolfgang Weigend
 
Automated testing of JavaFX GUI components
Automated testing of JavaFX GUI componentsAutomated testing of JavaFX GUI components
Automated testing of JavaFX GUI components
Wolfgang Weigend
 
Java mission control and java flight recorder
Java mission control and java flight recorderJava mission control and java flight recorder
Java mission control and java flight recorder
Wolfgang Weigend
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI components
Wolfgang Weigend
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Wolfgang Weigend
 
Jm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornJm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashorn
Wolfgang Weigend
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
Wolfgang Weigend
 
Ad

Recently uploaded (20)

Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 

Development with JavaFX 9 in JDK 9.0.1

  • 1. Entwicklung mit JavaFX Die Java UI-Technologie im JDK 9 1 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. Wolfgang Weigend Sen. Leitender Systemberater Java Technologie und Architektur
  • 2. The following 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 2 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. 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.
  • 3. Agenda • Aktueller Status von JavaFX • Entwicklungsressourcen beim Engineering und in der Java Community • Linux on ARM Port • JavaFX-Aufbau und Architekturkonzept • Migration von Swing Komponenten 3 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Barrierefreiheit • Vorteile bei der Entwicklung von JavaFX Anwendungen • SceneBuilder GUI Editor • Automatisiertes Testen von JavaFX GUI Komponenten • Open Source Projekt OpenJFX • Zusammenfassung
  • 4. Aktueller Status von JavaFX • JavaFX 8 ist fester Bestandteil der Java SE 8 und JavaFX 9 bei Java SE 9 – General Availability for Windows, Linux, Mac OS – Java SE 8 Roadmap until 2025 and expected JDK 18.9 until 2028 with paid support – Java SE Development Kit 8 Update 6 for ARM • Starting with JDK 8u33, JavaFX Embedded is removed from the ARM bundle and is not supported – http://www.oracle.com/technetwork/java/javase/jdk-8u33-arm-relnotes-2406696.html 4 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. – http://mail.openjdk.java.net/pipermail/openjfx-dev/2015-January/016570.html • Development Tools – NetBeans 8.2 und NetBeans Developer Builds mit JDK 9.0.1 – JavaFX Scene Builder 2.0 und Scene Builder Version 8.4.1 für JDK 8 – e(fx)clipse • major release cycle alignment with eclipse roadmap • minor release cycle with JavaFX roadmap
  • 5. Entwicklungsressourcen beim Engineering und in der Java Community • Development Team – Kevin Rushforth – Senior Engineering Manager – [email protected] – Technical Writer and Documentation 5 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. – Technical Writer and Documentation – Oracle Java Advanced Support • Java Community – Gluon – MicroDoc Systems – BestSolution.at EDV Systemhaus GmbH – Saxonia Systems AG, Canoo Engineering AG, open knowledge GmbH – Dirk Lemmermann and many other contributors
  • 6. JavaFX Day Cinema Düsseldorf 25th October 2017 6 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
  • 7. Gluon Ignite library Dependency Injection Frameworks in JavaFX applications • With the Gluon Ignite library, developers can use popular dependency injection frameworks in their JavaFX applications, including inside their FXML controllers • Gluon Ignite creates a common abstraction over several popular dependency injection frameworks: – currently Guice, Spring, and Dagger, and plan to add more as the demand becomes obvious • With full support of JSR-330 Gluon Ignite makes using dependency injection in JavaFX applications trivial • Example of creating an application using the Guice framework and Gluon Ignite: 7 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. Source: http://gluonhq.com/ open-source/ignite/
  • 8. JavaFX Linux on ARM Port created by MicroDoc • Agreement by Oracle and MicroDoc • MicroDoc has started to create and deploy embedded runtimes in 1999 – MicroDoc worked with customers from a large variety of industries including Automotive, Telematics, Telecommunication, GSM Network Infrastructure, Building Automation, Smart Home, Smart Grid / Smart Metering, Mobile Computing, Airline Traffic Management, Security Systems, Laser Technology, Education • MicroDoc creates Linux on ARM Port for JavaFX on their own 8 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • MicroDoc creates Linux on ARM Port for JavaFX on their own – Source code and testing included – As well for higher versions of Java, i.e. Java SE 9 • MicroDoc leds own projects • MicroDoc Linux on ARM Port created and shipped – OpenJFX 8 source with Multi-Touch JavaFX build for manufacturing customer in Austria – Debian Linux Source: https://www.microdoc.com/
  • 9. JavaFX Runtime Architektur 9 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. JavaFX Architektur Komponenten • Glass Windowing Toolkit: Provides native operating services, such as managing the windows, timers, and surfaces • Prism: Graphics pipeline that can run on hardware and software renderers • UI Toolkit: Ties Prism and Glass together and makes them available to the JavaFX APIs
  • 10. JavaFX Architektur • Internal API • Course-grained porting layer − FX APIs isolated from implementation details 10 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. implementation details • Allows porting to completely different systems
  • 11. JavaFX Architektur • Quantum Toolkit ties Prism and Glass Windowing Toolkit together and makes them available to the JavaFX layer above in the stack 11 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Quantum Toolkit manages the threading rules related to rendering versus events handling
  • 12. JavaFX Architektur • Graphics API − Converts the scene graph into rendering calls − Abstracts D3D, OpenGL*, Java2D 12 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. behind a “Graphics” object − Handles “dirty regions”, clipping, and other optimizations − Font support − Rasterization• Use hardware where possible − Fast paths using shaders for ellipses, rectangles, etc. • Reduce context switches − Looking towards possible state sorting optimizations in the future • Fallback to software rendering when necessary − Bad drivers are the main reason for doing so * No direct OpenGL support
  • 13. JavaFX Architektur • Windowing API − Windows − Mac − Linux 13 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Provides basic OS services − Drawing surface − Input events − Event queue
  • 14. Scenegraph • Instead of remove/add: − group.getChildren().remove(node); − group.getChildren().add(0, node); • node.toFront() JavaFX Scenegraph 14 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • node.toFront() • node.toBack() Scenegraph −node.toFront() −node.toBack()
  • 15. Displaying HTML in JavaFX public class WebViewDemo extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { WebView webView = new WebView(); 15 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. WebView webView = new WebView(); webView.getEngine().load("http://java.oracle.com"); Scene scene = new Scene(webView); stage.setScene(scene); stage.setTitle("Web View Demo"); stage.show(); } }
  • 16. Class JFXPanel java.lang.Object java.awt.Component java.awt.Container private static void initFX(JFXPanel fxPanel) { // This method is invoked on JavaFX thread Scene scene = createScene(); fxPanel.setScene(scene); } JavaFX mit JFXPanel Komponente in Swing Anwendungen einbinden public class Test { private static void initAndShowGUI() { // This method is invoked on Swing thread JFrame frame = new JFrame("FX"); final JFXPanel fxPanel = new JFXPanel(); frame.add(fxPanel); 16 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. javax.swing.JComponent javafx.embed.swing.JFXPanel } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { initAndShowGUI(); } }); } } frame.add(fxPanel); frame.setVisible(true); Platform.runLater(new Runnable() { @Override public void run() { initFX(fxPanel); } }); }
  • 17. WebView und Swing Interoperabilität • Embed Web content in JavaFX applications • HTML rendering based on WebKit* Web View Component • Embed JavaFX content into existing Swing applications • Extend existing Swing Swing and SWT Interop. • Faster loading of JavaFX Web applications based on Prism • Pre-loader for improved Browser Plug-In 17 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. based on WebKit* • Hardware accelerated rendering using PRISM • Integration – DOM access and manipulation – CSS User Styles – Java-Calls to JS – JS-Calls to Java • Extend existing Swing applications with new JavaFX features such as WebView and high- performance graphics • Applies to SWT- applications as well since JavaFX 2.1 • Pre-loader for improved user experience with JavaFX Web applications * Updates with JDK 9 GA
  • 18. Swing to JavaFX Migration • Swing UI Controls analysieren – Soll “Swing-Behavior” in JavaFX Migration mit eingebaut werden? – Exakt gleiche Darstellung auf Pixel-Ebene? • Layout Manager – Teilweise automatisch überführen 18 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. – Teilweise automatisch überführen – Manuelle Tätigkeit • Geschäftslogik/Code entflechten – Wie stark ist die Verzahnung von Code & UI? • Fachlicher Freeze während der Migration, mit dem Ziel einer möglichst kurzen Code-Freeze-Phase
  • 19. Barrierefreiheit mit JavaFX • GUI can be made more accessible by providing screen reader devices which speak graphical content to blind people • JavaFX accessibility on Microsoft Windows and Mac OS X – By providing support for reading JavaFX controls via a screen reader • Apple's VoiceOver for the Mac, Microsoft's Narrator for Windows Accessibility support with JDK 8 Update 40 19 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Apple's VoiceOver for the Mac, Microsoft's Narrator for Windows • Job Access With Speech (JAWS) Screen Reader for Windows by Freedom Scientific – By providing JavaFX controls that are traversable using the keyboard • By supporting a special high-contrast mode that makes controls more visible to users – this mode is activated on Windows by pressing Alt+Left Shift+Print Screen Source: http://www.javaworld.com/article/2991463/learn-java/javafx-improvements-in-java-se-8u40.html
  • 20. JavaFX supports accessibility by adding the following properties to the javafx.scene.Node class • accessibleRoleProperty – Node's accessible role, which is a value of the javafx.scene.AccessibleRole enumerated type that identifies the kind of control to the screen reader – E.g., AccessibleRole.BUTTON or AccessibleRole.MENU. – The screen reader uses a node's role to identify supported attributes and actions • accessibleRoleDescriptionProperty 20 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • accessibleRoleDescriptionProperty – Node's role description, which is a string • accessibleTextProperty – Node's accessible text, which is a string • accessibleHelpProperty – Node's accessible help, which is a string • javafx.scene.control.Label labelFor-property is used by a screen reader to provide more information to the user Source: http://www.javaworld.com/article/2991463/learn-java/javafx-improvements-in-java-se-8u40.html
  • 21. JavaFX provides an advanced API for interacting with screen reader and accessing accessibility state • Advanced API includes the javafx.scene.AccessibleAction and javafx.scene.AccessibleAttribute enumerated types along with the following Node methods: – Object queryAccessibleAttribute(AccessibleAttribute attribute, Adv. API to introduce accessibility support to own controls or other nodes 21 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. – Object queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters) – void executeAccessibleAction(AccessibleAction action, Object... parameters) – Void notifyAccessibleAttributeChanged(AccessibleAttribute attributes) Source: http://www.javaworld.com/article/2991463/learn-java/javafx-improvements-in-java-se-8u40.html
  • 22. Java Entwicklungswerkzeuge • Source editor with improved syntactic highlighting, code completion, refactoring etc. • Full debugger and profiler support • Project wizard for easy creation of JavaFX applications 22 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. applications Other Java IDE’s • Source editor with syntactic highlighting, code completion, refactoring etc. • Full debugger and Profiler support
  • 23. jdeps - Java-Class-Dependency-Analyzer JDK 9.0.1 (1) C:jdk-9.0.1JavaFXApplication3dist> jdeps -profile JavaFXApplication3.jar JavaFXApplication3.jar -> C:Program Files (x86)Javajdk1.8.0_45jrelibextjfxrt.jar JavaFXApplication3.jar -> C:Program Files (x86)Javajdk1.8.0_45jrelibrt.jar (compact1) javafxapplication3 (JavaFXApplication3.jar) -> java.io compact1 -> java.lang compact1 -> javafx.application jfxrt.jar -> javafx.collections jfxrt.jar 23 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. -> javafx.collections jfxrt.jar -> javafx.event jfxrt.jar -> javafx.scene jfxrt.jar -> javafx.scene.control jfxrt.jar -> javafx.scene.layout jfxrt.jar -> javafx.stage jfxrt.jar C:jdk-9.0.1JavaFXApplication3dist> jdeps -v JavaFXApplication3.jar C:jdk-9.0.1bin> jdeps --generate-module-info C:jdk-9.0.1JavaFXApplication3distc:jdk- 9.0.1JavaFXApplication3distJavaFXApplication3.jar writing to C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3module-info.java
  • 24. jdeps - Java-Class-Dependency-Analyzer JDK 9.0.1 (2) C:jdk-9.0.1bin> jdeps --generate-module-info C:jdk- 9.0.1JavaFXApplication3distc:jdk9.0.1JavaFXApplication3distJavaFXApplication3.jar writing to C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3module-info.java C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3> dir 25.10.2017 10:36 171 module-info.java 24 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. C:jdk-9.0.1JavaFXApplication3distJavaFXApplication3> type module-info.java module JavaFXApplication3 { requires javafx.base; requires javafx.controls; requires transitive javafx.graphics; exports javafxapplication3; }
  • 25. jdeps - Java-Class-Dependency-Analyzer JDK 9.0.1 (3) C:jdk-9.0.1bin> jdeps --module-path C:jdk-9.0.1JavaFXApplication3dist -s -dotoutput c:jdk- 9.0.1JavaFXApplication3dist c:jdk-9.0.1JavaFXApplication3distJavaFXApplication3.jar C:jdk-9.0.1JavaFXApplication3dist> type summary.dot digraph "summary" { "JavaFXApplication3.jar" -> "java.base (java.base)"; "JavaFXApplication3.jar" -> "javafx.base (javafx.base)"; "JavaFXApplication3.jar" -> "javafx.controls (javafx.controls)"; "JavaFXApplication3.jar" -> "javafx.graphics (javafx.graphics)"; 25 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. "JavaFXApplication3.jar" -> "javafx.graphics (javafx.graphics)"; } http://www.webgraphviz.com/
  • 26. Design Objectives Oracle’s next generation Java client solution • Built on Java in Java • Modular architecture • Migration path for Java client UI technologies JavaFX – Moving Client Forward 26 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Migration path for Java client UI technologies • Advanced tooling • Delivering on the cross-platform promise
  • 27. Design Objectives • Defining a Property • Using a ChangeListener • Using the High-Level Binding API – The High-Level API is the quickest way to use bindings in applications – It consists of two parts: the Fluent API, and the Bindings class JavaFX – Properties and Bindings 27 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. – It consists of two parts: the Fluent API, and the Bindings class • The Fluent API exposes methods on the various dependency objects, where as the Bindings class provides static factory methods instead – Bindings Class could used to do the same thing too • Exploring Observable, ObservableValue, InvalidationListener, and ChangeListener – Using an InvalidationListener • Using the Low-Level Binding API Source: https://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm
  • 28. Java APIs und FXML Java APIs für JavaFX • End-to-end Java development • Java language features - generics, annotations, multi-threading • Fluent API for UI construction FXML • Scriptable, XML-based markup language for defining UI • Convenient alternative to developing UI programmatically in Java 28 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Fluent API for UI construction • Alternative JVM supported languages (e.g. Groovy, Scala) with JavaFX • Leverage sophisticated Java IDEs, debuggers and profilers • Java APIs preserve convenient JavaFX Script features (e.g., bind) programmatically in Java • Easy to learn and intuitive for developers familiar with web technologies or other markup based UI technologies • Powerful scripting feature allows embedding scripts within FXML. Any JVM scripting language can be used, including JavaScript, Groovy, and Scala
  • 29. Modena Modern Theme – Since JavaFX 8 29 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
  • 30. Rich Text - Since JavaFX 8 • Use Cases – text editor, code editor – mixed style Labels, buttons, cells, headings, descriptions, large textual content, etc. • Details 30 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Details – TextFlow, a new layout container – Text is just a node… so you can add effects, event handlers, and animations – You can also use CSS, FXML
  • 31. TreeTableView - Since JavaFX 8 • Goal: reuse as many API, or API concepts, as possible from the TreeView and TableView controls API 31 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
  • 32. DatePicker - Since JavaFX 8 32 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
  • 33. Public API for CSS structure - Since JavaFX 8 • CSS styling is one of the key features for JavaFX • CSS has been implemented exclusively in private API (com.sun.javafx.css package) • Tools (e.g. Scene Builder) require a CSS public API 33 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Tools (e.g. Scene Builder) require a CSS public API • Developers will be able to define custom CSS styles
  • 34. Hello World in JavaFX Programming in Java public class JavaFXExample extends Application { @Override public void start(Stage stage){ Scene scene = new Scene( LabelBuilder.create() .text("Hello World!") .layoutX(25) 34 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. .build()); stage.setTitle("Welcome to JavaFX!"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
  • 35. Hello World in JavaFX Programming in FXML und Java FXML <BorderPane> <center> <Label text=”%helloworld"/> </center> </BorderPane> Java 35 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. Java public class FXMLExample extends Application { @Override public void start(Stage stage) throws Exception { stage.setTitle("FXML Example"); Parent root = FXMLLoader.load(getClass().getResource (“example.fxml"), ResourceBundle.getBundle(“r.fxml_example")); stage.setScene(new Scene(root)); stage.show(); } public static void main(String[] args) { launch(args); } }
  • 36. JavaFX Scene Builder 2.0 36 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. http://www.oracle.com/technetwork/java/javase/downloads/sb2download-2177776.html
  • 37. JavaFX Scene Builder • UI layout tool for JavaFX • FXML visual editor • Can be used standalone or with all major Java IDEs – Tighter integration with NetBeans IDE 37 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. – Tighter integration with NetBeans IDE • Preview mode • CSS support • Supported on Windows and Mac OS X
  • 38. Gluon supports Scene Builder for Java SE 9.0.1 • Scene Builder only as source code within the OpenJFX project • Gluon provides Scene Builder builds – Actively work on improvements to Scene Builder, in a public repo, to further drive the functionality of Scene Builder forward – These builds will be the Oracle bits, with additional improvements based on community involvement and our desires to better support third party projects such as ControlsFX, FXyz, DataFX, others 38 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. FXyz, DataFX, others • Downloads: • Scene Builder is open source and licensed under the BSD license • Scene Builder version for Java 9.0.1 was released on 17th of October 2017 The latest version of Scene Builder for Java 8 is 8.4.1, it was released on 17th of October 2017 Source: http://gluonhq.com/open-source/scene-builder/
  • 39. Funktionale Systemtests für JavaFX Automatisiertes Testen für JavaFX UI Controls 39 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. QF-Test Firma Quality First Software Professionelles GUI-Testen für Java & Web www.qfs.de •Functional Testing •UI Controls •Scenegraph
  • 40. QF-Test und JavaFX 8 und künftig für JavaFX 9 • JavaFX ist eine pure Java-Anbindung analog Swing • QF-Test Version 4.1.5 mit offizielle Unterstützung für Java 8 / JavaFX 8 • Die kommende Version QF-Test 4.2 unterstützt Java 9 / JavaFX 9 • Wenn Sie bereits jetzt Java 9 Anwendungen testen möchten, können Sie eine Vorabversion von QF-Test 4.2 per E-Mail an [email protected] anfordern. 40 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. eine Vorabversion von QF-Test 4.2 per E-Mail an [email protected] anfordern. Java Swing Eclipse/SWT Web
  • 41. QF-Test & JavaFX 8 – GUI Testautomatisierung 41 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
  • 42. JavaFX in the Browser http://www.jpro.io/ 42 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. jpro is a new technology which brings Java back into the browser - without Java Plugin. To achieve that, jpro runs JavaFX on the server and maps its scenegraph directly into the browser The client side rendering is highly optimized with browser side approximations and browser side rendering to get a smooth user experience free of lags © 2017 jpro technologies AG
  • 43. jpro architecture - JavaFX in the browser Thin client model 43 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. © 2017 jpro technologies AG
  • 44. JavaFX und Open Source http://openjdk.java.net/projects/openjfx 44 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. OpenJFX •UI Controls •Scenegraph •JemmyFX
  • 45. Open Source und Standardisierung • JavaFX source code being contributed as part of OpenJFX http://openjdk.java.net/projects/openjfx/ – Source code being contributed in phases – Open sourced as of March 2013 • UI Controls 45 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Scene Graph • JemmyFX • Functional Tests • JavaFX via OpenJFX towards OpenJDK under discussion
  • 46. JavaFX goes Open Source iOS- und Android-Implementierungen • iOS- und Android-Implementierungen sind Open Source • Lizensierung mit eigenem Applikations-Co-Bundle 46 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
  • 47. JavaFXPorts: JavaFX on Mobile and Tablets Package your JavaFX Application for deployment on iOS and Android • JavaFX on client, desktop, laptop and embedded systems • JavaFX on mobile and tablets • JavaFXPorts 8.60.9 released • Why is a port needed? - Isn't Java Write Once Run Anywhere? 47 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. • Why is a port needed? - Isn't Java Write Once Run Anywhere? OpenJDK http://javafxports.org/page/home
  • 48. Zusammenfassung JavaFX is the strategic Java UI technology for rich client applications Unified development of Java and Web applications • Browser Plug-in, Web Start, Native Executables • Hardware Accelerated Graphics (DirectX, ..) • JavaFX Web View based on WebKit ‒ JavaFX with WebView for HTML5 features 48 Copyright © 2017 Oracle and/or its affiliates. All rights reserved. ‒ JavaFX with WebView for HTML5 features ‒ Improved JavaScript Engine ‒ JavaFX as applet integrated to run in a web page • IDE support for Eclipse e(fx)clipse, IntelliJ, IDEA, NetBeans, etc. • Private vs. JavaFX Public API with JDK 9 Wanted JavaFX for mobile operating systems iOS & Android - desirable Developer community could make use of the JavaFX Open Source process • Get hands-on porting for iOS and Android
  • 49. Danke! [email protected] Twitter: wolflook 49 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.