JavaFX Real-World Playlist

I finally found some time to create a YouTube playlist with all the “Real-World” JavaFX applications that Alexander Casall and I presented at JavaOne 2015. Maybe you can find some inspiration.

The videos show the following applications:

  • EIZO – Curator Caliop
  • Emirates Airlines – Network Capacity Optimization
  • AISO – HRC-Matic Business Registry
  • European Broadcasting Union – NEOS
  • MINT Software Systems – Training and Resource Management (TRMS)

Enjoy!

JavaFX Real-World Apps: Emirates Airlines Network Capacity Optimization

Emirate Airlines’ “Network Capacity Optimization” (NCO) is the subject of this fourth installment of the “Real World Apps” series. For reference here are the first three:

2000px-Emirates_logo.svg

NCO was developed to allow the dispatchers at Emirates Airlines to optimize the usage of their plane fleet. In this application the user creates requests for new flights, cancelled flights, delayed flights, upgraded flights, etc…. NCO can then be used to create different scenarios to fulfill the requests. Each scenario is evaluated and associated with its impact on costs.

I had only a small role in this project. I consulted the development team on the integration of FlexGanttFX into NCO. Topics we had to cover were things like lazy loading strategy or editing behaviour.

The following screenshots show the application in action.

HomePage

Home Screen

Gantt-Split-4up

Gantt Chart (4-Split)

AdminPage

Admin Page

Here are the interview questions and answers for this project:

General Questions

What is the name of your product / project?

Network Capacity Optimization

How did you get the necessary JavaFX Know-How into your team? (Consultants, Internal / External training courses)?

Initially we started a proof of concept in JavaFX for two weeks and then initiated our development a month later. We got an external trainer with whom we have clarified all the issues we had encountered until then.

With which version of JavaFX did you start? 1, 2, 8?

Java 8.

When did you start developing the application and how long did it take?

We started in August 2014 and it took 9 months.

How many developers worked on it? In total and on the UI.

In total we had 20 developers. Eight of them worked on the UI.

How big is the application? Lines of code, Number of classes.

50,000 classes.

Why did you choose JavaFX as frontend technology? And very importantly: why did you not choose HTML / Web?

We had the requirement to load the data for an entire year. We evaluated several Gantt charts, some using web and some using thick client technology. FlexGanttFX was chosen because it met all our business requirements and also because our company recognised JavaFX as an emerging technology.

Was it difficult to convince decision makers to agree on JavaFX?

Yes, because the initial version of JavaFX was not very mature when we started the work and we didn’t have experts in our organization.

What were the biggest challenges / problems / issues / bugs you faced in the JavaFX part and how did you solve them?

We have faced many problems initially with JavaFX. Listing down a few

  • Action listeners on menu bar. Listeners are given at sub menu levels.

  • Complexity of tree table cell factories so that one column interacts with another.

  • Styling rich CSS for tree tables.

  • We would like to see tables in which we can freeze the columns. This was one requirement we had. Our solution (work-around) was to have two tables side by side. We then attached an external scrollbar to scroll them in synch.

  • When we applied styles on a tree table or table, using a row factory, we had issues in a cell factory that we used for implementing a col span.

Which 3rd-party products / frameworks / tools (open source and commercial) did you use and why did you choose them?

Only FlexGanttFX.

Outlook

Would you use JavaFX again for your next project? Please elaborate why or why not.

The Gantt chart is the core element inside our application. Normally we go with web technology (HTML) but if we should come across requirements like this again then we would definitely also use JavaFX again. The business users are using 27-inch monitors to see the schedule for seven days at a stretch.

Which recommendations do you have related to JavaFX for other companies / projects?

Do not have too many change listeners. We observed that it reduces the performance. CSS issues may even lead to an application crash.

JavaFX Real-World Apps: MINT TRMS

The second real-world JavaFX application that I was involved with was developed by MINT Software Systems, a company located in Kiel, Germany.

Unknown

The focus of their application is on training and resource management for companies in the aviation industry (airlines).

Screen Shot 2015-09-16 at 11.31.18

MINT is actually the reason why I got involved in JavaFX development. In early 2013 they asked me to create a version of FlexGantt for JavaFX. Until then only a Swing version existed. When they first approached me I was somewhat resistant to sign up with them because of what I had heard about JavaFX until then. But once I got into it I quickly became a JavaFX enthusiast. Why? Because I had the luxury of working with version 8 from the very beginning. I can not blame anybody who didn’t like versions 1 and 2, but 8 is a completely different story.

MINT TRMS

Especially interesting from a JavaFX point of view is the fact that this application is very big and also that it is a successful migration from Swing. The following images show the JavaFX version of the application in action:

mintpage

MINT WebAssistant

formbuilder-design

MINT Form Builder – for creating web / HTML forms

reportbuilder-design

MINT Report Builder – for creating printable reports

reportbuilder-result

MINT Report Builder – Result

The following are the answers MINT sent me for the questionnaire I sent them recently. I hope that their answers will be helpful for others when they need to make a decision on whether to go with JavaFX or not.

General Questions

What is the name of your product / project?

MINT Training and Resource Management System (MINT TRMS)

Who are your users / customers?

Training departments of airlines, technical facilities and production companies in the aviation and other training intensive industries.

What is the purpose of your software? What are its benefits?

The MINT training solution provides powerful tools for records and skill management, training planning and scheduling, electronic online and offline grading and e-learning.

Is the application operational? If yes, since when. If not when do you plan to go live?

Yes, JavaFX first appeared in the application in 2013 but earlier versions of the software are available since 1998.

Development

How did you get the necessary JavaFX Know-How into your team? (Consultants, Internal / External training courses)?

Initially we did a pilot project to migrate selected Swing UI to JavaFX. Later on there was some internal training to spread the knowledge. See also Oracle Case Study about this.

With which version of JavaFX did you start? 1, 2, 8?

JavaFX 2.0.

When did you start developing the application and how long did it take?

The migration from Swing to JavaFX started in 2012. It is an ongoing process. A turning point was in 2014 when the main window finally could be moved to JavaFX.

How many developers worked on it? In total and on the UI.

Work is done by 8-10 developers working on the UI and backend.

How big is the application? Lines of code, Number of classes.

1.8 million lines of code, 6300 classes.

How big is the JavaFX client? Lines of code, Number of classes.

1.1 million lines of code. 4800 classes. This includes remaining Swing parts.

Why did you choose JavaFX as frontend technology? And very importantly: why did you not choose HTML / Web?

Coming from a Swing rich client it was a natural move to switch to the JavaFX successor. With FX the UI got a modern look and feel, smooth animations, and hardware acceleration. Regarding technical aspects, with observable properties and bindings the JavaFX API is easier to use with less code. And with FXML and CSS we can keep the UI building out of our code and focus on the business.

Moving all of this to the Web would be a huge effort. At the same time we keep supporting Web and mobile users with a responsive web application, providing access to most commonly used features.

Was it difficult to convince decision makers to agree on JavaFX?

No. Ultimately it was a management decision in the first place.

What were the biggest challenges / problems / issues / bugs you faced in the JavaFX part and how did you solve them?

Operating on the cutting-edge of JavaFX development can be difficult. Especially when we started with JavaFX 2 we faced several bugs, some of them specific to a platform or to WebStart. They were reported to Oracle but we still needed to find workarounds because an official fix could take 6 months or longer. It also was a challenge to get JavaFX 2 working on all platforms via WebStart because it required a separate installation.

Today with JavaFX 8 things got easier. Swing integration is still a problem. And we have to pay a lot of attention to Java 8 update releases. Frequently we cannot support the latest update when it gets available, and once we support it we may not be compatible to the previous versions anymore.

Which 3rd-party products / frameworks / tools (open source and commercial) did you use and why did you choose them?

In terms of JavaFX related 3rd party products, we use ControlsFX because of high quality controls with good documentation and a close connection to the Oracle JavaFX team. And we use FlexGanttFX which was developed as a joint-venture with Dirk. The Swing-based predecessor FlexGantt was a core component in our product and we needed the same level of quality and flexibility in JavaFX.

Did you mix JavaFX and Swing code?

Yes. This is an ongoing source of issues, e.g. when it comes to drag/drop support, layouting, threading, and window ownership. In particular communication between Swing’s EDT and JavaFX’s application thread is challenging. Both UI toolkits are single-threaded but when they are mixed you have to deal with two mutually exclusive threads.

With a Swing-based product of this size there is no other choice but to migrate it piece by piece which of course mixes JavaFX and Swing.

Outlook

Would you use JavaFX again for your next project? Please elaborate why or why not. Which recommendations do you have related to JavaFX for other companies / projects?

When a decision is made for a Java desktop or embedded application, my first look would be at JavaFX. It generally is a pleasure to work with and the results are convincing. For specific technical requirements a closer look would be recommended, e.g. compatibility to existing frameworks and controls, low-level access to hardware, 3D capabilities, etc. Also, JavaFX developers may be more difficult to come by but the transition from Swing is not too hard.

Which features would you like to see being added to JavaFX?

  • More standard controls, e.g. check combobox and check list view, a tableview with column filters.
  • An action framework with standard actions on each control.
  • Embedded, custom-control aware and two-way integration of SceneBuilder with Eclipse.
  • CSS debugging features.
  • Better integration into platforms, e.g. appstores, taskbar / system notifications, OSX menubar.

Do you plan to provide a mobile version of your application or a mobile addition?

No mobile support intended at this time. Our web-application is built with responsive design and works on cell phones and tablets as well. It is certainly an option once the tool chain incl. app store integration is complete and reliable results can be achieved on common devices.

JavaFX Real-World Apps: European Broadcasting Union

I have the privilege to present several JavaFX Real-World Apps at JavaOne this year together with Alexander Casall, who works for Saxonia Systems in Dresden. In preparation of this talk we sent out a questionnaire to our customers and partners and asked them a few questions related to their project, their application, and their use of JavaFX.

I thought it would be a good idea to publish their answers ahead of JavaOne to give attendees a chance to prepare themselves for the talk and also to maybe get some more feedback related to JavaFX projects out there, their size, and the politics surrounding their decision making process.

The first questionnaire was returned by Stephane Metairie from the European Broadcasting Union (EBU).

Logo_blue

“Members of the EBU are radio and television companies, most of which are government-owned public service broadcasters or privately owned stations with public service missions. Active Members come from as far north as Iceland and as far south as Egypt, from Ireland in the west and Azerbaijan in the east, and almost every nation from geographical Europe in between.” – Wikipedia

EBU is also known for organizing a yearly song contest for its member countries. This year it took place in Vienna.

Bildschirmfoto 2015-09-10 um 10.12.24

The application is being developed by a combined team with developers from EBU and AISO. AISO is a software development company located in Geneva. They have a very strong focus on business software development with JavaFX. Disclaimer: I am under contract with AISO.

Screen Shot 2015-09-11 at 16.51.03

The application they are developing is used for planning / scheduling broadcasting streams (TV, Radio). Resources scheduled are satellites, satellite dishes, fiber optics, etc… The application will be used by 150 concurrent users.

Below you can see a screenshot of the application. The fact that there is a timeline control shown inside of it basically gives away how I got involved into this project as an external consultant / freelancer (see FlexGanttFX).

NEOS

Here the interview questions and answers:

General Questions

What is the name of your product / project?

NEOS.

Who are your users / customers?

Internal application. Users that are in charge of planning. They “build” dynamic networks for broadcasting streams.

What is the purpose of your software? What are its benefits?

Transmission management. Build dynamic networks based on existing resources or resources rented for the case. Allow resource booking and planning.

Is the application operational? If yes, since when? If not, when do you plan to go live?

Not yet, the plan is to go live in January 2016.

How big is the budget for your project?

3 Million Dollar.

Development

How did you get the necessary JavaFX Know-How into your team? (Consultants, Internal / External training courses)?

We involved some consultant expert in JavaFX and we trained the whole team with … Internet and Oracle resources.

With which version of JavaFX did you start? 1, 2, 8?

Javafx 2.

When did you start developing the application and how long did it take?

Starting end of 2014. Took one year so far.

How many developers worked on it? In total and on the UI.

Around 15 people now. All developers work on server and client side.

How big is the application? Lines of code, Number of classes.

2000 classes.

How big is the JavaFX client? Lines of code, Number of classes.

1000 classes.

Why did you choose JavaFX as frontend technology? And very importantly: why did you not choose HTML / Web?

It’s Java ! Better ability to use desktop resources than web/html. Java applications are more stable over time than javascript (huge number of JS frameworks rise and die all the time).

Was it difficult to convince decision makers to agree on JavaFX?

Yes, I was very challenged, by managers and by developers !!! (I’m still being challenged).

What were the biggest challenges / problems / issues / bugs you faced in the JavaFX part and how did you solve them?

No worthy datatable component. Weak or incomplete component libraries. Not much JavaFx developers on the market. Bindings / Observability sometimes is tricky. Articles on the web are growing but not sufficient in some cases. No clear MVC or sort of MVC. For well industrialized projects there is no clear MVC, or this kind of pattern.

Which 3rd-party products / frameworks / tools (open source and commercial) did you use and why did you choose them?

IntelliJ.

Did you mix JavaFX and Swing code?

No.

Outlook

Would you use JavaFX again for your next project? Please elaborate why or why not. Which recommendations do you have related to JavaFX for other companies / projects?

Maybe. But It misses a sort of framework that could manage applications at a higher level (with templating, tree page, rights, css …) I think about a CMS-like framework.

Which features would you like to see being added to JavaFX?

Datatable.

Do you plan to provide a mobile version of your application or a mobile addition?

Yes.