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.

JFXtras is a library project for JavaFX that provides a bunch of useful API – particularly new UI controls (which you can see by running the JFXtras Ensemble application). It was founded back in the early JavaFX 1.x days, but has recently begun rebooting itself for JavaFX 2.x. I’ve been working with the project to help it get kickstarted, and wanted to post the following interview to introduce you to a few of the original committers to the project. I should note that this interview was done in early March, but has been waiting for the release of JFXtras Labs 0.1 before publishing it. Now that this has happened, enjoy the interview 🙂

A (somewhat) close facsimile of the four interviewees: Tom, Dean, Steve, and, um, Gerrit

Welcome gentlemen, and thanks for taking the time to answer a few questions. Could you please briefly introduce yourselves.
tbee: My name is Tom Eugelink, 41 years old, 2 kids, and I live in the Netherlands. I’ve been writing computer software since I was 14, which seems like a century ago. First just for fun; basic on the VC20, C64, Amiga, and then I decided to go serious and did a formal 4 year study in software engineering. Back then Pascal and C were the leading languages and Unix (SUN) the operating system we worked with. After that I started a job as a software engineer, where I was part time send out to clients and part time working in house. And basically is what I’m still doing now, almost 20 years later, only self employed.
In the company I worked for back then, I had risen to the mysterious level of senior software engineer, when Java first hit the spot lights. And I expected it to be a game changer, compared to the cumbersome languages we were using at that time. So I convinced the company to jump on the Java 1.1 band wagon, and luckily my hunch turned out to be correct. A funny fact is that the first project we did using Java, still is continuing today and I’m still on a regular basis developing on that code base, which now has migrated to Java 1.7.
steve: I will keep it short…  My name is Stephen Chin and I am a JavaFX hacker.  (with the long version here)
gerrit: My name is Gerrit Grunwald, 42 years old, 2 kids and i live in Germany. I started playing around with computers in 1984 on a Texas Instruments Ti-994A followed by a Sharp MZ 731, Sharp MZ 821, Amiga, PC and finally a Mac. I studied applied physics and started working as an so called Application Scientist doing installations and training of hard- and software. After three years traveling around the world i decided that it was time to spend more time on coding and moved to the Software Development department. I started coding Java around 2003 because i needed a platform that supports Mac and Windows.
dean: I’ll follow Steve’s lead.  My name is Dean Iverson, I’ve been a JavaFX fanboy and JFXtras contributor since before it was cool.

JFXtras is almost an iconic JavaFX-related project. It’s been around since the earliest days of JavaFX. Why did JFXtras begin?
tbee: The core platform developers always have to make trade-offs, and are often governed by company rules. Usually there is room for a supporting library, like SwingX for Swing. A place where additions to JavaFX, created by people who use it in the real world, can mature and easily be found by others. So to prevent dozens of small projects scattered all over the internet, we hope JFXtras will pull it all together.
steve: Just to give the history of how JFXtras began, Jim Weaver and I were chatting around the time of the 1.0 release, and saw huge gaps from where JavaFX was and what we thought it needed to be in order to meet the needs of real business use cases.  We had done quite a bit of work of our own building things we needed as we worked on the first version of the Pro JavaFX Platform book and the WidgetFX project, and decided to create an open-source project to bring together other developers and their contributions in a cohesive project that would help JavaFX thrive.

JavaFX 2.0 is the first release of a full Java-based API. How does this impact JFXtras?
tbee: Basically we scrapped the whole 1.x branch and started fresh, which is what I would consider quite an impact. But let’s be honest; JavaFX 1.x was never going to be the break through that 2.x could become, just because of the threshold the script language (with its non Java syntax and features) presented. JavaFX should be a natural path from the aging Swing, and JavaFX 2.x offers exactly this.
steve: What Tom said…  🙂

Is JFXtras still necessary for the JavaFX 2.x, and future, releases?
tbee: Most definitely! The Oracle people are doing a great job, but they have a different focus than the day-to-day developers actually using JavaFX to create great applications. And that experience, those additions to the JavaFX ecosystem, should have a place where they can easily be made available to the whole community. Oracle is giving is a powerful framework for free, so it is only natural to be contributing small gems back.
steve: What Tom said x2…  🙂

The Calendar and Spinner controls in JFXtras 0.1

What is the goal of JFXtras? Is it a free-for-all project, or do you have requirements for quality, style, and design?
tbee: HA! Quality, style and design, a never ending discussion. First of all we like to use the same design as the JavaFX platform (which is now already partially open sourced, so we can peek right inside). Maybe if the code is good enough, it can become part of the official platform. Basically we see three levels of code; JFXtras Labs for everything experimental, JFXtras for things that are production ready, and then OpenJFX for the official platform. The higher level a code base moves to, the higher the quality has to be, and the more it must adhere to the coding standard set by Oracle. Which does not mean I like that standard, and I even rebel a bit as long as we’re in JFXtras labs, but it’s a good thing it exists 🙂
dean: We want JFXtras to be a one-stop shop for the needs of all the JavaFX application developers out there.  We really want it to be the first library you consider adding to your new JavaFX project.  It’s a library written by developers for developers.  This also makes it a great place for contributing developers to hone their skills with JavaFX.

You have two sub-projects, JFXtras and JFXtras Labs. Can you please detail the difference?
tbee: As said above, JFXtras is intended to be a library with stuff that can be used in production. Fairly stable API’s, unit tests, real world tested. JFXtras labs is the playground, a place to try things, have discussions about how to solve problems, and the code will be haunted by changing API’s.

What have you all been working on for the first JFXtras Labs release for JavaFX 2?
tbee: My contribution is the infamous CalendarPicker and Spinner. Two components that were missing from JavaFX 2.x. CalendarPicker is a great way for me to shake down a UI framework; I also wrote them for other frameworks like Swing and iOS. They force me to examine aspects that one normally would ignore.
gerrit: My contribution is a JavaFX port of my Java Swing components library named “SteelSeries”. This library contains mainly gauges and indicators to visualize data.
dean: One of our goals is for this “reboot” of the project is to make JFXtras available in Maven Central from the very first release in order to make it very simple for folks to include it in their projects.

A few of the SteelSeries gauges included with JFXtras 0.1

What are your plans for the future of JFXtras and JFXtras Labs?
tbee: Even though the components mentioned above work for the most part, a lot of work remains in finishing and polishing them before they can move over to JFXtras or maybe eventually to JavaFX. Also Maven support, or more specifically getting JavaFX in a Maven repository, is a priority for me. And probably some add-on code is required, especially with loading the DLL’s, which should be part of JFXtras / JFXtras labs for a good shake down.
steve: Personally I plan to contribute updated versions of some of my controls (one of the more popular ones being the JFXtras Shelf) and have some ideas on new layouts that would complement the new JavaFX FXML/CSS capabilities.  Although I am spending most of my time right now on project infrastructure like the website and build system.
gerrit: First of all i will try to prepare the gauges in the way that they will make it to JFXtras which means there’s lot’s of stuff to do. You know i love creating custom controls and i’ll put as much of them as possible in the JFXtras Labs to make them available to everyone who is interested.
dean: I’m hoping to be able to contribute a mapping view as well as a basic media player.

As you mentioned earlier, SteelSeriesFX, a port of the Swing-based Swing/Java2D gauges is a part of the JFXtras Labs release today. This is the first release of SteelSeriesFX – why did you choose to contribute your work to JFXtras rather than go it alone?
gerrit: You can try to fight as a lonesome warrior or you could try to use the power of the community to move things forward…i choose JFXtras because i really believe that together we can move things forward.

The other major part of this first release is a few controls from Tom. Can you detail what is available in this first release, and do you have plans for more?
tbee: As mentioned I’ve contributed the Spinner, CalendarPicker and by extension the CalenderPickerTextField. These are often used controls and I felt they would be useful to a lot of people. Especially the CalendarPicker is a complex component and needs more work in terms of features (multi select dates, control by keyboard, etc.) After that, who knows, I always wanted to write a calendar component (like Google calendar), so if time permits…

JFXtras Ensemble

The JFXtras Ensemble application

What is the best way for people to see, interact and learn about JFXtras?
tbee: The idea is to get the website filled again with examples. It was nicely stocked, but it was all JavaFX 1.x stuff, so aside from scrapping all the code, we also had to scrap all the website content. And as most people know: time is not in abundance, so I first prioritized on the code (no one likes vaporware after all). So for the moment the best place to start would be the test directory in the source code tree and run some of the visual test that are there.
dean: We’re working on forking the JavaFX Ensemble demo so that people can easily see all that JavaFX has to offer.  This demo will be available on the project’s web site when the first release goes out.  We will start with a few basic demos but that will grow rapidly as contributors start to show off all the things their controls can do.

How can people join in the project? Are you welcoming contributions to JFXtras or JFXtras Labs? Do you have mailing lists or online source repositories?
steve: We are very open with accepting new contributors.  All the details can be found on the JFXtras website (http://jfxtras.org), but we have a public GitHub repo, Google Groups mailing lists, and a Jenkins build for project infrastructure right now.  The best way to get started is to join our developer mailing list and start interacting with the other folks on the project.

Thanks for your time answering these questions. Do you have anything else you’d like to conclude with?
tbee: You are welcome. A conclusion. Yes, I think the programming model behind JavaFX, the scene graph, the manipulations on it and the CSS angle, is a very strong and clean concept. Like back in the Java 1.1 days, I feel there is something brewing there. I’ve worked with a number of other UI libraries; Flash, iOS, Android, and JavaFX really seems to be getting some things right. It’s simple yet powerful, with a lot of room for growth. Of course we need Java 8 closures to get some of the scaffolding out of the way, and as long as Oracle doesn’t get the JVM loading worked out, it will never replace flash. But I do not think that replacing Flash should be the goal. The whole web arena is pretty much covered by HTML5 and mature JavaScript libraries, investing there would be a waste of time and money. I say; “JavaFX mobile”, write once, run anywhere. The market is almost begging for a good solution and until now everything attempting to provide one seems to be a kludge. (Maybe Larry also reads this interview. 🙂
steve: I agree with Tom, especially on the comments regarding mobile. Having a modern cross-platform UI toolkit like JavaFX on mobile would bring a lot of people not only to JavaFX, but also to the Java platform. It would be ironic if the “Oak” language (aka Java) originally written for interactive televisions made a renaissance as the new mobile platform of the future.
gerrit: I could only agree…it feels like Java is back on the Desktop and i really hope that it will make it’s way to mobile, so let’s move things forward…
dean: Having worked with many, many different UI technologies from web to desktop to mobile, I have to agree with Tom on this one.  JavaFX is a clean and powerful client stack, and JavaFX on cutting edge mobile devices would be amazingly cool.  Nobody has yet achieved critical mass with a client technology that can span desktop, web, and mobile.  I don’t know that write once run anywhere will ever be truly practical with a desktop/web/mobile application of any complexity, but I do think that with a good integration with the native mobile platforms, JavaFX could become a very compelling choice for mobile developers.