FX Experience Has Gone Read-Only

I've been maintaining FX Experience for a really long time now, and I love hearing from people who enjoy my weekly links roundup. One thing I've noticed recently is that maintaining two sites (FX Experience and JonathanGiles.net) takes more time than ideal, and splits the audience up. Therefore, FX Experience will become read-only for new blog posts, but weekly posts will continue to be published on JonathanGiles.net. If you follow @FXExperience on Twitter, I suggest you also follow @JonathanGiles. This is not the end - just a consolidation of my online presence to make my life a little easier!

tl;dr: Follow me on Twitter and check for the latest news on JonathanGiles.net.

It has been a long time since I published an interview, but I’ve finally got back around to it and this week I’m pleased to have an interview with Eugene Ryzhikov, a long time Java desktop developer and open source contributor. I’ve been working with him for many months on ControlsFX, where he has been contributing large amounts of code and many of the features you see in ControlsFX are directly due to his hard work. Hopefully in the coming months I’ll start publishing more interviews again, but as always it depends on time! Right, let’s get into the interview – enjoy! 🙂

Eugene Ryzhikov

Hi Eugene – could you please introduce yourself?
I’m a graduate of Kaunas Technology University with a Masters in Computer Engineering. But since my early days I have been involved in software development, starting with the now archaic PL1 and several assembly languages, Borland IDEs, before moving to Java in the 90’s and now sharing my programming time between Java and Scala, which I can only praise. Thankfully, Java is moving in the same direction, which is evident in Java 8 Lambdas.

It would be fair to say you’re a relative newcomer to the JavaFX world. What did you do before your involvement in JavaFX?
I was always a big fan of Desktop UI. It started from the early days of Turbo Pascal and then Delphi. I started working with Java in 1999 and have used Swing since then in most of my applications. I have developed several open source frameworks to enhance the capabilities of Swing.

I was watching JavaFX closely for several years. The switch to JavaFX 2 won me over, but I did not have enough experience in it. The solution was obvious – I had to be involved in the development of an open source JavaFX-based library. Luckily, you started ControlsFX approximately at the same time as I was looking for one, so I offered my help.

Are you employed to work on Java desktop software, or is Java desktop just a hobby of yours?
I consider myself lucky – my work and my hobby overlap. I currently work as a Software Architect. One of the big systems I started and am still involved with is related to energy trading. The client side of this system is Swing based and I developed several libraries to simplify development of required UI features and many parts of the UI itself. 

Is ControlsFX your only open source project that you are involved in?
As I said before, I have several Java and Scala based projects. One of the most popular ones is Project Oxbow. This is a collection  of useful components and utilities for Swing. The main components of it are the JTable Filtering and Task Dialog framework. The experience gained in developing the Swing Task Dialogs was directly applied to the dialog framework in ControlsFX.

ControlsFX 8.0.2 was just released. What plans do you have for future releases of ControlsFX?
I’m still surprised that ControlsFX gathers so much interest even though it only supports the as-of-yet unreleased version of JavaFX 8. At the same time it’s very exciting. I do have a lot of plans and ideas. Some of these include new controls, such as a popover control. A more grandiose one is a validation framework for JavaFX. I’ve made one in Swing once, but JavaFX presents new ideas and challenges. For example, observable collections, the new JavaFX property standard, and property binding greatly simplify many aspects of JavaFX development. CSS support makes for rethinking the whole “Look and Feel” part and is simply amazing!

What is the best way for people to see, interact and learn about ControlsFX?
There are many.  We have a lot of active discussions on the ControlsFX mailing list. General information is available at controlsFX.org and fxexperience.com. The library has an excellent JavaDoc, thanks to your relentless efforts. A lot of information can also be found at our Bitbucket repository. There are many interesting discussions related to issues and pull requests there.

How can people join in the project? Are you welcoming contributions to ControlsFX?
Everyone can contribute if they so choose; it’s so easy nowadays with sites like Bitbucket and GitHib. ControlsFX is truly an open source project. Currently we have contributions from 14 developers. Joining is super easy: sign the CLA at http://cla.controlsfx.org, fork the project at https://bitbucket.org/controlsfx/controlsfx  and send pull requests with your contributions. A contribution does not have to be code or a new control. For example, we are always looking to improve the quality of our JavaDocs, our tests or our samples. Your contribution can be in the form of an issue or feature request submitted to our issue tracker.

What has been your experience in wrapping your head around the way JavaFX works?
I like it a lot. My previous Swing experience helps a lot, but there are so many new exciting features, like CSS support, observable collections, better controls development process etc. JavaFX still has many surprises to reveal.

If you could change or improve any aspect of JavaFX, what would you do? Or, what are you really wanting to see in future releases of JavaFX?
As I said before, I am a big fan of Scala and functional programming in general. It is a great paradigm, especially for UI development. We don’t have to go far to see it – just look at how much easier ScalaFX or GroovyFX  frameworks make JavaFX development. Thankfully, this is not a dream anymore – Java 8 takes a huge step towards functional programming with Lambda and I’m certain Java developers will appreciate it. And it can only get better from there.

What is your setup for developing JavaFX-related code? Do you have a preferred IDE or any tips?
I’m OS agnostic. I have a Windows 8 desktop with Ubuntu VM on it and my laptop  is a MacBook Pro. I run Eclipse IDE on all of these platforms. I usually develop on Windows, but on the road, I do it on my Mac. This allows for greater flexibility and great testing – there are still small differences we have to deal with on each platform to make ControlsFX play nicely with all of them.

Thanks so much for taking the time to answer these questions! Do you have anything else you would like to add?
Just want to say thanks to everyone for the feedback , support, and contributions; we do try to keep up the highest possible standards in ControlsFX. Keep ‘em coming!