I am rather reluctant to new technologies, as often these are immature and imperfect. Hence, I go long time with established standards. But sometimes, I switch rather quickly, when things make a leap forward. This time it happened with JavaFX.
For decades Swing was my first choice, as it is part of the Java SE standard, is mature, rather completely, maintained, well-understood and supported by third parties. So why change it? But recently, our team had to make decision for the future. And this was the end of Swing.
Our problem was: We have to write a desktop application (possibly for the last time ever), and it shall have a modern and fresh GUI. Sure, we could do it with Swing and a lot of brainwork inspired by Chet Haase, Romain Guy and Karsten Lentzsch. But looking at the decades of hard work and sleepless nights we had with Swing since we started to use it in professional software around the millenium, we thought it might be beneficial to do a market analysis first. And it was!
While we knew JavaFX for years, starting with v1 and that ugly language one was forced to learn, we always abstained from using it when it come to final decisions. It was simply not ripe for prime time. But what we just set up practically overnight with JavaFX 8 was impressing. The clean MVC support, the separation of programming, view layout and design, property bindings, FXML-defined controls, CSS Pseudo-Class support, and a lot more, not to forget about the fresh looking design of v8, was simply astonishing. Not to mention, our whole team had a jump start in just five days from zero to all features plus first contributions to the OpenJFX source base, and another two weeks to our first custom layout managers and complex custom controls. This is fun-providing pace!
Looking back at the tough times with Swing’s outdated API and rustic style, we are really happy to get past it. We know, it might not have a long time to live due to the migration from desktops to mobiles the younger generation dictates us despite all negative effects upon productivity and quality of work, for the time until it will be our first choice definitively. It is really bug fun. It is productive. It is mature. And it is actively supported. Go get it!
If you liked Swing, you will love JavaFX! Make the move now!