Sun’s Java Micro Edition (Java ME, or J2ME that was) is the nearest thing mobile currently has to a mass market application platform for mobile. It’s deployed on billions of handsets worldwide and while pretenders to the throne do emerge from time to time, none of them have seriously threatened the incumbent.
Which, on balance, is a surprise as it’s a bitch to develop for.
The idea behind a platform should be that once the application is written, it can be deployed quickly and easily on any device in the marketplace. This might be a little idealistic and in reality, some tweaking might reasonably be expected as the application is ported across to different devices. However, the porting experience for Java ME is nothing short of horrendous and seems to be getting worse.
According to a Greg Ballard of mobile games maker, Glu, in a recent interview in Mobile Entertainment, their Transformers game needed no less than 25,000 SKUs (or variants). 25,000! This has reached the point of absurdity.
It’s not just a question of inefficiencies though. As I’ve written before, if developers have to port an application this many times, it retards innovation in the development process. In other words, it’s not practical to make changes to the application on an ongoing basis, like we can on the web, as the porting process is so damn complex. Rather, we must wait for the next version to be released, like software. This leads to less than perfect products and a user experience that could always be improved - I mean, it’s just not possible to get products right first time and every time.
Apologists for Sun will undoubtedly claim that it’s the handset manufacturers who are to blame here and undoubtedly, there’s certainly a large dollop of truth in this. However, I think it’s also fair to say that Sun could do an awful lot more to create better standards and establish best practices. The whole point of a platform is to save developer’s time and money in writing software and we’re surely fast approaching the point where it might make more sense to develop applications to support specific handsets. Indeed, that’s already happening with the iPhone.
And in the meantime, everyone in the mobile value chain suffers. Developers are spending far more time and effort in the porting process than is practical or economic. And users experience products that could be improved iteratively and are starved of new innovative companies coming into the market, as they’re put off by the costs of launching anything.
So, come on Sun. Please get it sorted. Or someone, at some point, will come along and steal your market right from under your nose.





Hey, could you find a direct reference for the Glu reference? I only found http://www.mobile-ent.biz/news/27533/Glu-primes-Transformers-content
For that, the number was 20,000 and included “Transformers content SKUs” including ring tones, wallpapers, games, and so forth for 150 operators in 65 countries. I couldn’t deduce how much of that was a result of Java ME fragmentation issues.
Barbara - not sure about online, but if you download the electronic version of the mag - there’s a link in top right of their home page, under the search box - it’s on page 20 “Games Special Focus”. It’s the penultimate question of the interview. You will need to register.
Russell
Didn’t you write this post a year ago Russ?
http://mobhappy.com/blog1/2006/04/26/the-frustrations-of-java/
The only sensible way forward is for someone (nokia, sun and sony) to create an abstraction layer that shields johnny developer from the fragmentation issues. J2Mepolish is a start and I remember appforphones a while back. I doubt they will do it though.
The output of this kind of tool would be regular java byte code, but byte code that had a chance of working.
Without this we are just treading water, browsers are too slow/primitive, java is bust and everything else (android, flash, openmoko) is jam tomorrow.
Just my penith, keep on blogging.
Cheers
Richard.
raddedas - it’s known as a “theme”
Seriously, I’ll keep posting about it and keep citing new evidence for quite how ridiculous it is until something gets resolved - one way or another. It’s broke and someone needs to fix it.
Russell
Hello Russell,
I am the former CTO of In-Fusio, and I don’t how they can reach 25000 SKU for a game. The most complex one are usually in the range of thousands, not tenth of thousands.
Also, it’s not Sun’s only fault. Publisher had to go into the direction of one sku/handset/operator. They build tools for this, to manage most of the processes. At one point, the number of SKUs is not really significant as having 1000 more does not cost a lot if the toolchain is well designed. What is costly is to build this knowledge and toolchain.
On the other hand, some application developpers like Webwag or others (Opera , Widset ) choose to go into the opposite direction: reduce the number of SKUs to the strict minimum: if not one, less then a dizains. But the rationale is different: we are building an evolving product, not a one shot game.
But you’re right, Sun could have done a much better job instead of trying to please everybody in the industry (except developpers)
Hi Russell,
I’d have to agree with Thomas there - 25,000 SKUs seems excessive. But if you imagine they do maybe 100 builds per game per language (and that’s a lot), maybe 25 languages, 10 operator variants per language (on average)? That could just about get you to 25,000 - the operator variations would be trivial name changes etc, the language rebuilds are also basically trivial, and the cross-device builds also would be semi-automated to set up just requiring tweaks during the QA process. Not actually much effort, once you’re set up to deal with it - I have systems running which do at least that much on a regular basis with minimal management.
I have just written a blog post you might be interested in which sets out to explain why this is a problem innate in mobile, not just Java: http://blog.masabi.com/2008/01/truth-about-mobile-fragmentation.html
I am certainly not going to apologise for Sun’s mistakes in the way they’ve handled JavaME, but also I’m glad that there is one single platform capable of addressing most of the market with a decent amount of power and I’m realistic enough to know that it is the handset market more than the platform itself which is at fault.
Tom
There seems to be some argument in the Blogosphere about whether 25,000 is the right figure or not. Personally, if the the MD of Glu says that’s the number, I’m going to accept that.
Even so, it’s completely missing the point. I don’t care if it’s 25,000 or 2,500 - it’s still way too many versions and it still cripples innovation and prevents new entrants coming to market. In many cases, it forces companies to abandon Java applications and try to do everything on the mobile web.
This is unacceptable.
Then there are others saying “Hey, that’s life, get over it”. Well, like others working in the space, I am over it and I have to accept it. But that doesn’t mean I should like it or not try to change it.
“Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That’s why all progress depends on unreasonable men.” George Bernard Shaw.
Russell
If you can find me an unreasonable man who can change billions of shipped handsets in a short timeframe, I would love to talk to him
In the absence of such a man, by all means publicise the problems, but the story of King Canute springs to mind.
Perhaps you haven’t read or disagree with the post I linked to, but I think it’s a problem innate in the platform and once one understands what the drivers are for fragmentation then it is easier to understand why a large number of builds are required - and easy to build tools to manage them. The mobile web also requires such tools with many device-tailored markup required and an equivalent QA overhead - I’m not claiming it’s perfect or even nice but the marketplace won’t change for us because developers are still not a priority in a market that is focussed on shipping as many shiny boxes every month as it can.
As we have been doing this for 7 years, we don’t find it particularly impractical just a fact of life
Tom
I think the conversation above has missed the reason for the fragmentation. Let’s compare the mobile industry to the peak of the Palm OS economy, around 5 years ago. PalmSource was licensing its OS to multiple device manufacturers (TapWave, HandSpring, Symbol, PalmOne, etc). They had a strong certification program to ensure app compatibility across handsets, including well-executed backwards compatibility. But that’s what PalmSource was trying to do: Sell a platform with a very wide variety of apps available. The big secret of Palm OS, despite the purportedly huge developer community, was that less than a quarter of users were actually installing third party apps. Still, a reliable platform was a priority, and so their platform certification program had teeth. If a device didn’t pass their tests, it wasn’t allowed to ship with Palm OS.
Looking at mobile phones, the ecosystem is different. Everyone realizes that the primary function is to make phone calls, not provide an open platform with a rich variety of apps. Let’s say a phone OEM has a new device that’s ready to go, except that there’s a bug: when a J2ME app triggers vibration, the vibration continues until the device is power cycled. Is the OEM going to delay the phone’s live date, which interferes with the carriers’ marketing campaigns, or are they going to ship it and let the developers figure it out?
If I were the OEM, I wouldn’t risk the wrath of the carriers, who are the REAL customers. And the carriers don’t care if there’s a bug that affects a tiny fraction of users. If few Palm OS users ever installed an app, what percentage of mobile phone users do, and how many of them would even notice that vibration is missing?
People who analyze the mobile development economy by comparing it to PCs or Palm OS are missing crucial differences. Mobile phones aren’t intended to be a massive open platform. That would just lead to to 1000 different implementations of Klondike, like Palm OS has. This isn’t what makes most customers buy J2ME phones. This isn’t what makes money for the carriers.
I think the source of this misunderstanding is the audience discussing J2ME. Developers who talk about how J2ME is a fragmented platform compared to most others tend to be in that minority of users who actually want a variety of applications on their devices. They’re the early adopters, the gadget fetishists, the ones who want to see what’s possible, rather than what’s useful. Not that that’s a bad thing! I’m one of them! I’m just saying that such people tend to misunderstand what’s useful to the general market.
Tom - Sorry, I do understand what the drivers are here. But that doesn’t mean to say that we have to accept the status quo like a bunch of sheep. Where would we be if we just accepted everything because we understood why it happened?
I also know how good developers work around the issues - I’ve been working in this space for 7+ years too. But are you really suggesting that if Sun were to make significant improvements that you wouldn’t welcome it?
Bob - good points, but I don’t think anyone is misunderstanding anything here. Again, we understand why these things happen, but that doesn’t make them excusable.
Carriers are also (along with OEMs) rightly promoting mobiles as handheld computers these days and certainly that’s the way of the future. But if that future is to be meaningfully realised, we have to be able to compete on a level playing field with the PC - or something like it anyway. At the heart of the web’s success is rapid iteration and that’s something we’re denied in the mobile world.
Russell
Russell - sorry, I wasn’t trying to suggest you lacked mobile experience, I know that is not the case! I have no idea how much JavaME development you yourself have actually done, I was just saying that for me personally, bugs in Java implementations have taken up an increasingly small proportion of my team’s time over the years.
To answer your rhetorical question “Where would we be if we just accepted everything” - within the mobile industry, I would personally be exactly where I am now (which happens to be a rather nice place to be
). If I had maintained my initial frustration and anger and tried to change things I would probably have left mobile, or I would still be extremely angry and frustrated with far fewer achievements.
Of course I welcome improvements. The image of a small band of bloggers/developers/whatever standing up to the stupid policies of the big corporations is a lovely romantic image and I believe it is a fight that is well worth a little effort. However, for all the reasons Bob and I stated, I don’t think it will make much difference any time soon.
Possibly this thought experiment would help:
If we imagine that this blog post causes a seismic shift in the QA policies of Sun and all handset manufacturers today (and assumed fragmentation is purely caused by buggy implementations), we might start to feel the first fruits of that shift with devices released in 6 months time. With maybe a 12 month average upgrade cycle for the early adopters, we’re talking well over a year before you can start making coding policy decisions ‘as if’ everything worked nicely - and over two years before you could safely launch this code and expect good mainstream support. The developing world would be years behind.
Remember that fundamentally, Ericsson’s downfall as an individual manufacturer was caused by delays leading to a surplus of old product in a fashion-led market which then didn’t sell. This signalled very clearly the direction things have taken since - release delays will not be tolerated however buggy the dev platform is (see Nokia 7650, 6600, etc).
Sure, it sucks for new JavaME developers - it’s not an easy market to just jump into. It’s also not easy to jump into content optimisation and the markup variations of the mobile web either. Ditto writing a solid secure web service or managing a J2EE deployment. This is why people earn good money doing these things.
I’ll repeat - please, publicise the problems. Worst case, it may do some good and it cannot do much harm - I’d rather you pointed out the flaws in all development platforms rather than ignoring all but one, but that’s your choice. Just please leave off the “sheep” comments
“We can throw stones, complain about them, stumble on them, climb over them, or build with them.”
William Arthur Ward
(It’s a rare argument where you can’t find good quotes to back up both sides…)
PS Congrats on the DLD speaking slot, nice work! As we do appear to agree on the vast majority of things in the mobile industry, I am certain the audience is in safe hands
[...] MobHappy’s contribution this week comes from MobHappy’s Russell Buckley, who gave his latest update on the frustrating state of developing for Java ME. [...]