SlideShare ist ein Scribd-Unternehmen logo
Real-World Apps
Dirk Lemmermann & Alexander Casall
JavaOne 2015, CON 3907
Alexander Casall
Software Architect & Scrum Product Owner
@sialcasa
Custom Software Development Company in Germany
Dresden, Munich, Berlin, Hamburg, Leipzig…
225 employees
3 Scrum Teams in JavaFX Projects
±7 consultants supporting JavaFX projects on customer side
Dirk Lemmermann
• Java / JavaFX Freelancer in Zurich, Switzerland
• Framework Developer
• Previously: CMU Robotics Institute Pittsburgh,
Skyva International Boston, Credit Suisse Zurich
• Twitter: @dlemmermann
• Blog: http://dlemmermann.wordpress.com
Company: Ingenieurgesellschaft Auto und Verkehr
Application: IAV AMeDA Template Editor
Domain: Automotive Engineering
IAV AMeDA steht für "Automatisierte Messdaten Analyse". Die Anwendung
ermöglicht es, Messdateien von ganzen Fahrzeugflotten hinsichtlich
bestimmter Kriterien zu analysieren. Dabei liegt der Schwerpunkt auf
Massendaten, die sich aufgrund der Menge nicht mehr interaktiv
analysieren lassen. Damit AMeDA weiß, was es zu tun hat, muss es
konfiguriert werden. Eine sogenannte Analysekonfiguration besteht aus
einer Vielzahl von Dateien. Je komplizierter die Analyse, desto
umfangreicher die zugehörige Konfiguration. Der Anwender soll bei der
Erstellung von Analysekonfigurationen unterstützt werden. Grundsätzlich
wäre die Erstellung von Hand in einem Texteditor möglich. In der
Anfangszeit von AMeDA (2006 - 2010) wurden die Analysekonfiguration
tatsächlich auch noch von Hand erstellt. Aufgrund der steigenden
Komplexität einer einzelnen Analysekonfiguration ist dies heute nur noch
mit sehr viel Hintergrundwissen möglich. Ab 2010 etwa wurde die alte
Swing-Variante des IAV TemplateEditor von den Kunden eingesetzt.
Zielgruppe waren hier ausschließlich interne Kunden, also IAV Mitarbeiter,
die für verschiedene Fahrzeughersteller Dienstleistungen erbracht haben. 

Die neue JavaFX-Variante des IAV TemplateEditor hat als Zielgruppe neben
den internen Kunden auch Mitarbeiter von Fahrzeugherstellern. Wir haben
das Ziel, aus dem internen Tool, ein Produkt zu machen. Eine Mischung
aus Swing- und JavaFX-Fenstern kam für uns nicht in Frage, da es die
Bedienbarkeit stört und optisch nicht sehr gelungen aussieht. Die alte
Swing-Anwendung ist optisch kein Highlight und das Bedienkonzept ist
auch nicht ganz rund. Für ein internes Tool in Ordnung, für ein Produkt für
externe Kunden zu wenig. Aus diesem Grund haben wir uns entschieden,
IAV AMeDA
1 Upload of vehicle data
2 analysis based on templates
3 result visualisation
The FX-Tool (Template Editor) creates templates for
configuring the analysis platform AMeDAIAV AMeDA
Preset Analysis Template Configuration
Analysis Configuration
User enters data
IAV AMeDA
What the template editor does
Ziel - keinen Java Code schreiben wenn ein
neues Template erzeugt wird

Templates werden verkauft
1. DataSource: Der Anwender wählt die zu
analysierende Messdatei. Die Messdatei
dient nur als Beispiel für die Erstellung der
Analysekonfiguration. Bei Ausführung im
Backend werden die Messdateien von
ganzen Fahrzeugflotten analysiert.
2. Templates: Der Anwender gibt die
Analyse-Vorschriften vor
FXML Meta Template
analysis configuration
=
User enters data
magical data transformation
with the Meta Template
How the template mechanism works
Ziel - keinen Java Code schreiben wenn ein
neues Template erzeugt wird

Templates werden verkauft
fx:id	
  cbxSignal
<metaTemplate>
<fragments>
<!-- major options -->
<fragment type="attr" name="name" id="cbxSignal" path="/templates/template/instance/signal[1]">
<allowedValues src="SIGNALS"/>
</fragment>
<fragment type="attr" name="min" id="tfIntervalMinimum" path="/templates/template/instance"/>
<fragment type="attr" name="max" id="tfIntervalMaximum" path="/templates/template/instance"/>
<fragment type="attr" name="alias" id="txtAxisLabel" path="/templates/template/instance"/>
<fragment type="attr" name="mode" id="cbpCounterType" path="/templates/template/instance">
<mappings>
<mapping key="te.templates.statistics.counter.type.simple" value="simple"/>
<mapping key="te.templates.statistics.counter.type.timeSum" value="timeSum"/>
<mapping key="te.templates.statistics.counter.type.otherSignalSum" value="otherSignalSum"/>
</mappings>
<allowedValues>
<value>te.templates.statistics.counter.type.simple</value>
<value>te.templates.statistics.counter.type.timeSum</value>
<value>te.templates.statistics.counter.type.otherSignalSum</value>
</allowedValues>
</fragment>
<!-- time sum options -->
<fragment type="attr" name="delay" id="tfTimeSumTimeout" path="/templates/template/instance"/>
<!-- other signal sum options -->
<fragment type="attr" name="name" id="cbxSignalSumSignal" path="/templates/template/instance/signal[2]">
<allowedValues src="SIGNALS"/>
</fragment>
</fragments>
<templates>
Meta Template with data transformation Rules
3. CounterTemplate: Beispiel der Eingabe
der Parameter für ein Template. Die
Dialoge für die einzelnen Templates
werden durch einen speziellen
Mechanismus bestehend aus FXML und
XML erstellt.
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<template>
<evaluator>CounterEvaluator</evaluator>
<instance min="1.0" max="2.0" alias="" mode="timeSum" delay="10.0">
<signal name="MySignal" />
</instance>
<description short="CountSignal" metaTemplate="statistics/counter">MySignal, interval 1.0 to 2.0</description
<content>
<trigger mode="none" />
</content>
</template>
</templates>
This is the finished configuration for the analysis which is
ready to be uploaded to the IAV AMeDA Platform
4. Darstellung der Ergebnis-Dateien der
Analyse. Der Anwender kann auf die
Verlinkungen klicken und es öffnet sich die
Anwendung, welche auf Betriebssystem-
Ebene mit der Dateiendung verknüpft ist.
Technical Info
3rd party libs mvvmFX with Weld-SE, ControlsFX,
FontAwesomeFX, Guava, JDOM, JUnit, TestFX, Mockito + AssertJ
Tools IntelliJ, Scene Builder, ScenicView
UI-Architecture: MVVM
Additional Information	
  
400 UnitTests (45% Coverage)
300 IT- and UI-Tests (With UnitTests 90% Coverage)
No Swing mix cause of visual inconsistency and threading
Company: Emirates Airlines
App: Network Capacity Optimization
Domain: Resource Scheduling
Location: Dubai, UAE
Network Capacity
Optimization
• Users: Network Planning Department
• Go live: within next 3 months
• Budget: 7 Million Dhirams ($2 Million)
• 9 Months Development
• 20 Developers, 8 on UI
• 50,000 classes
JavaFX Real-World Apps
Tech Info
• JBoss Application Server
• 3rd Party Libs: ControlsFX & FlexGanttFX
• Maven
• Eclipse
- Herausforderungen sind dabei unter anderem Threading-Verhalten zwischen EDT
und Fx-Thread vor allem beim Rendern von UI-Komponenten

- hatten wir am Anfang oftmals Probleme mit Threadverletzungen

	 - z.B. Menüpunkte rufen Funktionalitäten aus JavaFxKomponenten auf. Da
es eine Swing Anwendung ist, gibt es den Wechsel Swing->FX

	 - FX Komponenten kommunizieren über einen Swing Rahmen mit anderen
FX Komponenten. z.B. aus der TNG werden Dokumente in die WA übernommen.
Company: Carl Zeiss Meditec AG
Application: FORUM
Domain: Medical
JavaFX Real-World Apps
JavaFX Real-World Apps
JavaFX
Swing
Swing
clinical-screen-workingarea-fx.jpg

- ist in SpringRcp implmentiert

- die einzelnen "Parts" sind wieder
JFxPanels mit JavaFx Komponenten
integriert (bspw. blaue Rahmen & Header,
'X'-Button)

- ABER: Dokumentkomponenten an sich
(Bilder, PDFs) sind Swing-Komponenten
(also Swing => Fx => Swing geschachtelt)
JavaFX Real-World Apps
JavaFX
Swing
Technical Infos
• Todo
Swing
Technical Infos
• Todo
Swing
JavaFX
- Plugins 

- Plugins are written in FX

- Plugins can attach to Menu-components
of the frame
JavaFX
Swing
Technical Info
3rd party libs SpringRCP, ControlsFX
Tools IntelliJ, Eclipse
Additional Information struggling with threads
goal of the migration is e(fx)clipse
JavaFX Real-World Apps
Company: EIZO
Application: CALIOP Surgery Panel
Domain: Medical
Location: Karlsruhe, Germany
HTML Mockup
JavaFX Real-World Apps
JavaFX Real-World Apps
3rd Party Client Technology
• ControlsFX
• for additional controls
• afterburner.fx
• for harnessing the complexity (modules)
• FontAwesomeFX
• for pretty icons (HTML mockup also used
FontAwesome)
Company: German AIDS Foundation
Application: AIDA
Domain: Office Integration
$
Printed Letter &
Money Transfer
Responsible person processes
the application
Somebody scans
the application
Infected people apply
for a grant
JavaFX Real-World Apps
JavaFX Real-World Apps
JavaFX Real-World Apps
Technical Info
3rd party libs mvvmFX with Weld-SE, icafe, ImageIO,
libsepa, JUnit, AssertJ, CDI, CDI-Unit, DbSetup, Flyway,
Tools Eclipse & IntelliJ, Scene Builder, ScenicView,
JVisualVM, Eclipse Memory Analysis Tool
UI-Architecture: MVVM
Additional Information	
  
400 UnitTests, 300 IT- and UI-Tests
Company: AISO
App: HRC-Matic
Domain: Business Registry
Location: Geneva, CH
HRC-Matic
• Business Registry Software
• Manages requests for registration, modification, or
cancellation of companies.
• 170,000 lines of code, 3400 classes
• Budget: $1.8 Million
JavaFX Real-World Apps
JavaFX Real-World Apps
JavaFX Real-World Apps
HRC-Matic
Challenges
• Focus Management
• TableView Control (support for direct editing)
• Missing Controls (LoV Box, Autosuggest)
HRC-Matic
Why not HTML?
• No guarantee of sustainability.
• Short term technology life cycle.
• Low performance risk.
• Compatibility risks with various web browsers used
by our customers.
• Upgrade costs due to a change in web technology.
Company: Open Source (www.saring.de/sportstracker)
Application: Sportstracker
Domain: Sports / Fitness
JavaFX Real-World Apps
Technical Info
3rd party libs Guice, JFreeChart, JDOM, JXMapViewer2,
ControlsFX, jfx-testrunner, Mockito, JUnit, FIT Protocol
SDK
Tools IntelliJ IDEA, Scene Builder,
UI-Architecture MVC / MVVM
Additional Infos Swing integration cause of missing
functionality of FX-Charts
Company: PROJEKT PRO GmbH
App: Resource Simulator
Domain: Architecture
Location: Bavaria
PRO Simulation
• Used for intuitive scheduling of human and
monetary resources
• Explore different scenarios, pick best one
• Part of ProjektPRO product family
• FileMaker-based
• Controlling, project, and office management
• Used by architects and engineers
RDMS RDMS
JavaFX Real-World Apps
Technical Info
• Maven, Eclipse, GIT (Bitbucket)
• FontAwesomeFX
• ControlsFX
• FlexGanttFX
• Hibernate
• SQLite
Company: Saxonia Systems AG
Application: eteoBoard
Domain: Software Development
JavaFX Real-World Apps
Technical Info
3rd party libs mvvmFX with Weld-SE, ControlsFX,
SynchronizeFX
Tools Eclipse, Scene Builder, ScenicView, JVisualVM,
Eclipse Memory Analysis Tool
UI-Architecture: MVC / MVVM
Company: European Broadcasting Union (EBU)
Application: NEOS - New Eurovision Operations System
Domain: TV and Radio Broadcasting
Location: Geneva, Switzerland
NEOS
• 150 dispatchers at EBU
• Planning TV and radio transmissions from A to B
• Budget: $3 Million
• 15 Developers
• 2000 classes, 1000 UI
JavaFX Real-World Apps
JavaFX Real-World Apps
JavaFX Real-World Apps
Tech Info
• ControlsFX
• afterburner.fx
• FlexGanttFX
• JEntityFX
Company: MINT Software Systems
Application: MINT TRMS
Domain: Training and Resource Management (Airlines)
Location: Kiel, Germany
MINT TRMS
• Used by training departments of airlines, technical
facilities and production companies in the aviation
and other training intensive industries.
• Used for records and skill management, training
planning, electronic online and offline grading and
e-learning.
• JavaFX version is operational since 2013 (earlier
versions sind 1998)
MINT TRMS
Tech Info
• 8 - 10 developers on UI and backend
• Total: 1.8 million lines of code, 6300 classes
• JavaFX: 1.1 million lines of code, 4800 classes (inc.
Swing left-overs)
• 3rd party frameworks: ControlsFX, FlexGanttFX
JavaFX Real-World Apps
JavaFX Real-World Apps
MINT TRMS
Issues
• Switching to new update release makes product
incompatible with older Java versions: customers
do not like that!
• Still a lot of Swing code that is causing issues: drag
& drop, layout, threading, window ownership. ETC /
App thread communication.
• Read also: https://dlemmermann.wordpress.com/
2014/07/17/javafx-tip-9-do-not-mix-swing-javafx/
Q & A
References A
• http://www.dlsc.com
• http://www.saxsys.de
• http://www.calendarfx.com
• http://www.flexganttfx.com
• http://dlemmermann.wordpress.com
References B
• http://www.fxexperience.com
• http://www.scenic-view.org
• http://controlsfx.org
• http://afterburner.adam-bien.com
• http://gluonhq.com/open-source/scene-builder/

Weitere ähnliche Inhalte

Was ist angesagt?

Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Niels de Bruijn
 
Java FX8 JumpStart - JUG ch - zürich
Java FX8   JumpStart - JUG ch - zürichJava FX8   JumpStart - JUG ch - zürich
Java FX8 JumpStart - JUG ch - zürich
Sven Ruppert
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Spring
denschu
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
Marc Müller
 
JSF Testing - Tools und Technics
JSF Testing - Tools und TechnicsJSF Testing - Tools und Technics
JSF Testing - Tools und Technics
adesso AG
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Philipp Burgmer
 
REST mit APEX 18.1
REST mit APEX 18.1REST mit APEX 18.1
REST mit APEX 18.1
Oliver Lemm
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Ralf Sigmund
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
guestc44b7b
 

Was ist angesagt? (9)

Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
Java FX8 JumpStart - JUG ch - zürich
Java FX8   JumpStart - JUG ch - zürichJava FX8   JumpStart - JUG ch - zürich
Java FX8 JumpStart - JUG ch - zürich
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Spring
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
JSF Testing - Tools und Technics
JSF Testing - Tools und TechnicsJSF Testing - Tools und Technics
JSF Testing - Tools und Technics
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
REST mit APEX 18.1
REST mit APEX 18.1REST mit APEX 18.1
REST mit APEX 18.1
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
 

Andere mochten auch

JavaFX Layout Secrets with Amy Fowler
JavaFX Layout Secrets with Amy FowlerJavaFX Layout Secrets with Amy Fowler
JavaFX Layout Secrets with Amy Fowler
Stephen Chin
 
FXML for Structure, CSS for Styling and JavaFX as Standard GUI Library
FXML for Structure, CSS for Styling and JavaFX as Standard GUI LibraryFXML for Structure, CSS for Styling and JavaFX as Standard GUI Library
FXML for Structure, CSS for Styling and JavaFX as Standard GUI Library
Yuichi Sakuraba
 
Как улучшить результаты, используя софт для рекрутинга
 Как улучшить результаты, используя софт для рекрутинга Как улучшить результаты, используя софт для рекрутинга
Как улучшить результаты, используя софт для рекрутинга
CleverStaff
 
кобзар
кобзаркобзар
кобзар
semyurihor
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
Nikita Lipsky
 
урок ц о
урок ц оурок ц о
урок ц о
semyurihor
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Nikita Lipsky
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
metaform
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
metaform
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Java
aragozin
 
8 True Stories about JavaFX
8 True Stories about JavaFX8 True Stories about JavaFX
8 True Stories about JavaFX
Yuichi Sakuraba
 
JavaFX 8 - GUI by Illusion
JavaFX 8 - GUI by IllusionJavaFX 8 - GUI by Illusion
JavaFX 8 - GUI by Illusion
Yuichi Sakuraba
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
Mochamad Taufik Mulyadi
 
JavaFX Pitfalls
JavaFX PitfallsJavaFX Pitfalls
JavaFX Pitfalls
Alexander Casall
 
Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"
LogeekNightUkraine
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
Volker Hirsch
 

Andere mochten auch (16)

JavaFX Layout Secrets with Amy Fowler
JavaFX Layout Secrets with Amy FowlerJavaFX Layout Secrets with Amy Fowler
JavaFX Layout Secrets with Amy Fowler
 
FXML for Structure, CSS for Styling and JavaFX as Standard GUI Library
FXML for Structure, CSS for Styling and JavaFX as Standard GUI LibraryFXML for Structure, CSS for Styling and JavaFX as Standard GUI Library
FXML for Structure, CSS for Styling and JavaFX as Standard GUI Library
 
Как улучшить результаты, используя софт для рекрутинга
 Как улучшить результаты, используя софт для рекрутинга Как улучшить результаты, используя софт для рекрутинга
Как улучшить результаты, используя софт для рекрутинга
 
кобзар
кобзаркобзар
кобзар
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
 
урок ц о
урок ц оурок ц о
урок ц о
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Java
 
8 True Stories about JavaFX
8 True Stories about JavaFX8 True Stories about JavaFX
8 True Stories about JavaFX
 
JavaFX 8 - GUI by Illusion
JavaFX 8 - GUI by IllusionJavaFX 8 - GUI by Illusion
JavaFX 8 - GUI by Illusion
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
 
JavaFX Pitfalls
JavaFX PitfallsJavaFX Pitfalls
JavaFX Pitfalls
 
Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
 

Ähnlich wie JavaFX Real-World Apps

Citrix Day 2014: APPDNA
Citrix Day 2014: APPDNACitrix Day 2014: APPDNA
Citrix Day 2014: APPDNA
Digicomp Academy AG
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous Integration
Milena Reichel
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
QAware GmbH
 
BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...
BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...
BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...
BATbern
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009
Andreas Schulte
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
Andreas Schreiber
 
Cloud – der nächste Schritt der Diagnose (German)
Cloud – der nächste Schritt der Diagnose (German)Cloud – der nächste Schritt der Diagnose (German)
Cloud – der nächste Schritt der Diagnose (German)
KPIT
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Andreas Schreiber
 
Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?
Christian Baranowski
 
CodeFluent Entities and AppSofa
CodeFluent Entities and AppSofaCodeFluent Entities and AppSofa
CodeFluent Entities and AppSofa
Mykola Dobrochynskyy
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Nico Orschel
 
ScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungScriptRunner - Eine Einführung
ScriptRunner - Eine Einführung
Heiko Brenn
 
Migration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud PlattformMigration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud Plattform
QAware GmbH
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für Fortgeschrittende
Nico Orschel
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
Eduard Hildebrandt
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
Patric Boscolo
 
Enterprise APEX
Enterprise APEXEnterprise APEX
Enterprise APEX
Oliver Lemm
 
Windows 7 - Preview & Roadmap
Windows 7 - Preview & RoadmapWindows 7 - Preview & Roadmap
Windows 7 - Preview & Roadmap
Georg Binder
 
Dtq4_deu
Dtq4_deuDtq4_deu
Dtq4_deu
DTQ4
 

Ähnlich wie JavaFX Real-World Apps (20)

Citrix Day 2014: APPDNA
Citrix Day 2014: APPDNACitrix Day 2014: APPDNA
Citrix Day 2014: APPDNA
 
imatics FormEngine
imatics FormEngineimatics FormEngine
imatics FormEngine
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous Integration
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...
BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...
BAT40 Mobiliar Koller Mösching AI@Mobiliar Wie AI-Services in der Mobiliar ge...
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
 
Cloud – der nächste Schritt der Diagnose (German)
Cloud – der nächste Schritt der Diagnose (German)Cloud – der nächste Schritt der Diagnose (German)
Cloud – der nächste Schritt der Diagnose (German)
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
 
Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?
 
CodeFluent Entities and AppSofa
CodeFluent Entities and AppSofaCodeFluent Entities and AppSofa
CodeFluent Entities and AppSofa
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
 
ScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungScriptRunner - Eine Einführung
ScriptRunner - Eine Einführung
 
Migration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud PlattformMigration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud Plattform
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für Fortgeschrittende
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Enterprise APEX
Enterprise APEXEnterprise APEX
Enterprise APEX
 
Windows 7 - Preview & Roadmap
Windows 7 - Preview & RoadmapWindows 7 - Preview & Roadmap
Windows 7 - Preview & Roadmap
 
Dtq4_deu
Dtq4_deuDtq4_deu
Dtq4_deu
 

JavaFX Real-World Apps

  • 1. Real-World Apps Dirk Lemmermann & Alexander Casall JavaOne 2015, CON 3907
  • 2. Alexander Casall Software Architect & Scrum Product Owner @sialcasa Custom Software Development Company in Germany Dresden, Munich, Berlin, Hamburg, Leipzig… 225 employees 3 Scrum Teams in JavaFX Projects ±7 consultants supporting JavaFX projects on customer side
  • 3. Dirk Lemmermann • Java / JavaFX Freelancer in Zurich, Switzerland • Framework Developer • Previously: CMU Robotics Institute Pittsburgh, Skyva International Boston, Credit Suisse Zurich • Twitter: @dlemmermann • Blog: http://dlemmermann.wordpress.com
  • 4. Company: Ingenieurgesellschaft Auto und Verkehr Application: IAV AMeDA Template Editor Domain: Automotive Engineering IAV AMeDA steht für "Automatisierte Messdaten Analyse". Die Anwendung ermöglicht es, Messdateien von ganzen Fahrzeugflotten hinsichtlich bestimmter Kriterien zu analysieren. Dabei liegt der Schwerpunkt auf Massendaten, die sich aufgrund der Menge nicht mehr interaktiv analysieren lassen. Damit AMeDA weiß, was es zu tun hat, muss es konfiguriert werden. Eine sogenannte Analysekonfiguration besteht aus einer Vielzahl von Dateien. Je komplizierter die Analyse, desto umfangreicher die zugehörige Konfiguration. Der Anwender soll bei der Erstellung von Analysekonfigurationen unterstützt werden. Grundsätzlich wäre die Erstellung von Hand in einem Texteditor möglich. In der Anfangszeit von AMeDA (2006 - 2010) wurden die Analysekonfiguration tatsächlich auch noch von Hand erstellt. Aufgrund der steigenden Komplexität einer einzelnen Analysekonfiguration ist dies heute nur noch mit sehr viel Hintergrundwissen möglich. Ab 2010 etwa wurde die alte Swing-Variante des IAV TemplateEditor von den Kunden eingesetzt. Zielgruppe waren hier ausschließlich interne Kunden, also IAV Mitarbeiter, die für verschiedene Fahrzeughersteller Dienstleistungen erbracht haben. Die neue JavaFX-Variante des IAV TemplateEditor hat als Zielgruppe neben den internen Kunden auch Mitarbeiter von Fahrzeugherstellern. Wir haben das Ziel, aus dem internen Tool, ein Produkt zu machen. Eine Mischung aus Swing- und JavaFX-Fenstern kam für uns nicht in Frage, da es die Bedienbarkeit stört und optisch nicht sehr gelungen aussieht. Die alte Swing-Anwendung ist optisch kein Highlight und das Bedienkonzept ist auch nicht ganz rund. Für ein internes Tool in Ordnung, für ein Produkt für externe Kunden zu wenig. Aus diesem Grund haben wir uns entschieden,
  • 5. IAV AMeDA 1 Upload of vehicle data 2 analysis based on templates 3 result visualisation The FX-Tool (Template Editor) creates templates for configuring the analysis platform AMeDAIAV AMeDA
  • 6. Preset Analysis Template Configuration Analysis Configuration User enters data IAV AMeDA What the template editor does Ziel - keinen Java Code schreiben wenn ein neues Template erzeugt wird Templates werden verkauft
  • 7. 1. DataSource: Der Anwender wählt die zu analysierende Messdatei. Die Messdatei dient nur als Beispiel für die Erstellung der Analysekonfiguration. Bei Ausführung im Backend werden die Messdateien von ganzen Fahrzeugflotten analysiert.
  • 8. 2. Templates: Der Anwender gibt die Analyse-Vorschriften vor
  • 9. FXML Meta Template analysis configuration = User enters data magical data transformation with the Meta Template How the template mechanism works Ziel - keinen Java Code schreiben wenn ein neues Template erzeugt wird Templates werden verkauft
  • 11. <metaTemplate> <fragments> <!-- major options --> <fragment type="attr" name="name" id="cbxSignal" path="/templates/template/instance/signal[1]"> <allowedValues src="SIGNALS"/> </fragment> <fragment type="attr" name="min" id="tfIntervalMinimum" path="/templates/template/instance"/> <fragment type="attr" name="max" id="tfIntervalMaximum" path="/templates/template/instance"/> <fragment type="attr" name="alias" id="txtAxisLabel" path="/templates/template/instance"/> <fragment type="attr" name="mode" id="cbpCounterType" path="/templates/template/instance"> <mappings> <mapping key="te.templates.statistics.counter.type.simple" value="simple"/> <mapping key="te.templates.statistics.counter.type.timeSum" value="timeSum"/> <mapping key="te.templates.statistics.counter.type.otherSignalSum" value="otherSignalSum"/> </mappings> <allowedValues> <value>te.templates.statistics.counter.type.simple</value> <value>te.templates.statistics.counter.type.timeSum</value> <value>te.templates.statistics.counter.type.otherSignalSum</value> </allowedValues> </fragment> <!-- time sum options --> <fragment type="attr" name="delay" id="tfTimeSumTimeout" path="/templates/template/instance"/> <!-- other signal sum options --> <fragment type="attr" name="name" id="cbxSignalSumSignal" path="/templates/template/instance/signal[2]"> <allowedValues src="SIGNALS"/> </fragment> </fragments> <templates> Meta Template with data transformation Rules
  • 12. 3. CounterTemplate: Beispiel der Eingabe der Parameter für ein Template. Die Dialoge für die einzelnen Templates werden durch einen speziellen Mechanismus bestehend aus FXML und XML erstellt.
  • 13. <?xml version="1.0" encoding="UTF-8"?> <templates> <template> <evaluator>CounterEvaluator</evaluator> <instance min="1.0" max="2.0" alias="" mode="timeSum" delay="10.0"> <signal name="MySignal" /> </instance> <description short="CountSignal" metaTemplate="statistics/counter">MySignal, interval 1.0 to 2.0</description <content> <trigger mode="none" /> </content> </template> </templates> This is the finished configuration for the analysis which is ready to be uploaded to the IAV AMeDA Platform
  • 14. 4. Darstellung der Ergebnis-Dateien der Analyse. Der Anwender kann auf die Verlinkungen klicken und es öffnet sich die Anwendung, welche auf Betriebssystem- Ebene mit der Dateiendung verknüpft ist.
  • 15. Technical Info 3rd party libs mvvmFX with Weld-SE, ControlsFX, FontAwesomeFX, Guava, JDOM, JUnit, TestFX, Mockito + AssertJ Tools IntelliJ, Scene Builder, ScenicView UI-Architecture: MVVM Additional Information   400 UnitTests (45% Coverage) 300 IT- and UI-Tests (With UnitTests 90% Coverage) No Swing mix cause of visual inconsistency and threading
  • 16. Company: Emirates Airlines App: Network Capacity Optimization Domain: Resource Scheduling Location: Dubai, UAE
  • 17. Network Capacity Optimization • Users: Network Planning Department • Go live: within next 3 months • Budget: 7 Million Dhirams ($2 Million) • 9 Months Development • 20 Developers, 8 on UI • 50,000 classes
  • 19. Tech Info • JBoss Application Server • 3rd Party Libs: ControlsFX & FlexGanttFX • Maven • Eclipse
  • 20. - Herausforderungen sind dabei unter anderem Threading-Verhalten zwischen EDT und Fx-Thread vor allem beim Rendern von UI-Komponenten - hatten wir am Anfang oftmals Probleme mit Threadverletzungen - z.B. Menüpunkte rufen Funktionalitäten aus JavaFxKomponenten auf. Da es eine Swing Anwendung ist, gibt es den Wechsel Swing->FX - FX Komponenten kommunizieren über einen Swing Rahmen mit anderen FX Komponenten. z.B. aus der TNG werden Dokumente in die WA übernommen. Company: Carl Zeiss Meditec AG Application: FORUM Domain: Medical
  • 23. JavaFX Swing Swing clinical-screen-workingarea-fx.jpg - ist in SpringRcp implmentiert - die einzelnen "Parts" sind wieder JFxPanels mit JavaFx Komponenten integriert (bspw. blaue Rahmen & Header, 'X'-Button) - ABER: Dokumentkomponenten an sich (Bilder, PDFs) sind Swing-Komponenten (also Swing => Fx => Swing geschachtelt)
  • 28. - Plugins - Plugins are written in FX - Plugins can attach to Menu-components of the frame
  • 30. Technical Info 3rd party libs SpringRCP, ControlsFX Tools IntelliJ, Eclipse Additional Information struggling with threads goal of the migration is e(fx)clipse
  • 32. Company: EIZO Application: CALIOP Surgery Panel Domain: Medical Location: Karlsruhe, Germany
  • 36. 3rd Party Client Technology • ControlsFX • for additional controls • afterburner.fx • for harnessing the complexity (modules) • FontAwesomeFX • for pretty icons (HTML mockup also used FontAwesome)
  • 37. Company: German AIDS Foundation Application: AIDA Domain: Office Integration
  • 38. $ Printed Letter & Money Transfer Responsible person processes the application Somebody scans the application Infected people apply for a grant
  • 42. Technical Info 3rd party libs mvvmFX with Weld-SE, icafe, ImageIO, libsepa, JUnit, AssertJ, CDI, CDI-Unit, DbSetup, Flyway, Tools Eclipse & IntelliJ, Scene Builder, ScenicView, JVisualVM, Eclipse Memory Analysis Tool UI-Architecture: MVVM Additional Information   400 UnitTests, 300 IT- and UI-Tests
  • 43. Company: AISO App: HRC-Matic Domain: Business Registry Location: Geneva, CH
  • 44. HRC-Matic • Business Registry Software • Manages requests for registration, modification, or cancellation of companies. • 170,000 lines of code, 3400 classes • Budget: $1.8 Million
  • 48. HRC-Matic Challenges • Focus Management • TableView Control (support for direct editing) • Missing Controls (LoV Box, Autosuggest)
  • 49. HRC-Matic Why not HTML? • No guarantee of sustainability. • Short term technology life cycle. • Low performance risk. • Compatibility risks with various web browsers used by our customers. • Upgrade costs due to a change in web technology.
  • 50. Company: Open Source (www.saring.de/sportstracker) Application: Sportstracker Domain: Sports / Fitness
  • 52. Technical Info 3rd party libs Guice, JFreeChart, JDOM, JXMapViewer2, ControlsFX, jfx-testrunner, Mockito, JUnit, FIT Protocol SDK Tools IntelliJ IDEA, Scene Builder, UI-Architecture MVC / MVVM Additional Infos Swing integration cause of missing functionality of FX-Charts
  • 53. Company: PROJEKT PRO GmbH App: Resource Simulator Domain: Architecture Location: Bavaria
  • 54. PRO Simulation • Used for intuitive scheduling of human and monetary resources • Explore different scenarios, pick best one • Part of ProjektPRO product family • FileMaker-based • Controlling, project, and office management • Used by architects and engineers
  • 57. Technical Info • Maven, Eclipse, GIT (Bitbucket) • FontAwesomeFX • ControlsFX • FlexGanttFX • Hibernate • SQLite
  • 58. Company: Saxonia Systems AG Application: eteoBoard Domain: Software Development
  • 60. Technical Info 3rd party libs mvvmFX with Weld-SE, ControlsFX, SynchronizeFX Tools Eclipse, Scene Builder, ScenicView, JVisualVM, Eclipse Memory Analysis Tool UI-Architecture: MVC / MVVM
  • 61. Company: European Broadcasting Union (EBU) Application: NEOS - New Eurovision Operations System Domain: TV and Radio Broadcasting Location: Geneva, Switzerland
  • 62. NEOS • 150 dispatchers at EBU • Planning TV and radio transmissions from A to B • Budget: $3 Million • 15 Developers • 2000 classes, 1000 UI
  • 66. Tech Info • ControlsFX • afterburner.fx • FlexGanttFX • JEntityFX
  • 67. Company: MINT Software Systems Application: MINT TRMS Domain: Training and Resource Management (Airlines) Location: Kiel, Germany
  • 68. MINT TRMS • Used by training departments of airlines, technical facilities and production companies in the aviation and other training intensive industries. • Used for records and skill management, training planning, electronic online and offline grading and e-learning. • JavaFX version is operational since 2013 (earlier versions sind 1998)
  • 69. MINT TRMS Tech Info • 8 - 10 developers on UI and backend • Total: 1.8 million lines of code, 6300 classes • JavaFX: 1.1 million lines of code, 4800 classes (inc. Swing left-overs) • 3rd party frameworks: ControlsFX, FlexGanttFX
  • 72. MINT TRMS Issues • Switching to new update release makes product incompatible with older Java versions: customers do not like that! • Still a lot of Swing code that is causing issues: drag & drop, layout, threading, window ownership. ETC / App thread communication. • Read also: https://dlemmermann.wordpress.com/ 2014/07/17/javafx-tip-9-do-not-mix-swing-javafx/
  • 73. Q & A
  • 74. References A • http://www.dlsc.com • http://www.saxsys.de • http://www.calendarfx.com • http://www.flexganttfx.com • http://dlemmermann.wordpress.com
  • 75. References B • http://www.fxexperience.com • http://www.scenic-view.org • http://controlsfx.org • http://afterburner.adam-bien.com • http://gluonhq.com/open-source/scene-builder/