The familiar phrase attributed to Java applications of "write once, run
everywhere" sadly does not apply to applications developed on Java ME.
While the Java ME standard ensures that runtime environments are consistent
across devices, the many idiosyncrasies that exist outside the Java
specification require that all ME applications be tailored to each device.
The differences in behavior can range from unexpected exceptions when calling
certain API calls to performance issues in certain operations on the device.
These problems cause many difficulties for developers, who have to ensure
that their applications will work well on all required devices and to an
acceptable level.
Fixing a bug on one device can often cause a worse bug to emerge on another.
In turn, adding simple features to an existing application can turn into an
inflated task due to the unexpected behavio... (more)
Allowing extensibility of a rich Java GUI is a daunting task. Each user may
require slightly different functionality - this one wants to be able to
import data from an Excel spreadsheet, and another wants to generate custom
XML reports of particular artifacts in the application. You want to make
every user happy, but you very rapidly see yourself with multiple code
branches trying to satisfy those custom requirements - every Java developer's
configuration management nightmare.
Not only is it undesirable to dirty the code base with customer-specific
functionality, but you don't w... (more)