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.

Today I have an interview with Ander Ruiz, a developer I’ve been working with on an updated version of Scenic View that will be released next week. The one point I want to raise is that we want your feedback on new features to add to this application! Leave comments in the comments section below. For those of you unfamiliar with Scenic View, there is now a Scenic View page here at FX Experience which will be shortly updated with the new release, but the current release can also be downloaded.

Hi Ander. Could you please introduce yourself to everyone?Ander Ruiz
I’m a graduate of the Engineering School of Bilbao with a Bachelor degree in Telecomunications Engineering. I’ve been working as a software architect at Telvent on Java for embedded environments since 2002 with lots off hardware control, all kind of communications (serial ports, usb, network protocols …), and user interaction.

You’ve mentioned to me previously that you do a lot of work with JavaFX-based kiosks – can you provide mode detail about how you use JavaFX for kiosks?
Our old machines use HTML as their GUI, and an obsolete JNI Wrapper of Mozilla (1.7!!) called JRex for browsing the (there was no WebView at that time :-(). It was not bad, but definitively far from perfect. So in 2008 I started to search for a replacement, and after discounting Flex (which was being used for our server application) I chose JavaFX. Three years later we have an appealing framework to build our GUIs, that reduces our development costs and bugs. And with JavaFX 2.x you have provided me a way to migrate the old GUIs.

How long have you been involved with JavaFX for?
I’m been working actively with JavaFX since 1.0 days back in 2008, I downloaded the 1.0 version the same day it was published!!.

Wow – you’ve been a long time user of JavaFX! What are your favourite features of JavaFX?
When I started developing I was interested on bindings, media capabilities and also the easy way to make animations. Now things have changed, my favorite feature is without doubt CSS support, there are so many options that we are still learning :-). The ability to customize the GUI is important if you are trying to make a versatile product.

What do you really want to see in future releases of JavaFX?
First of all more CSS features (I would like to be able to layout with them) and make the API for including custom styles public as soon as possible. My GUIs also use Webcams and real time video streams (RTSP), both of them are not directly supported in JavaFX, even though it can be done using Java Media Framework and vlcj. It would be great to support as much media sources as possible.

Equally relevant is real multi-platform support, for us JavaFX on Android would be really important, but devices like Raspberry Pi are interesting too. We have several handhelds using Windows Mobile, JavaFX 1.2 was ported to that OS but unfortunately there is no such version for 2.x

Prior to developing with JavaFX, did you use Swing? What are your thoughts on JavaFX compared to Swing in terms of performance, functionality/features, and ease of development?
Yes, the maintenance GUI (used by operators) is currently written in Swing, I’ve done several visual improvements and new screens but I’m not a fan of Swing at all. I feel far more comfortable writing JavaFX code than Swing and obviously the performance cannot be compared (and probably there is more room for improvement). Particularly astonishing has been the performance improvement between JavaFX 1.x and 2.x partly for the runtime and partly because the number of bindings is reduced. In an small application we suffer a 60% start-up time reduction.

There is a reason why I’m interviewing you today. Since the initial release of Scenic View, you and I have been working on a vastly improved release. Can you explain some of your favourite new features in the new Scenic View?
Probably I should start explaining where some of the features come from. I was already developing a little tool called ControlPanel full of useful options, but with a really really ugly design. When you released the first public release of Scenic View, it was way better than my own application in several areas. I thought that including the little features from ControlPanel would be as interesting for any other developer as they have been for me.

I’m particularly proud of those characteristics that could reduce the amount of time spent in laying out components and styling, I think that being able to change things without the stop/modify/recompile/launch cycle is really valuable, stylesheet auto-refreshing and property editing helps with that.

Also relevant for layout purposes are the ruler and the small label on the status bar that shows the cursor position, the combination of both features solves many layout adjustment problems.

Apart from that there are a lot of nice characteristics such as the highlighting of properties when they are changed, the filters, the autoSelection of components on click, etc, as well as all the features from the first release!

How do you use Scenic View in your company?
Let me first explain what our problems were before JavaFX came along. One of the biggest obstacles of the old web browser based GUI was that it cannot be developed without the application, so typically the same developer that was doing the business logic had to create and modify the web pages. Another difficulty was that the updates of the GUI was not done in the same way from project to project, which lead to a lot of time spent reinventing the wheel.

In that context, one of the design goals of our new GUI framework was to be developed/modified/tested separately from the application. For that reason I wrote our “ControlPanel”, a small application that was originally built up to be able to change the “views” of the GUI, to modify its data model (modifying the view through binding) etc. Later we added some new features that have been now merged with Scenic View to make a tool far more powerful.

So, to answer your question, we use Scenic View to test the GUI separately, to reduce the amount of time required on development thanks to some of its features (like stylesheet auto-refreshing) and also for debugging purposes. It is also present at runtime using a developer command.

What are some features you want to add to Scenic View in the future?
Ideally I would like to see Scenic View as a tool every JavaFX developer uses on daily basis, but I understand that each GUI has its own peculiarities, therefore we should include a way to customize Scenic View to fit those needs, for example allowing developers to add a new custom panel.

Scenic View now supports viewing the current status of the Scenegraph but sometimes it could be interesting to see the evolution of it, for debugging and performance check purposes, sometimes small performance problems might not be easily detected.

Is there anything else you want to add?
First of all I would like to thank my workmates who have contributed with many of the ideas and features now included in Scenic View. For the rest of developers please fell free to provide feedback and obviously any new suggestion will be welcomed.