Featured Post

Applying Email Validation to a JavaFX TextField Using Binding

This example uses the same controller as in a previous post but adds a use case to support email validation.  A Commons Validator object is ...

Saturday, January 2, 2016

Ground Floor or Ground Zero? Why I'm Bullish on JavaFX in 2016

Last week, InfoWorld columnist Paul Krill wrote of JavaFX as a "technology that never took off".  While I agree with his assessment of the state of employment for JavaFX developers -- a low number of listings on job boards -- I disagree with his statement that JavaFX is in a state of decline.  Here are six reasons why I'm bullish on JavaFX in 2016.

1. The Mac

A little over 1 in 10 personal computers are Macs.  That figure should carry more weight given the overwhelming presence of Apple products in the mobile arena: iPhone, iPad.  And it's way up from the 3% figure in 1999.  Macs are no longer just for students and creative types. They're mainstream.

When employees have PCs and the manager down the hall brings in his or her Mac, you need a multi-platform development solution.  JavaFX programs run without modification on both platforms.

2. Windows 10

What about the other 90% of the computers?

Windows 10 highlights the importance of the desktop (including docked laptop) app.  You no longer have to split your PC development into a desktop version and a mobile-ready Windows 8 Metro version. Instead of looking for a one-size-fits-all form factor to be dominant, Windows 10 recognizes that the desktop is more important than ever.  JavaFX is a desktop technology well-suited for building complex apps for today's knowledge worker.

3. Scene Builder

There are only a few dozen of JavaFX jobs on Dice, but nearly 2500 iOS jobs (as of Jan 2, 2016).  What's driving all the iOS development?  Apple has put out a great development platform with XCode and Interface Builder.  Code (whether Swift or Objective-C) is separated from the volatility of the UI.  And significant UI work can be accomplished without coding, compiling, and running.


Scene Builder Showing a Sprite-Based App

Oracle's or Gluon's Scene Builder is a lot like like Interface Builder.  Build your UI through drag-and-drop and hit Control-P to preview immediately in a window (no coding, compiling, and running).  Link your JavaFX code in with a few references to fields and methods in a Java class.  The direction of JavaFX development is very much in line with Apple.

4. App Stores

Distributing an app used to be difficult.  Even after downloads overtook physical media, a zero-footprint webapp was very desirable.  It still is, but we have an installation culture where app stores (iTunes, Windows Store, etc) are popular.  Most JavaFX apps I've worked with use Web Start, but JavaFX comes with a native packaging system that lets your app run with an installer that has a Windows or Mac look-and-feel.

With users coached into finding an app and installing it, the removal of Applets running from browsers (swept away with Silverlight and Flash) isn't relevant.

5. Swing 2

Does the current number of jobs on Dice reflect the amount of JavaFX development activity?  Probably not because a Swing developer can easily pick up JavaFX skills.  With JavaFX 8, you can embed Swing code in JavaFX screens and JavaFX code in Swing screens.  So, rather than staffing up a project solely with new JavaFX developers, you can use in-house Swing talent to roll out JavaFX functionality on-the-margin.

Regardless of how JavaFX does in the long-term, I expect a short-term bump as Swing developers adopt JavaFX.  What's prevented this in the past has been the omission of JavaFX from standard Java.  Swing has been everywhere since Java 2.  JavaFX was first a separate download, then a co-located download with Java 7, and is now a Java extension with Java 8.  Once Java 7 ages out, you'll have access to a JavaFX Stage as easily as you do a Swing JFrame.

6. Legacy

Finally, and this is more a statement about Java than JavaFX, there is the mountain of legacy Java code.  This code may be desktop code, web app code, mobile code, and server-side code.   An organization's total cost of ownership is reduced by using common source code management, build, and packaging technologies.  To switch over to a C# app or a Swift MacOS app may be discarding too large of an investment.

The preceding six items are the reason why I feel comfortable in branding myself as a JavaFX developer.  Here are a few things to watch for in relation to JavaFX in the coming year.

OpenJDK

As a result of the Oracle / Google lawsuit, Google is throwing its energy behind OpenJDK to avoid intellectual property issues with Oracle's JDK for Android development.  There is also IBM's JDK.  Right now, JavaFX is a non-standard extension (a JAR in the /ext folder).  Hopefully, it's a cornerstone of all JDK platform in order to avoid an SWT-like situation (or worse a Microsoft Java situation) where the UI capabilities aren't available across-the-board.

Oracle Support

I was surprised to see Oracle cut some top Java staff a few months ago.  To some analysts, this signaled not only Oracle's waning interest in JavaFX, but a waning interest in Java as a whole.  Although I'm not sure why the staff was let go, I disagree that Oracle would abandon Java.  Apple puts out XCode and Swift (open sourced and available on other platforms).  Microsoft puts out Visual Studio and C#.  Large software-based companies need a development ecosystem to shore up their business and some have the clout to not only push APIs but whole programming languges.  Without Java, the "middle" of Oracle would be gone (Linux server side?), turning it into a storage vendor with some high-end apps (think EMC plus SAP).

I'm admittedly more biased on the matter than Mr. Krill since I've steered my consulting business into JavaFX.  However, this bias emphasizes the convictions of the points I made.  I've been programming for 25 years and have developed for a bunch of platforms and languages.  If I didn't think I could profit off of JavaFX, I'd be on to something else.

Carl Walker, President, Bekwam Inc

8 comments:

  1. Supporting point 5...
    A lot of enterprise and government software systems are quietly transitioning and the existing Java developers are simply picking up JavaFX. No need for a ruckus of advertising for a JavaFX hiring spree when you already have the developers.
    I am also seeing a lot of hybrid development last year and this year as existing software systems built on Swing/SWT based frameworks such as the NetBeans Platform and Eclipse Plugin Framework are building and interop'ing new tools with JavaFX. Why throw the baby out with the bath water?
    Again no need to hire a "JavaFX Developer" when an existing Java Developer with Swing experience can easily learn the new approaches.
    Thanks for the article.

    ReplyDelete
    Replies
    1. +1 to back that statement up. :) Switching over to JavaFX now.

      Delete
  2. All your points are about advantages of JavaFX. However cool JavaFX seems to you or me, they do not address the actual fact that the technology is not taking off ever since its release in 2008. Yes, it can do some cool stuff, but then again it is by no means becoming mainstream or popular in the foreseeable future. It seems frameworks like Qt are still dominating - and will be for many more years.

    ReplyDelete
    Replies
    1. JavaFX today is very different than what was put out in 2008. It's part of the JRE now rather than a separate download and JavaFX 8 fits well with functional programming (ex, binding). I think C# on Visual Studio for Windows and Swift on XCode for Mac will continue to be the dominant desktop development platforms. However, if points 5 and 6 resonate for your organization, JavaFX may be a great way to modernize without discarding a lot of code and experience.

      Delete
    2. What does "taking off" mean and why is that critical? If you're talking about seeing the hype level of something like Angular, you're not going to see that. If you NEED to see that kind of hype before you adopt a mature technology that has and will be around for many years, that's just silly. (BTW - I wonder if Angular 1.x will die off now that Angular 2 is about ready? The point is, there is even more uncertainty in the web world and its framework-of-the-year.) QT is popular in the C++ world I guess, but Java is bigger these days by far (and FX looks better out of the box...)

      Delete
    3. I'm writing about JavaFX being a good development option for a business supported by a vibrant community. I wouldn't expect webapp numbers from a desktop platform. Hype is important; casual decision makers will often base their decisions on hype. A decision maker may also base his or her opinion on a trusted developer who thoroughly investigates a technology. That developer might do a side-by-side comparison with another desktop cross-platform solution like Qt. If there are great examples, documentation, and tutorials on the web for JavaFX, the developer will feel comfortable recommending JavaFX.

      Delete
  3. So how did JavaFX do in 2016 in your opinion?

    ReplyDelete