One guys perspective on JavaFX

I’ve had a lot of people ask me about JavaFX, especially with the recent changes announced by Oracle (there are a few follow-up articles at infoworld and jaxenter for more information), and on my leaving Oracle late last year. I’ve promised for a long time to add my thoughts to the discussion, but up until now I haven’t actually done so. Let me rectify that now…

For those of you that didn’t hear the news, Oracle announced plans related to Java client. In short, some Java client related technologies will be removed from JDK releases. Of most interest is the fact that applets, Java Web Start, and JavaFX will no longer be available in JDK 11 and later. JDK 11 may feel like a long way off given how slow Java releases have been in the past, but remember that with the new release cadence in effect, we’ve already seen JDK 10 released last week, and JDK 11 is due out in September, I believe. This means that from September people downloading the JDK will no longer be guaranteed to have applets, Java web start, or JavaFX APIs available on their machine.

I poured my heart into JavaFX for a really long time – since mid-2009 it was my full time job, firstly at Sun Microsystems and then at Oracle. It was a pleasure and a delight to work with so many smart, dedicated, and professional engineers during this time. I will always fondly remember the time I spent with them, and class it as a career highlight. Equally valued by me was the opportunity to work with such a smart, motivated, creative, and dedicated community of people who were using JavaFX in all manner of projects. It was truly heartening to know that my code was being used to further science, to help send things to space, to trade in markets, to create mobile apps, and so much more.

At the same time, as an engineer working with so many truly excellent engineers, it was heartbreaking to see people leaving Oracle, but this was an all-too-common experience as budgets became tighter and tighter. Java is an open source project, with applications ranging from the smallest of profiles right up to hugely complex computing needs. It can be extraordinarily hard to monetise open source work, and it can therefore be challenging to justify continued investment into engineering efforts where there is no direct benefit. At the end of the day, my feeling is that JavaFX simply fell into this void – whilst there are some Oracle products using JavaFX, there wasn’t enough, and thus justification for ongoing investment became a tough sell, with investment waning over time. Every time we lost some engineers, I felt that surely, we couldn’t cut anymore – but I was all too frequently wrong.

That takes us to today. Oracle has made it clear that it is now in the communities hands to ensure JavaFX flourishes. The process for developing JavaFX itself is opening up, and simplification of the build process makes it more possible to become involved. Discussions are underway into moving JavaFX into modules available via Maven repositories. One day soon JavaFX will be a compile-time dependency that you include in your build script. You won’t care what version of the JDK your end-users have installed, because your build script will compile a native installer with an embedded JDK image, containing everything you need. Developers will create or coalesce around a new project for ensuring easy application updates. In other words, things needn’t be so glum. It’s a case of the King is dead, long live the King!

But challenges do abound. Unlike nature, JavaFX won’t simply adapt for free. There is a lot that must be done, including all I wrote above. Beyond that, what is JavaFX? Who defines it and how does it evolve? How does it become something community owned? Is it forever bound to the OpenJDK, or does it transition to a third party (not unlike Java EE)? Community involvement at this juncture is critical – as the process opens itself up it also becomes ever-more dependent on those who form this community to bring their resources to the fore, or the risk is that JavaFX will wither and die.

In short, there are many ways one can choose to look at this announcement. I’ve had many more months to appreciate this plan than the wider community, but I feel like I straddle the entire emotional spectrum on this 🙂 It goes without saying that I would have loved to have seen Oracle growing investment in JavaFX, so there is sadness in me that this didn’t happen. On the other hand, it is easy to see the lack of business sense in doing this. I think my main emotion now is concern – I really do hope that the community steps up. If it doesn’t, JavaFX will be no longer, and this is a real risk. On the other hand, if the community does step up (and I mean this extremely generally – I hope individuals bring their skills in coding, documentation, testing, advocacy, etc, but I also hope that deep-pocketed companies help to sustain these developers financially), then we may see something amazing happen. Already there are positive signs: Gluon has already worked with Oracle to create a repo on GitHub that enables community interaction and contributions, and there are a number of people already adding improvements into it.

I really hope we see something amazing happen.

I really, really hope that we see something amazing happen.

Finally, I feel like I should finish by saying: Java client was my home for a very long time. I’ve loved working with all of you, and I wish you all the best in everything you do. My time at Sun and Oracle was special. If you have the willingness to join in on JavaFX now, then you should reach out to the openjfx-dev mailing list. I will remain involved however I can (certainly with ControlsFX and Scenic View, and the desktop links post), but it is an outside of Oracle role from here on out 🙂

16 thoughts on “One guys perspective on JavaFX”

  1. Hello, interesting that you were part of the team that wrote it. I bumped into a lot of nasty corners of Javafx. Most of them I could fix or work around but I could not reach any of the developers, nor actually find the relevant bugtracker. Is there actually one ?

      1. Yes but but…. the bugracker requires me to have have ‘author’ status. FRom that page: ‘Everyone with OpenJDK Author status or above has a JBS account which may be used to create and edit bugs. Those without accounts can view bugs anonymously.’ I tried to obtain author status but couldn’t get one.

  2. Hello, I am a freelance developer and my applications are desktop based ones. Most of them are still awt/swing based, and a couple of new ones are in early stages with JavaFX.
    At the moment, to me and my background, Java is still the best way to supported mixed OS environments I usually work with (Mac + Linux + Window 10). But after reading your last post I am a bit concerned about GUI support for Java.
    If I am not wrong, JavaFX was born as a modern replacement for older AWT/Swing apps. So the current landscape looks like: AWT/Swing is an old technology and is not clear for how long it will be supported; JavaFX after some troubles (1.x -> 2.2 -> 8.0) seems quite stable but its future as part of official Java distribution is quite foggy because Oracle doesnt find it much profitable.
    Should I be worried and start looking for other language/alternatives or keep investing on JavaFX to progressively replace my older AWT/Swing installations?

  3. I have started to write my first project on javafx. It is really nice, fast and easy way to develop desktop apps, even for beginners. It would be very sad if we will never see a new javafx version….

  4. I am also wondering if it’s time to abandon ship for another GUI toolkit. I have been with Java and Swing for a long time now and then I switched to JavaFX. I am wondering what other people think. Myu sense of it is that the skills needed to sustain and develop these libraries, as opposed ot use them to write apps, are relatively rare and the time commitment needed for ti means that it’s someone’s definite paid job, not an after hours effort. Without the ability to monetize it, what is the motivation for any company to pay these hypothetical developers?

    When Sun went down, I thought that they should charge for Java. With millions of developers there was hundreds of millions of potential dollars. I dont’ know why this couldn’t be done with JavaFX and Swing.

    Just as with any other library, to develop is free, to ship your app requires a subscription, say 100 bucks a year. People pay that for tooling, e.g. IntelliJ, why not pay it for a GUI library? Why not let IntelliJ bundle it with their paid IDE?

    We devs can’t live of goodwill fumes. At least, I can’t and I think you can’t and I don’t expect anyone else to either. At the end of the day, an economy of people getting paid and paying has to materialize from somewhere. In this scheme. sure if you’re just trying to start a business or running a very small one, you can’t cought up six grand a year just for the privilege of attempting to make a living or using a programing langauge or library. That kind of pricing is for mega-corps. But a 100 bucks a year? Any company can afford that and with so many Java devs, it has to be profitable.

    Using Jetbrains as an exaaple, most of their downloads are probably from people using the free community edition. Then most of the others are people paying a50 a year for their “all tools” package. Then some Big Customers who pay for a lot of devs. All this is a competitive landscape that is filled with free-as-in-beer alternatives. But still they make a success of it. Why can’t this model work for JavaFX and Swing?

    Regarding the alleged decline of desktop applications generally, please note that the web browser you’re reading this on is itself just a desktop app. Yes it’s a domiant one at the moment, but that will pass as the deep untapped utility of peer to peer decouples “being online” from merely “visiting sites” and people start to sharing data between their own private clients.

    Someone is going to write desktop applications using some library, either in C++ or Java. As much as the people who hate privacy and want all our thoughts, business strategies and personal documents to live in the cloud don’t like it, the personal privacy of a desktop computer will always be worth paying for.

    Yes, there are also people who would love to meter our every keystroke and make us pay for access to things we ourselves created, but the human animal is not going to accomdate their ambitions, although that’s where all the investment money is at the moment.

    We’re living in a very temporary era of cloud-based phone apps but the inevitable soon to be fully comprehended downside of this is virtually unlimted and anyway intolerable. Computers are where our private thoughts and plans and feelings go; putting them into stranger’s hands to be sniffed and read and shared by 3rd parties is something people will have grave second thoughts about presently.

    Desktops and the apps that run on them are here to stay, so let’s pay the devs and companies who write the libraries we depend on good money and be glad of being able to secure our futures by doing so.

  5. I think the freemium model ala intellij has a lot of merit. As other commenters have noted, just open sourcing something and hoping for the best is wishful thinking if there is no revenue stream behind it to allow people to make it their day job. By the same token it is very difficult to make something free suddenly a paid product and not expect backlash.

    MS can continue to make .NET free because they have an ecosystem behind it (OS, cloud, enterprise apps). Java has no such luxury. But I can understand the dilemma that Oracle faces now. There is definitely a market for free and open source, why does php persist and thrive even though it gets hated on by so many? Too bad Oracle could not come to some arrangement with Google instead of the legal route. Here’s hoping that JavaFX survives.

  6. I started using JavaFX only this January 2018, and have used it to develop desktop applications since. Due to it’s beautiful model, development is fast, clean, and makes sense. I hope JavaFX is picked up/developed by the community. It saves developers huge amounts of time over Swing/AWT and it looks great.

  7. As a client-side GUI guy from way back, I have to wonder if the ultimate destination would be basically what the entirety of the HTML5 umbrella-term has to offer. HTML5 is a fragmented mess of technologies, but I have noticed a UI here and there that seems to run in what amounts to a headless browser-like setting. I suppose this also allows for a semi-seamless transition to a cloud based front down the road. Odd really; I’m personally hoping client-side UI’s take that [ugly] turn, but it seems like a possibility.

  8. Have you seen what must be done(in this case intellij ide) to set up for javafx 11….it is terribly convoluted, and a proper mess. Other ide`s are just as problematic to set up…

Leave a Reply