When I attended Library House’s MediaTech 2.006 conference in December 2006, I bumped into an old colleague of mine Francis Charig. Francis is CEO of the Tao Group (pronounced ‘dow group’) based in Reading, UK. I think I first met Francis, back in the mid 1990s when they were moving to enter the mobile middleware market. The company was formed in 1992 with Francis as Chairman and Chris Hinsley as the Director of Technology. Their original product was a software development platform that enabled games programmers to develop games that were portable across a number of operating systems.
Over the years this has morphed into intent, a modular software development platform for the creation of rich multimedia services on mobile phones. intent enables applications developers to write binary, portable, native and Java services without the “behavioral inconsistencies that have plagued the rest of the industry.”
In my chat with Francis, we were talking about today’s complexities of developing applications that are able to run on a multiplicity of phones. I mentioned to him that with an application I was developing I was avoiding the use of phone based software (J2EE et al) like the plague because it was so challenging, if not impossible, to develop a portable application. Fortunately, my application is a very simple text based application and the best way to deliver this service is through the phone’s browser. Taking that path, portability is ensured with minimum support costs.
The conversation then moved the conversation on to Java and I exclaimed “I thought so”!
However, it might be best to directly quote from Francis’ paper:
“Many expected Java to be the solution [to multimedia application development on mobile phones]. But now the market has broadly woken up to Java’s true capabilities with the gaming community shouting, “I told you so.”
In its defense, Java wasn’t designed for the delivery of the typical consumer services we want to use today based around powerful multimedia. The only way to deliver rich media on Java, even to a fairly rudimentary level has been to tie each implementation so closely with the underlying hardware that the portability of the platform has been all but eliminated, and the variation in platform has been such that there are huge inconsistencies in running the same application across multiple devices. To illustrate the fragmentation around Java, in the mobile games world the requirement to run across so many handsets has meant that publishers have had to maintain literally hundreds of different SKUs of just of a single Java game, and with significant behavioural differences between handsets.
Java was not designed with 21st century market requirements in mind. It was planned with certain objectives and those objectives, by and large, were fulfilled and fulfilled to a high standard. What it was not designed to do was enable services such as the more advanced 3D mapping applications or competitive casual or console gaming. Java is abstracted too far away from the hardware that powers the device to provide an efficient platform and the ubiquity that the market craves.
Consequently, we have seen application developers move in 2006 to writing in high-level languages that output native codes such as C and C++. This is a return to non-portable platforms with rich media APIs tied to specific hardware/software combinations… Our industry has moved from a Java to post-Java market, where Java still exists as an important part of the platform but not the entire platform itself… ‘Write once, run once’. But native code is required to meet consumer expectations. It’s quite a dichotomy.”
This is really quite profound in its consequences and, as Francis says, presents quite a dilemma to advanced mobile service developers.
Maybe I’ll stick to browser-based WML, XHTML or even AJAX solutions for the moment or just give Francis a call!