It’s time for another interview, this time with Gerrit Grunwald, or hansolo_ as he is known on Twitter. Gerrit has been in my weekly desktop links posts dozens of times, each time relating to his work on his SteelSeries project, which is a collection of gauges and other UI components for Swing. Even better, he has started working on JavaFX versions of these controls, and this is why I am please to be interviewing him today.
Briefly, in other interview news, I’m lining up a number of other interesting people, both inside Oracle and from the community. I’ll put these interviews out over the next few months, at a rate of one or two a week I imagine.
Hi Gerrit – could you please introduce yourself to everyone?
I’m working as a software developer at Quintiq GmbH in Germany where I’m responsible for visualizations of all kinds. I’m really in love with Java Desktop and I’m addicted to custom controls of all kinds because it’s pure fun. I founded the Java User Group in Münster (Germany) where I’m living and my heart beats for the community.
You’re a relative newcomer to the JavaFX world, joining around the release of JavaFX 2.0. What drew you into JavaFX?
I tried JavaFX in the early days when it even was not JavaFX but F3 and liked the concepts but somehow JavaFX Script was not made for me which kept me away from using it. When Oracle announced JavaFX 2.0 and I saw the implementation in pure Java I started another try and got infected. Now after using JavaFX 2.x for some months I just can say…I LOVE IT.
You’ve been working really hard on a project – would you like to explain what it is?
I guess you mean the SteelSeries gauges library that i created 1.5 years ago. Well it is a small library which mainly contains gauges of all kinds (and lots of stuff people asked me for). Nearly 2 years ago i was in the need for a gauge to visualize some temperature measurement and because it was my private fun I was not able to spend thousands of euros for a commercial component library. That was the point when I started looking into custom controls and created my first gauge. I had so many ideas (and still have) that I could not stop creating more and more stuff.
Which IDE do you use for development of your JavaFX code?
For JavaFX development I mainly use IntelliJ Idea but I also use NetBeans a lot.
What is your typical workflow for creating your SteelSeries (and SteelSeriesFX) gauges and other controls?
Over the time I learned using a graphics program named Adobe Fireworks which I now use to create prototypes of the controls. The next step is the export to Adobe’s FXG format which is a XML based graphics format similiar to SVG. To get the graphics into code I wrote a little converter that is able to convert the FXG file directly to code. It supports conversion to JavaFX 2.x, Swing, HTML5 Canvas and Android. The converter is not really made to convert huge complex graphics but more to create controls. Therefore it will not only convert the graphics but will create a complete control, this means for JavaFX it will create a control, a skin, a behavior and a css file. After the conversion I usually start making manual adjustments to the code and that’s it.
Do you use JavaFX commercially, or is it more of a hobby for you?
At the moment it’s more a hobby (unfortunately), but I hope to be able to use it commercially in the future.
What do you think of JavaFX 2 now that it is Java-based?
To me it definitely is the future of Java on the desktop and I’m trying to convince as many people as possible to give it a try. Oracle (esp. the JavaFX team) did an amazing job by porting the JavaFX script capabilities to Java.
Do you program JavaFX using Java, FXML, or are you a fan of the various DSLs (most notably GroovyFX and ScalaFX)?
At the moment I use pure Java because I’m not really in love with XML which keeps me away from FXML (even if I think it’s a great idea to have it, esp. for GUI builders etc.). I have also tried GroovyFX and I have to say it feels even better than JavaFX. The only reason I do not use it at the moment is the lack of time but I will definetely use it in the future.
You have done a lot of Swing/Java2D programming in the past? What are your thoughts on JavaFX compared to Swing/Java2D in terms of performance, functionality/features, and ease of development?
The comparison is a bit unfair because of the age of Swing/Java2D compared to that of JavaFX. In Swing you find a lot of neat features and performance optimizations that have been developed over the years to make it really fast. Interestingly JavaFX is comparable (or even faster) in performance even if it’s in an early state. So I’m looking forward to the things that will come in the future. At the moment I miss some things (e.g. something comparable to the Paint object in Swing/Java2D that one could use to create custom Paints) but knowing that JavaFX is young I’m pretty sure these features will be implemented soon. The features I love most in JavaFX are effects (mainly shadows), animation, charts and binding. It’s not that you can’t do that with Swing/Java2D too but in JavaFX it’s so easy to use, just lovely.
What are some of the ‘gotchas’ that trip you up in JavaFX? What would you have done differently?
Well I mentioned it already, the only thing I really hardly miss is the ability to create custom paints. But I also said that i’m pretty sure it will come, so like ObiWan said once “Patience my friend” 🙂
What are you really wanting to see in future releases of JavaFX?
I would love to see the ability to access hardware sensors of all kinds (GPS, Gyroscope, Accelerometer etc.), support of mobile devices would be a blast and of course custom paints…
Thanks for taking the time to chat with me. Do you have anything else you’d like to say to the readers?
If you have not tried JavaFX…GIVE IT A TRY, it’s worth every second you spend on it