This post is about my experience using JavaFX to write some simple desktop applications. I work in Data management dealing with RDBMS like Oracle/SQL Server and Files. I had some ideas to automate the activities that were done manually. For instance, we wrote a scheduler that allows setting up job dependencies and triggers shell scripts on AWS EC2 machines. To track the progress, we had to log into the machine and type some commands.
I thought writing desktop applications would be a better idea. However, I did not have any idea about writing these. I had little Java development experience that does not include Swing.
At first, I thought since I was going to target only the Windows platform, probably I should explore Universal Windows Platform (UWP). But, it seems to involve a steep learning curve.
That’s when I learned about JavaFX. After spending a few days learning the basics, I started writing the applications.
#1 Job Monitor

#2 Data Browser

#3 Data Analyzer
This application is about finding data that meets specific patterns in JDBC compliant databases. Currently, it supports Oracle/SQL Server/Teradata. One simple use case is identifying all the columns in all tables in a schema/database that holds credit card data. The idea is to find out all attributes that have Personally Identifiable Information (PII) data.

#4 Stato
This is not a JavaFX application, but I wanted to include it for the sake of completeness.
Stato is a web application to show the live status of an Oracle DB. Many times I write SQL queries to find out answers for questions like the query has been running for a while - what’s happening, what’s the size of this table, what’s the current usage of temp space, etc.
As you may know, many databases provide meta-data tables/views to provide up-to-date status of a database. They’re called Catalog tables or metadata tables. They’re present in Oracle, IBM (SYSIBM tables), SQL Server (INFORMATION_SCHEMA), etc.
I wanted to write an application that shows each and every bit of data provided by the database without the user have to write queries manually. I started with Stato. Its backend is a Python/Flask application to connect to a database, execute queries to fetch metadata. The UI is written in JavaScript, Bootstrap, and Google Charts.
The application is still under development.

Tools and Libraries
Scene Builder
JavaFX Libraries
Resources
I guess these are the best resources for anyone to start with JavaFX —
- The Definitive Guide to Modern Java Clients with JavaFX: Cross-Platform Mobile and Cloud Development
- A curated list of JavaFX Frameworks/books/resources.
- JFX Days is an event for JavaFX. This year it is going to be online and happening on 24th and 25th November 2020.
Conclusion
JavaFX is a great UI toolkit to write Cross-platform desktop applications. With https://gluonhq.com/products/mobile/ support, it is even possible to write mobile applications.