Op-Ed: Java is still struggling on post-PC devices
The latest version of ADF Mobile allows Java to be run as part of native iOS apps, but its an ugly hack, not a robust solution.
release of ADF Mobile comes with the intriguing ability to
embed JVMs inside of cross-platform native mobile apps (including
iOS), utilising PhoneGap to serve up Java-powered embedded web
pages. It can even access native device services such as the
camera, contacts and
notifications. Could Oracle have somehow snuck Java onto
Apple’s notoriously closed ecosystem?
In a market increasingly composed of post-PC devices, Java is struggling to match the success it found on traditional desktops. An iPhone JVM was proposed as early as 2008, before developers realised that app store reviewers had a very low tolerance for apps coded in anything but Objective-C (although this policy has been relaxed somewhat since).
Meanwhile on Android, Google’s attempts to sidestep Sun/Oracle’s licensing restrictions by using Java syntax without running actual Java have led to endless lawsuits, and even the upcoming Windows 8 will not run Java apps in the new ‘Metro’ environment.
In this bleak context, bringing “cross platform Java dev to mobile devices” sounds too good to be true. A post on the ADF Mobile blog (thankfully absent from typical PR-speak) outlines the architecture:
ADF Mobile is a “hybrid” architecture that employs a natively built “container” on each platform that hosts a number of browser windows that are used to display the application content. We add the Java VM as a natively built library to the container for business logic.
As you may have gathered, this isn’t exactly WORA finally
reaching the app stores. On iOS, ADF-produced apps will likely be
subject to even worse performance than regular web apps running
Mobile Safari (as WebView containers are not allowed
native code. With the overhead of running an entire JVM on top of
this, it’s difficult to imagine any ADF Mobile apps being described
as anything other than “sluggish”.
Perhaps to developers of internal enterprise apps, serving up boring, static lists and dialogues, this might be acceptable, but as Oracle VP of product management Bill Pataky admits, games even as basic as Angry Birds are impossible under these circumstances.
The truth is that these platform manufacturers don’t want runtimes outside of their control on their new systems. This is an era of increasingly closed platforms, whether developers like it or not, and Java will remain a second-class citizen – only able to run via ugly hacks like this embedding of JVMs.
Unless something radical happens, Java will continue to disappear from the client-side, banished forever to run on servers instead; after all, even the traditional desktop is abandoning it, in part thanks to endless security gaffes. Perhaps ADF Mobile will suddenly bring new relevancy to Java on post-PC devices, but we wouldn’t count on it.