SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
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.

Contenu connexe

Tendances

Monitoring and Tuning GlassFish
Monitoring and Tuning GlassFishMonitoring and Tuning GlassFish
Monitoring and Tuning GlassFishC2B2 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 dereBaris 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 GradleStrannik_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 Cloudmartinlippert
 
Grails 3.0 Preview
Grails 3.0 PreviewGrails 3.0 Preview
Grails 3.0 Previewgraemerocher
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesStrannik_2013
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with javaDPC Consulting Ltd
 
Git.From thorns to the stars
Git.From thorns to the starsGit.From thorns to the stars
Git.From thorns to the starsStrannik_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 & TriumphsDavid 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 KarafIoan Eugen Stan
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesAtlassian
 
Webcast - Making kubernetes production ready
Webcast - Making kubernetes production readyWebcast - Making kubernetes production ready
Webcast - Making kubernetes production readyApplatix
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceAlex Tumanoff
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersSarah Dutkiewicz
 

Tendances (20)

Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9
 
Monitoring and Tuning GlassFish
Monitoring and Tuning GlassFishMonitoring and Tuning GlassFish
Monitoring and Tuning GlassFish
 
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)
 
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
 
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
 
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
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
 
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
 
Grails 3.0 Preview
Grails 3.0 PreviewGrails 3.0 Preview
Grails 3.0 Preview
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypes
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
 
Git.From thorns to the stars
Git.From thorns to the starsGit.From thorns to the stars
Git.From thorns to the stars
 
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...
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
 
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
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 Issues
 
Webcast - Making kubernetes production ready
Webcast - Making kubernetes production readyWebcast - Making kubernetes production ready
Webcast - Making kubernetes production ready
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
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
 

Similaire à Development with JavaFX 9 in JDK 9.0.1

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-onBill Ott
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: OverviewTarun 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 OpenJDKWolfgang 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 IntroductionJohn 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 developmentClarence Ho
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote presoArtur Alves
 
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cDeveloping Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cBruno Borges
 
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 ApplicationsArun Gupta
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011Arun 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 PlatformPraveen Srivastava
 
Evaluation Ria Frameworks
Evaluation Ria FrameworksEvaluation Ria Frameworks
Evaluation Ria FrameworksRishi Singh
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloudlennartkats
 
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 TriumphsDavid 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 RoundupMurat Yener
 

Similaire à 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
 
Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-on
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: Overview
 
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
 
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
 
desktop_resume
desktop_resumedesktop_resume
desktop_resume
 
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
 
Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
 
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cDeveloping Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
 
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
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
JavaFx
JavaFxJavaFx
JavaFx
 
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
 
Evaluation Ria Frameworks
Evaluation Ria FrameworksEvaluation Ria Frameworks
Evaluation Ria Frameworks
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
Oleksandr Denysiuk "Modern Digital Enterprises"
Oleksandr Denysiuk "Modern Digital Enterprises"Oleksandr Denysiuk "Modern Digital Enterprises"
Oleksandr Denysiuk "Modern Digital Enterprises"
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
 
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
 
Eclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client RoundupEclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client Roundup
 
Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...
Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...
Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...
 

Plus de 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 15Wolfgang 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 11Wolfgang 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 ContainerWolfgang Weigend
 
JDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemJDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemWolfgang Weigend
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computingWolfgang Weigend
 
Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017Wolfgang 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_jigsawWolfgang 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 weitergehtWolfgang Weigend
 
Automated testing of JavaFX GUI components
Automated testing of JavaFX GUI componentsAutomated testing of JavaFX GUI components
Automated testing of JavaFX GUI componentsWolfgang 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 recorderWolfgang Weigend
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI componentsWolfgang 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_vollWolfgang Weigend
 
Jm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornJm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornWolfgang 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 EntwicklerWolfgang Weigend
 

Plus de 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
 
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
 
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
 
JDK versions and OpenJDK
JDK versions and OpenJDKJDK versions and OpenJDK
JDK versions and OpenJDK
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
Microservices and Container
Microservices and ContainerMicroservices and Container
Microservices and Container
 
JDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemJDK 9 Java Platform Module System
JDK 9 Java Platform Module System
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017Java Flight Recorder Javamagazin May 2017
Java Flight Recorder Javamagazin May 2017
 
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
 
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
 
Automated testing of JavaFX GUI components
Automated testing of JavaFX GUI componentsAutomated testing of JavaFX GUI components
Automated testing of JavaFX GUI components
 
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
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI components
 
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
 
JavaFX goes open source
JavaFX goes open sourceJavaFX goes open source
JavaFX goes open source
 
Jm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornJm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashorn
 
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
 

Dernier

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 

Dernier (20)

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 

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 – 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
  • 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 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
  • 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! Wolfgang.Weigend@oracle.com Twitter: wolflook 49 Copyright © 2017 Oracle and/or its affiliates. All rights reserved.