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:


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.


Home Screen


Gantt Chart (4-Split)


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.


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.