2 years after your question was asked, we can now say that J2ME is really dead as an evolving platform.
I developed on J2ME since it first appeared, and there were various reasons why the platform was doomed from the very beginning:
Errors in VM implementations . Each manufacturer has implemented its own version of the virtual machine and API, improving them over the years. Some of them were more successful than others, but we can say that each device had some errors. Some really popular devices were hardly used from the point of view of the developer.
Custom APIs The MIDP 1 platform began with virtually no practical libraries that could be used to implement games - without sound, direct access to pixels. Manufacturers created their own APIs (Nokia came with the best, later adopted on Samsung devices). When MIDP 2 arrived, developers were already using custom APIs, and the integration of MIDP 2 and all the new libraries (like MMAPI for sounds) was slow, and again there were a lot of errors in the new implementation. In addition, official APIs were more abstract than native APIs, so they sometimes had worse performance. As a result, developers had to support both their own APIs and the new MIDP2 APIs.
Fragmentation hell In addition to fragmentation caused by built-in APIs and various support for official APIs on different devices, in addition to many implementation errors requiring workarounds, there was also a hellish screen size, various support for sound formats, bluetooth libraries (required for multiplayer games) , keyboard and touch displays, size restrictions (for example, 60-150 kB for the installation package, depending on the device). In 2009, we had about 90 versions of the game to support all classes of devices. This really increased the cost of testing and support (we also had to own many devices for testing applications on them. With the release of many new devices it was no longer possible to buy enough new devices for testing). Perhaps you are asking why we did not use simulators for testing. The problem with the simulators was that some of them were very slow (a complete restart was required for each application deployment, for example from 30 seconds to 2 minutes), and some of them were mostly universal skin simulators, so they did not behave like real devices.
Low margin . As developers sold J2ME applications, it was pretty crazy. You need a distributor who often had contracts with other distributors around the world who had contracts with mobile operators. You know, most of the games were sold through the sites of mobile operators, paid using prepaid plans or using premium text messages. Of the cost of the application, which can be from 1 to 5 US dollars, the operator took 50% or even more. Another portion of the profits came from distributors. The developer usually receives less than 10% of the cost of the application. However, in order to actually be sold through the distribution network, there was a list of devices that the application had to support, so the developers could not avoid device fragmentation and should also support all old devices.
These 4 problems above led to the end of many development companies over the years, while distributors and operators still made a lot of money. The system continued until Apple came with iOS and Google with Android. While Android came with its own demarcation hell, it also included automatic system updates, so at least the errors were gradually fixed. Most J2ME games can also be easily ported to Android. Decisive was the change of the App Store on iOS and the Play Store on Android. Instead of going through several levels of distributors who took 90% of the money, selling apps through stores that give you 70% was a pretty big step forward. Application development became profitable again, and developers began to switch to these two platforms.
The J2ME world has been trying to pull back for a while - there was Java Verified, which offered to certify your application to work on device classes. Unfortunately, it was expensive and, in my opinion, did not help to reduce fragmentation at all - it was the devices that needed verification, and not applications.
Manufacturers also came with their own app stores, for example. Nokia with its OVI store, but it was too late.
Manufacturers slowly realized that Android could reduce development costs - they no longer needed developers for their own firmware, so they stopped fighting and instead adopted Android. This had two consequences: one of them was the end of J2ME, because for Android there was no need for J2ME, the second was the end of some manufacturers and the growth of new ones.
Sulthan
source share