A quiet week this week.
A heap of links – enjoy! 🙂
- Slightly related, JPro have also announced their JavaFX-in-the-browser release. Unlike CheerpJ, I believe JPro works by having the application run on the server, and sends across SVG details to be rendered on the client. This places more burden on the server-side, and also results in some important restrictions (no FX event thread blocking for dialogs, etc, no statics in your app (because they will be shared among all users and clobbered or read in by different users), no additional stages can be created, etc). JPro host an array of demos running on their server if you’re interested.
- Johan Vos has blogged about creating a shell for prototyping scientific Java applications.
- Dirk Lemmermann has worked with a student team to create PreferencesFX. PreferencesFX “enables the developer to create preference dialogs with ease and creates well-designed and user-friendly preference dialogs by default.”
- Christoph Nahr has two posts this week. Firstly, a post about JavaFX being decoupled from Java SE 11. Secondly, a post on 3DViewer – viewing 3D objects in JavaFX.
- Mike Hearn has posted about building the React TicTacToe tutorial app in Kotlin/JavaFX.
- Jeff Martin has updated SnapKit Builder recently.
- GOXR3PLUS STUDIO have emailed me to say that they have “created a Chromium Browser in JavaFX and added it to XR3Player“. I was also informed about FX-BorderlessScene, an “undecorated JavaFX Scene with implemented move, resize, minimise, maximise, close and Windows Aero Snap controls.”
- Speaking of undecorated stages, Oshan Mendis has also created a library for doing this.
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 🙂
Hi all! Here are the latest links – enjoy 🙂
- Johan Vos has written an article in jaxenter titled “JavaFX as a separate module: A look back and a leap forward“.
- J. Pablo Fernandez has blogged about restoring window sizes in JavaFX.
- Pedro Duque Vieira has blogged about a new parallax control for JavaFX.
Howdy folks! Big news this week, so let’s just get into it.
- The big news this week was the announcement by Oracle that JavaFX is to be removed from the JDK from 11 onwards. This was covered in InfoWorld, and in a blog post and white paper by Oracle. In addition to JavaFX being moved to a module that is not shipped with the JDK, there were other Java client announcements made at the same time: Java Web Start and Applet technologies will also be removed from JDK 11 and future releases, and Swing / AWT, being a part of the Java SE spec, will continue to be supported through to 2026. For those of you forgetting the new release plan, JDK 11 is scheduled for release in September of this year. I have received a huge number of emails from people wondering what this means for JavaFX. The answer is – it is now in the hands of the community, with companies like Gluon stepping up to take on the load. You can choose to look at this optimistically (faster releases, easier contributions from community, etc) or cynically (another area that Oracle has abandoned and left the community in charge) – for me, I will write a blog post adding more detail about this as soon as possible.
- Eric Canull has posted code to GitHub for a JavaFX-based sorting animation app.
- Pedro Duque Vieira has updated his FXRibbon project to clean up API, etc.
- Christoph Nahr has posted about Windows GUI DPI scaling in 2018.