Remember that we're talking mobile java here, where there isn't such a thing as 'the jvm' as it's a different one on each phone, right?
Jep, and that is just the beginning.
I've worked with j2me, and trust me.. it sucks.
I know, I know, people don't like it when you say anything bad about java. But, seriously, j2me is so bad it makes baby jesus cry.
No two phones work the same, it's EXTREMELY slow (no proper compilation does that), and it helps enforce the misconception that java in general sucks.
I work with j2me prefessionally and yes, it sucks but only because the phone manufacturers do crazy stuff with their implementations.
That is not j2me's fault.
Everything in and around j2me revolves around what the phone manus do. If they give you a crappy version, there is not a flipping thing we can do.
And let us remember one thing, these are phones. J2me is an added bonus by them. The phone manus hope to sell more devices if it is on but, if you check out the effort they put into the sdks, you'd see they don't really give a crap.
We are happy to get working emulators.. and even better if they act nearly like the devices.
It's not really possible to gain any major speed benefits by optimising the byte code.. we're talking an improvement of perhaps 10%, if you're lucky. And that still leaves java waaaay behind native apps.
You can forget about getting your hands on the a system sdk.
Not to mention the systems are different for each device.
I've talked with one guy from Gameloft when I attended the Montreal Game summit last fall and he told me that J2ME game developpers are very good at optimizing the byte code of their games with optimizers. Not that it's a simple and particularly pleasant task. If a simple developper tries to develop something in J2ME by its own then I might not have the proper expertise to speed up its game and come up with conclusions like yours. But I'm not contradicting you about the lack of performance of CMV.
A single developer will not be able to know what will work on each device.
We have extensive documentations about all this stuff and a toolchain to match.
Also you want to reach as many customers as possible and that means covering everything from the low to high end.
S30/40/T610's slow as a snail with 96x65 & 64kb limit to SE750s with massive power and high res screens (compared to S30/S40s).
For as much as I respect John, stuff like this tears at that image.