I have worked in J2ME games development for two years and I can say that #1 is not off at all. There is no way around testing your application on all possible phones, because they all come with the weirdest bugs. For an example of what to expect: on some phones, PNG images show up broken if they are structured in a certain way (ie pixel dimensions not an even number or dimensions of image exceed screen size). Some method calls just crash the phone. Persistence might take forever or not work at all. Starting the application might take forever - on some phones it is slow if you load lots of small files, on other phones it is slow if you load fewer big files.
And it IS a pain to adapt to all possible screen sizes - granted, it might be a problem of designing the application, but as I was working on games, the design was often based on fixed size images. Especially as font support is crap with J2ME. Maybe flash for mobiles does a better job, haven't tried it.
Another thing that used to suck with J2ME: there is no standard for text entry, so it is difficult to integrate text entry nicely into your application. The only standard way is to switch to a blank screen that supports your phones text entry method, so you can't integrate it into your design.
Another problem, which I currently face: even if you know what phones you support, how can your customer know? Phones are usually not labeled with their technical name, so if you say "Nokia 6230i supported", it might mean nothing to your customer.
I wouldn't say it is impossible to make money with mobile applications, though. It seems also the price for mobile networking is falling.
Edit: the mobile games company I was working for was and is very successful and also in the meantime was bought by a big international entertainment company (think the Coca Cola of Entertainment). When I was there it was a 7 people company, so I think it qualifies as a successful startup (I think now they have 50 employees).
You definitely speak the truth. I think where the issues really show is when you try using the optional APIs, such as MMAPI. There is no requirement for specific codec support for example, which is a nightmare when trying to develop media applications in J2ME. You literally have to test on all devices or go through a beta program with a bunch of users with different phones and simply see if it breaks or not. For a small startup like us, its probably the only feasible way.
As far as UI differences, there are some good tools to help with that. You might want to check out J2ME Polish. On devices that will support it, you can get much more consistent and predictable results with how things will look on screen across platforms. I'm really impressed. Be aware though that if you dont plan on opening up your source code you'll have to pay a $1000+ license fee.
For these incompatibility reasons I'm actually drawn more to Windows Mobile.. I hate just about everything related to MSFT, but at least when you develop for Windows Mobile via VS2005 you get predictable results. What you see is what you are going to get and that is very valuable to a developer.
I find myself thinking more about J2ME applications lately, but for a while I was also expecting that eventually PDAs would dominate the market. So same as you, I was more drawn to Windows Mobile, although I don't have any experience with it. Another option would be to go "web based", if prices for networking continue to fall (in Germany I think you can get a Flatrate for 25 now - still too much for, say, an occasional gamer, but perhaps feasible for serious applications).
As for APIs, of course over time working with the devices one also builds a set of abstractions, so that it gets easier and easier to support multiple phones for future developments.
Plus handests have different proprietary apis for the more advanced stuff in j2me. Certainly as soon as you start trying to do anything 'interesting' it becomes a nightmare and there is a lot of space to improve. Mobile widgets might prove to be a good solution.
I forgot another problem: uncertainty about monetization. Theres no proven way to make money on mobile yet. Do you go ad supported? Sell to operators, device makers or users? Charge micropayments or subscriptions? It's hard to pitch a mobile startup when you dont know how you're going to make money from it!
Here in germany several companies are making good money with mobile phones. Usually the payment is all through "premium SMS", which can cost up to 5. So you can sell an application for 5 by having the user send an SMS to a certain number (you can also make it a monthly charge of 5, if you are lucky). Not sure how it works in the US. A huge share of the 5 goes to the operator, I think at least 40%, but it still works.
I think there is room for Ad Support for mobile devices - is anybody even doing it yet? One could start a company focussing on that - making interesting applications available for "free" might also give the whole business a boost.
At the moment it has a very bad reputation where I live because mostly the industry was ripping of kids. I don't think there even is a portal to check for serious applications. The mobile games portals have some serious applications at times, but I don't think the target audience is likely to stumble upon them there.
it has a very bad reputation where I live because mostly the industry was ripping of kids
Same here in the UK. There are a lot of companies tricking kids into premium subscription services for ringtones, etc.
Perhaps there is an oppertunity for a mobile marketplace/portal for applications? I think there are plenty of these for games, but are there any for apps? If the portal handled distribution, easy installation, etc it could work.
I'd like to think there is. How did the Palm Pilot homepage fare, anyway, they used to sell serious applications for Palm Pilots?
At least in Germany the established players seem to have a firm believe that the only ways to make serious money are through excessive TV advertising and abo schemes, or to be on the WAP pages of the actual carriers. There must be a huge untapped market out there, though - I don't know anybody who ever surfed their carriers WAP pages.
I am currently setting up a dedicated homepage for my mobile phone application, hoping to tap some other channels. I guess I will report back to YC news in a few weeks about it's success or failure.
And it IS a pain to adapt to all possible screen sizes - granted, it might be a problem of designing the application, but as I was working on games, the design was often based on fixed size images. Especially as font support is crap with J2ME. Maybe flash for mobiles does a better job, haven't tried it.
Another thing that used to suck with J2ME: there is no standard for text entry, so it is difficult to integrate text entry nicely into your application. The only standard way is to switch to a blank screen that supports your phones text entry method, so you can't integrate it into your design.
Another problem, which I currently face: even if you know what phones you support, how can your customer know? Phones are usually not labeled with their technical name, so if you say "Nokia 6230i supported", it might mean nothing to your customer.
I wouldn't say it is impossible to make money with mobile applications, though. It seems also the price for mobile networking is falling.
Edit: the mobile games company I was working for was and is very successful and also in the meantime was bought by a big international entertainment company (think the Coca Cola of Entertainment). When I was there it was a 7 people company, so I think it qualifies as a successful startup (I think now they have 50 employees).