Mobile industry is transforming rapidly. Mobile operating systems and runtime stacks are at the center of this change. Mobile Linux, Android, and the lately announced Symbian Foundation, the trend is clear. The Mobile OSs are becoming license free and in most cases open source.
The same trend can also be observed on the runtimes that run on these mobile platforms as well. WebKit, which most (S60 , iPhone, Android) of the mobile browsers and web runtimes are based on, is license free and open source. Python, license free and open source. Flash runtime, has no license fees and open source. Java, NOT free and NOT really open source for the manufacturers to ship.
Things do not look very good for Java on the innovation front as well. Manufacturers have to deal with branding and compliance test license costs for mobile Java. This is an additional cost on top of acquiring or developing the Java runtime itself. After all the costs, the end result is MIDP which is not really the bang you want to get for your buck. When the innovative value of the runtimes are questioned, I am sure MIDP product managers are having hard time to justify the resources to put MIDP on the phones. The main reason that MIDP is keeping afloat is its huge install base but it is only a matter of time where other runtimes such as WebKit makes this irrelevant.
I believe the root of the problem is mobile Java vendor(s) have no alternate business model to the license fees. They have been trying to prevent a free Java to appear on Mobile phones just to be able to keep the licensing fees. The open source license choice of Sun’s open Java is partly due to that. Do you recall Apache’s open letter to Sun? The main reason for Sun putting “field of use” restrictions on JCK is another effort to prevent a free and open source Java to appear on mobile phones. Sadly, this is in expense of mobile Java and for a business model that can not be sustained for a long time.
So what are the possibilities for the future of Java on mobile?
The obvious scenario is it will cease to exist in mobile space by time with the exception of Android. Motorola lately announced that it reduces the software platforms that it uses and will start using Android as one of its preferred platforms. This is significant for two reasons because Motorola is still one of the major phone manufacturers and it is the specification lead for the MIDP3 JSR in JCP. MIDP3 is under specification work for almost 4 years now and I guess we will be waiting for it some more. Although the features and innovation of the MIDP3 is not significant anymore but the delays of its arrival is an indication.
Android is a confusing player in the mobile space. Officially it is not Java. It uses the Java language and Sun appears to like it (I can’t really figure out why), at least Android was the main mobile demo platform in the last JavaOne. Android blend of Java is designed as an integral part of the mobile platform rather than a runtime on top of it. This makes it powerful but makes it hard to port to other mobile platforms. This actually brings us to the next scenario.
Android Java becomes so favored that OSS projects start for porting Android to other operating systems such as Symbian, Windows Mobile etc. This is a big effort, I am not even sure if it is feasible. I am sure that it requires the collaboration of at least Nokia, and Google. Also the port must be done in parallel to avoid fragmentation. So it is a low possibility for the time being.
And my last scenario of the day is another open source implementation. Let’s assume for a moment that the mobile manufacturers and the mobile Java platform providers have realized that they are in a crash course. They decide that instead of trying to implement the same old proprietary MIDP in house, they can collaborate for a MIDP implementation that everyone can also use commercially. They can then start to spare some of their resources from implementing proprietary to adding innovative features and adopting new directions to mobile Java. The biggest obstacle with this scenario is companies are not really good at creating new business models and unfortunately such a change requires new business models for Java vendors, phone manufacturers, mobile network operators and even internet service companies.
This is all the scenarios I have for the day. Like them, dislike it, have a better one ? Comments are open, fire away.