Recently similar things are said about Android. (see http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/ )
And even on the iPhone there are similar problems. And I think that those problems are inevitable when you don't want to stick to old and outdated technology.
But why does fragmentation occur? What are the reasons for it?
- Different software / hardware vendors. Even if the specs are very similar the details of an implementation can make the difference. This affects J2ME a lot. Luckily Android devices are more similar in terms of OS implementation but the hardware varies. The iPhone is the clear winner here. There's only one vendor. (Well this is in my opintion one of the few things that are good about having one vendor only.)
- Software evolution. (i.e. new versions) Software normally gets better and better with each revision and usually users want to use the latest features. But not all users can or want to update their devices. So you have to deal with multiple versions.
- Hardware evolution. New devices have higher screen resolutions, more memory, more sensors etc. If you want to make use of those new capabilities and don't want to break compatability with less powerful devices you have to write smart applications.
In the end device fragmentation is the consequence of device evolution. And we have to live with it because it won't go away.
Even controlled platforms like the iPhone are affected by this. Not as much as others but even iPhone developers have to deal with it. The next big change to that platform might be the introduction of new HD models with higher screen resolutions. We will see how those developers can deal with it. On other platforms people are already used to different screen sizes but I guess only few iPhone developers today think about screen size.