Friday, May 9, 2008

JavaFX is a good thing! Really it is!

I feel like I must be the only person who thinks that JavaFX is a good thing.

As a Java developer who wrote his first Applet some ten years ago, I kind of find it hard to swallow when IT journalists say things like "Sun has discovered RIA's four years late".

I've got news for you pal, Sun discovered RIA's back in 1995.

What about Adobe Air? huh! don't make me laugh, I've been using Webstart for many, many years now.

Now Applets are not cool, their is no way to get around that, but they were RIA technology version 1.0 or maybe even version 0.9 and it's true that Flash and Silverlight are definitely version 2.0.

It's also true that JavaFX in terms of features doesn't bring too many new things to the table.

But is that a bad thing? There are so many reasons why JavaFX is a good thing. consider the following:

  • Somebody seems to forget to mention that JavaFX has the only runtime that has first class support for every major operating system. And that's not planned support, that's support that is available today. I'd like to see a Silverlight application running on AIX or even on my PS3.


  • JavaFX has the same runtime technology that powers many of the world's mission critical systems today. That full power is made available to you on the desktop. It might not be important for a Gmail interface but it is important for a corporate developer like me.


  • If Sun makes good on it's promises, JavaFX will be the only fully open source RIA with a fully open source runtime. It will even have open source development tools.


  • It means that companies can re-use their existing Java skills - aka, you and me - for the creation of RIAs.


  • If it does nothing else, maybe JavaFX might give some credibility back to Java as a GUI development tool. And maybe, just maybe it means that companies might start reconsidering deploying Swing based applications to the desktop. Especially considering that Swing has never been better than it is right now with beans binding and JSR-296, together with the vast array of Swing improvements under the hood.


  • If Java regains credibility on the desktop, it gives an opening to all languages running on the JVM on the desktop. Maybe it might allow Ruby to break the rails mould.


  • JavaFX is a very interesting language, I am personally looking forward to seeing where I can push it outside of the RIA space.


  • Having worked with XAML, the prospect of defining GUIs in horrid XML is very unappealing, give me flash and indeed JavaFX any day of the week
  • 10 comments:

    Casper Bang said...

    I don't really feel much sympathy for Sun, they could've (should've) followed through a LONG time ago with applets but now it's just too late.
    Go to websites that showcase Silverlight, or Flex, and you get a ton of examples right then and there.
    Go to javafx.com and you will see... yup, lots of AJAX and MOV demo's. Sorry but people are getting tired of only seeing JavaFX at JavaOne keynotes, it is vaporware until it can be run and found in the public.
    Also not really a healthy sign, that prominent Java/JavaFX people keeps leaving Sun for Adobe (Chet Haase, Romain Guy, Hans muller...)

    Per Olesen said...

    I really like Java. I work with it every day, and I like it. Have done so for many years. I was there when applets were cool.

    But I am using Flex for my RIA technology today. There is ONE good reason for this (and a whole bunch of small reasons, I am sure). That good reason is RUNTIME AVAILABILITY.

    Flex only needs the flash player. And the flash player is everywhere.

    Silverlight needs .Net runtime and the silverlight something too. Now, M$ might force this down your throat on new windows' and through windows update, but it is not as tried, proven and availabe as flash player is.

    JavaFX needs, ... well Java on the client. Many haven't got it. Many have the wrong version. The downloads are huge, with potential huge impact on installing new, when thinking about existing installed apps. And flash player is more "allowed" on clients, than Java is, when talking with security people controlling desktop installations.

    So, JavaFX might be nice enough in itself as a technology, but that is not all that counts. Applets newer became cool. At large, because the runtime was not universially available and working, "out there". And it never became so (in the browser). It still isn't there.

    Sorry!

    Jeremiah said...

    Webkit + Flash + HTML = AIR. I don't have a lot of faith in AIR. I'd rather go to my web browser's bookmarks to start a web application than goto my start menu. Am I alone on this, haha.

    It's true Java is on all major operating systems (and some OS's that are not so major). But let's not forget about the Mono project. It does allow for true cross platform .NET and even has iPhone support (unofficial). With the open-source Moonlight project, I think you will see Silverlight applications on your PS3 ;). Where JavaFX really shines is not a comparison with Silverlight or Flash, but with WPF XBAPs (real WPF app in a browser). JavaFX can have fully accelerated UI cross-platform, where WPF XBAPs are Windows only.

    JavaFX sits right on Java, which is a great thing, just as WPF sits on .NET. Silverlight (aka Mini-WPF) runs on top of its own, but the same .NET CLR. It was optimized for size (ie, they took out all the unneed things like COM interop). This means SL can compete with Flash's small download size, but its hard for Java to compete in that area. So I say, JavaFX is good for the Desktop, not so good for the web browser. The Java "cold-start" time doesn't help the web experience either, depending on what type of web audience you have (casual browsers or power users). I did appriciate the "detachable" applet feature of JavaFX.

    About JavaFX being open-source. Not sure how I take this statement from the JavaFX FAQ: "The JavaFX compiler, runtime engine, player, and tools currently under development are not expected to be open source." But really...if it works and works well, does it matter that much?

    I absolutely agree about JavaFX bringing back some credibility back to Java in the GUI area. Java has a bad rep for having a slew of clean, but very boring battle-ship gray applications. Even the new Azureus Vuze looks/runs like a pig with lipstick. Can't wait to see what it looks like with a JavaFX makeover.

    (Disclaimer: I'm a hardcore WPF addict) About XAML. I find it to be the best UI development model to date. The best thing is, the designers I work with have been able to pick it up very quickly. I am interested how designers are going to react to the javascript/JSON syntax of JavaFX. I dunno, try out Blend with a WPF application and maybe you'll be impressed? BTW, doesn't Flash do UI with XML (MXML?). And if you don't like XAML, you could always do your UI in code and with the new c# object initializers syntax, you make make it look pretty close JavaFX script ;)

    So yeah. To sum it up: AIR is unnecessary/a hack. Flash is pretty good and established. Flex is a valiant effort. SL is FAST and woos developers. JavaFX going to be a great thing. WPF is better ;)

    Per Olesen said...

    @jeremiah: Seriously, we are many that have a hard time seeing Silverlight get on any other platform than windows, for real.

    Yeah yeah, there is mono. Mono has become the top excuse when using Microsoft .Net to develop apps that need to work on a slew of platforms and then saying: "Hey, don't forget mono, now we are on all platforms".

    Jeremiah said...

    Um..Silverlight is already on platforms other than Windows. I'm running it my Mac right now and executes .NET just fine. I've tried it on Linux via Moonlight and it works fine also (though not as mature).

    Mono is never an excuse, but a solution. Don't forget how many umpteen proprietary (non-sun) versions of the JVM there are, some created to run on platforms NOT supported by Sun.

    I try to look at all development platforms objectively, and try not to fall into bigot status. Which is why I like these blog posts.

    Per Olesen said...

    @jeremiah: Well, you might be right, that one can get most of it to run on Mac and linux using mono.

    But I still think, that Silverlight is in the same trouble as JavaFX with respect to runtime. They might be better on Windows over time (at least in IE), but there still has to be someone that actively installs the runtime, prior to running anything.

    Not so with flex/flash. They really have a thing going for them there.

    And of course, you are right. One shall look objectively on all development/runtime platforms. I try to myself.

    julian_za said...

    My own view from the feedback...

    - I don't have much sympathy for SUN or any major vendor either, but I don't see any other Java partner going after the RIA space

    - Java is maybe not highly prevalent on the windows desktop, but it is prevalent everywhere else. consider that a Mac comes with Java pre-installed and most cell phones already run J2ME

    - Sun has done a lot of work on the Java runtime size and startup speed (have you heard of the Java kernel)

    - the PS3 has Java NOW, my Symbian phone has Java NOW, my Mac has Java NOW. I can also get a supported production runtime for my Linux machine and my Windows Machine NOW. Furthermore all the standard libraries and extensions work across all platforms.

    - The codecs in JavaFX definitely won't be open source and the any third party tools such as the rumored Dreamweaver plugin also won't be, but the Netbeans plugin is as far as I understand.

    - It's a legacy off my days of configuring spring beans and EJB 2.0 descriptors but I hate "programming" in XML which WPF effectively is. After having Ruby style DSLs to configure UIs I much prefer that, and JavaFX is more in that vein. (Perhaps I should start a project: RubyFX :-)"

    linnwar said...

    The only fact why java tech are still alive today, the only fact is the power that brings to programming, is a purely object based technology, and yeah it may have a down time at runtime but it has its benefits, more security and in the end thats what everyone looks for when developing, and yes it needed a better UI tech and JFX came to start solving the issue so, Yes we should belive in java

    Android app development said...

    This is one of the excellent post.Your blog information is highly developed and good.I like your post detail.
    Android app developers

    Android app development said...

    Really your blog provide me good experience.Your blog basic information is really good.I like this post.Thanks for your support.Good.Keep it up.
    Android app developers