JavaFX is Alive and Doing Very Well
No, yours truly did not hear a loud thud of the Blackberry Developer Conference
door closing a fortnight ago [9-12 November 2009]. No, I do not care if
it was a resounding success or not. No, I do have a Blackberry phone or
even need one as a work phone. Do I care for the Blackberry platform?
Absolutely not. I care even less when I spoke to a young developer
Gustavo, last night, at the Eclipse Demo Camp at Skills Matter new
home in Clerkenwell London, when he told me about the developers, of
which he personally knows, who bemoan writing code for the such
Server Side Article: Hard Times for JavaFX
Did RIM BlackBerry Kill JavaFX?
Silverlight: Universal GUI Toolkit
The Point of it AllI believe that Steve Algin is missing the point. JavaFX like Scala, Groovy and any other JVM language is built on Java platform technology, which means there is a virtual machine interpreting or processing byte codes. All one needs to get a Java program to work any physical device is a runtime, a port of the JVM and the surrounding libraries. Java can then run on that device. That is the point. JavaFX developers will not have care about the device too much if they have a running JVM and the JavaFX runtime ported to Blackberry device. The biggest benefit they can the same code on a different phone with a completely different operating systems.
"JavaFX Platform is a great, dynamic visual presentation tier with lots of promise, in need of a champion to implement and support. It may be too soon to really say, but JavaFX is clearly in a perilous state."If you do not know JavaFX at all. It is technology built around profiles: desktop and common "mobile" at the moment. The author of the BlackBerry article clearly opines with some business knowledge about the state of the RIA world. Where is the proof of this perilous state? Has the said author been party to the non-disclosed business executive meetings between the aforementioned companies. I believe if you are looking for significant backing from any mobile phone maker, carrier or operator, then the mobile phone application market is currently dislocated. It is more dislocated than the desktop market. At the root of the dislocation is product line engineering architecture. The costs are becoming more expensive, if you are mobile application vendor and must deploy to more than one mobile operating system and therefore provide customer facing support. It is hard to do equally and effectively across all mobile platform, if there is no cross-platform environment or solution. Worst, you will decide only support consumer on the current strongest mobile platform and leave the weaker one's for the smaller fry other yourself.
There is no device profile, other a certain iPhoneOS combination, which has all the development tools, user experience and elegant human computer interfaces, ease-of-deployment and operating system in the viable combination of hardware, efficiency, power and economy. In other word iPhone as a mobile platform is strong, because its of popularity. I believe you will find the iPhone mobile platform is the current one to beat or the one to compete with it. There is only single one issue that many commentators, developers and designer might have with it.
The lack of FX tools is explained by Sun Microsystems taking along time to get an authoring tool together and also any sort of rapid application development tool together. Perhaps, they underestimated the take up of FX and expected third party developers to help. As many people have commented Sun has not been the best marketer of its own intellectual property in the past as say Oracle have been. There is no doubt about the technological vector of progress of JavaFX in comparison with the Swing / Abstract Windows Toolkit formula. In fact, rather than replace the Swing / AWT, JavaFX builds on top of it. In the future JavaFX will built on a different graphics pipeline that by passing the older AWT based technology
Now yours truly is particularly not saying that Write-Once-Run-Anywhere is approachable for all devices. It might be true on the desktop that one can write a Java and Swing application that will work on Windows, Linux and MacOS, I would hazard to guess this is regrettably not by any means true for every single mobile and embedded devices. The benefit of virtual machine that can run your single program across platform has been the story of the last fifthteen years. There used to be lots of C/C++ frameworks claiming to solve multi-platform Windows GUI development issues for companies back in the 1990s. I know at least one of them survived, which actually worked, the TrollTech Qt framework survived, because it was used as a basis for KDE and other Linux embedded devices. Many of the commercial frameworks did fall away into obsolescense.
Swing and Immediate Mode Rendering
Ten years ago, yours truly was struggling with then nascent Swing API.
I actually reviewed one of the first Manning computer books on the
subject. It was a pleasant tome called Swing by Robinson and Vorobiev
with rather decent examples of how get decent graphics enterprise
application out. At the time, lots of developers had problem printing
graphics with Swing, this was the book, which had good examples a the
time, when most of us struggled to download code over a 56K dial-up
The world is much different place, Swing was at least two or three years of development from Sun and contained code and idea contributions from Netscape, I think. Java being a virtual machine and Swing with a flexible user interface were the game chang. It featured the pluggable look-and-feel to solve the graphics U/X issue at the time. Using the Abstract Windowing Toolkit before AWT made the cross platform experience look dreadful, you could always tell when a Java application was running. In fact, you can still see these user interfaces today at many investment banks in the City of London and elsewhere around the globe. How many of you have encountered the Reuters Electronic Trading platform , IRIS trading board or others variation based on the Java Plug-in? Graphics technology has moved on from direct painting API with a Graphics Context, since those heady days of Borland Pascal orTurbo C++ with it fabulous Unit (Borland Graphics Interface) module, or X Windows / OSF Motif. [ The former made get a little bit of let off from my rebuke, because X also did have a rarely used framework called XPHIGS or PHIGS and which brings me to my point]. Unless you are a hardcore assembler programmer or graphics processor unit shading guru of some capacity, you probably do not want to messing with the direct graphics API. If you manipulating graphics, you want to do it in object based fashion, hence a scene graph, or simply a scene of graphics objects, called nodes is the current way and the future. JavaFX has a scene-graphfor 2D graphics from the beginning, and next year , fingers crossed, 3D graphics will be available.
Moving from the Direct Rendering API (as known as immediate mode rendering) to a scene-graph is a learning curve for many traditional Swing programmers. JavaFX language too is declarative in practice rather than imperative. At first, programming with JavaFX is a foreign landscape, because perhaps you I believe building enterprise application is harder with FX 1.2.1, because the ABC building block aren't quite there. A bunch of us early adopters have been tackling the problem of "missing components in JavaFX", namely Stephen Chin with his JFXtras Project and myself with Nelson FX.
"It’s been out there for 2+ years now, but still lacks the tooling, significant backing from mobile and RIA players in the market beyond Oracle-Sun and Sony. And Oracle acquiring Sun…"
What is the biggest and most succesful walled garden on a mobile Internet phone device of the moment that everyone knows is out there? What is device has been most iconic and successful electronic gadget of "The Noughties"? Your answer should be the Apple iPhone and Apple iPod Touch and it is respective iPhoneOS SDK. When Apple announced the iPhone at the WWDC in January 2007, who could have suspected the blow from the corporate prize fighter that shook up the whole mobile phone industry. Having conquer the portable MP3 market, Apple pushed itself into a foreign and brutally, if I say so myself, mobile industry vertical. The iPhone generation 2007 was one amazing heavyweight punch by an unknown fighter taking the whole industry by storm. However, one punch will not win you a world championship boxing fight, but then the came another fabulous blow after the hefty upper left cut. Apple launched much later another blow to the side of your head, the application store, the "App Store", and then the former champion is down. Game over 2008 and 2009.
I believe that [former as I am writing this in 2009] champion is Nokia Communications. The fact that Nokia is now suing Apple looks very much to the public suddenly as the unfortunate taste of sour grapes. Nokia has the highest market share of mobile industry marketplace according to Gartner and Lexis Nexis and others. The champion sitting on top of the innovation world with user experience, hardware, intelligent smarts to put all together device, is Apple Corporation, right here, right now. Some commenters and other noted developers, designers and architects say Apple is closed and it's iPhoneOS is a strict walled garden and its approach to being the manager, jude and jury is just plainly wrong.. Perhaps, they are right, because there are some of us who believe Apple has had an accidental triumph and it never expected the popular of the application store to be most valuable attribution.
Having said all of that, there are rumours about both Sun Microsystems and Adobe that they attempted to get their products [Java and Flash] on to the iPhone through discussions with Apple legally into the Application Store. There is a clause in the iPhoneOS contract that precludes anyone creating a virtual machine on the device, which prevents those application being distributed officially with Apple AppStore. To be absolutely fair, it could be unfair for Apple to "bless" one virtual machine over another, and for anti-monopolist commissions, it could be seen as anti-competitive behaviour to the other vendor.
Plus, there are also major vendors who do not care about the iPhone, but need to compete with it, namely Microsoft, Google and Research in Mobile. This is all well and good, because I believe that the touch screen revolution is here to stay. You see, the reason that JavaFX appears to have stagnated to some, is because we are in a middle of recession. The tide of confidence and trust, let alone money is extremely low for a good all players in the market. So it is not surprising at the least that innovation and early adoption of rich user interface technologies is slow.
In a collapsed economy, it appears the whole market and its opportunities have been compromised. The market is compressed, stagnant and superficially dormant. Once, the wheels of a turn around start turning, however, do not be surprised that there is room for all the major RIA players, as the author calls them. It is not the end for JavaFX, Flex or Silverlight, rather it is very the beginning, at least there are playing the game with a team. You can play the game, if you do not have a team to play in.
As I saw at Devoxx Conference last week, Adobe are looking to offer a Flash CS 5 cross compiler to the iPhone for their Flex customers. Sun Microsystems in a podcast "This Ain't Your Dad's Java" (Episode 1509: I hate Brussels Sprouts), the marketing department, mentioned they originally discussed the possibility of riding the Java cross-compiler locomotive to the Objective C / iPhoneOS, but they stopped this train of thought, never entertained the notion of making it a reality, because they thought that it invalidate the heritage of Java Virtual Machines.
"Ericsson is an Android partner though. It remains to be seen how well Android and JavaFX Mobile work together technically. And, there’s the promise of HTML 5 for RIA as well over the next few years. With Android, iPhone Objective-C/Cocoa, BlackBerry, and to a less degree Symbian, Windows Mobile and Palm webOS - I don’t see much hope for JavaFX Mobile as an RIA solution, especially with BlackBerry deciding on Flash. The question for RIM… will they support JavaFX in addition to Flash?"
The author is quite on the side of BlackBerry development platform, and it sounds to me that the senior executives are uncertain of which racehorse to back. Generally, it is a difficult conundrum for the phone makers, providers and possibly the carriers. It is precisely that the iPhone, itself, is a walled-garden that allows the competitor to continue exist. In two years, Apple has produced three generations of phone. The last one [3GS] is a twice the performance of the first one [2G] and that is a technical achievement worth of note. How many enterprise managers and architects can say they have truly doubled performance of the runtime and still increased the technical vaulting bar over the competition? Yet, if Java and JavaFX were ported to those devices in a timely then it the ease-of-development and time-to-market would be economic, efficient and productive.
JavaFX Desktop has even a harder road to go, imho, with Flash and Silverlight, by far, the dominant players. Java’s strength has been server-side and mobile, then desktop last.The server side has been the strength of Java and it badly needs to get to desktop. Sun promised that they would do this at JavaOne 2007. It is unfair to say that they did not achieve this goal. They brought Java 6 Update 10 to most us, which allowed the applet to disconnect from a physical browser. It means that they do not have to worry to much about Universal Silverlight or Adobe AIR, Java runs already as WebStart application. JavaFX is built on WebStart so it gets that advantage. Include with that Groovy and any other JVM language. Oh by the way do you not see that the concept of Web Portal is not over, I will not say dead as Stephen Algin writes. Let me put it this way, the aggregated Web Portal as supplied by portlets is mostly superseded by a better application architecture, the application app store. Why have an aggregation of web pages from different servers depicting separate web applications, when you could have, instead, an aggregation of Applets (or JNLP applications in the JVM language of your choice [yes including JavaFX])? Such applications can be deployed so that communicate with each other using a web server, instead of relying on portlet and portal server standards. Incidentally, if you really want to see Portals and Portlets don't correctly you need look no further than Auntie Beeb's website (The British Broadcasting Corporation). Sun Microsystems is furnishing an application store as we speak ...
On the mobile phone, my predictions are that Nokia will continue to find the waters very difficult to survive in 2010. In my opinion the Nokia N97 touchscreen smart phone with resistive technology was a disaster in the making. [I went to Nokia's flagship store in Regent Street, London across the road from the Apple store. I did not enjoy the N97 experience at all] Apple will continue to surge aheard with the AppStore. Adobe will push the cross compiler. Sun and Oracle will get together to shake some hands and get some deals with the mobile phone makers and carriers. I do not think Java or ActionScript will be running on an Apple iPhone in 2010 with Apple's approval. I expect it to be on the other verticals, may be Android, Windows Mobile 7 and if it not the Blackberry then perhaps there is WebOS to look to.
Alive: Portable, Networkable and Secure
"More and more, JavaFX seems to be all but dead now. It’s last, best hope or two… fully being distributed to the Open Source community, whether it’s Apache.org, Sourceforge.net, etc. imho."
So is this the agenda here? An attempt to get Sun Microsystems to turn over JavaFX to the open source community. I believe they started that way with openJFX, but you will have to ask them for the true intentions of their reasons, especially after taking the JavaFX SDK behind closed doors. I agree with the author, Steve Algin, here, that we need more early access releases and transparent releases of the versions.
Which reminds me, what ever did happen to the JavaFX SDK port, early pre-version 1.0, to the Android platform a few years ago? There was key note demonstration at JavaOne 2008 and we never heard who did it and what became of the port. The ported code, the proof-of-concept, was never released.
It is very hard to innovate when someone is constantly coming up to your desk location, tapping you on your shoulder, and keeps asking where is the product today? Sometimes you need to develop software like the scientistin a laboratory, the advantage is clearly that software could be produced sooner rather than later. However, please do come out of the laboratory, every once in a while, and show us whatever you have been working.
Flash Forward: Beyond Market Dislocation
The economic climate and market dislocation are also factor, not
excuses, to delays in software, including runtimes, toolkits and
framework. For a public outsider, it can appear that everything is
moving dead slow and projects, releases and architectures are
continuously delayed. People get itchy feet and frustrated at the sign
of the times, executives start make to hasty decisions, sometime they
get it wrong, sometimes badly wrong This month's boardroom choice might
be the entirely wrong one after hindsight, one month later. Decisions,
decision, decision, it is absolutely awful to get one completely
incorrect and lead human lives down the wrong path. Sadly, this is
where we are and if you have not notices already we are in a worldwide
economic recession. In our role as outsiders we can only be publicly
encouraging and supportive to the people who are great engineers who
are ultimately going to provide great benefits to our development
lives. Let us me clear on this note, the teams at Sun, Adobe and
Microsystems ought to be congratulated for their Stoicism. Next time,
you might consider if you can produce great software with constant
chagrin of criticism, and being told that you are doing it wrong.
Software, unfortunately, is not produced without cost, even open source
software at that. It is very easy to fall into negativity. The
situation will not change any quicker, and it will still be same as it
was yesterday. There is only ever one way to change the world, you do
something about it. So developers and designers of JavaFX, I applaud
you all for making APIs. JavaFX is very much alive. Word.
I am grateful for the ability to be apart of the JavaFX innovation. The driver for me is the Thank-You economic, driven by passion. I am grateful for the opportunity that I have the knowledge to produce great software. The crown jewels is Java and the virtual machine. The rest of the estate lies around the crown and the castle tower walls, be that JavaFX, Fantom, Scala, JRuby, Groovy or any other JVM language.