MIDP still have some works to do, especially on the ability to launch one app from an other. Today, no way to launch GMail client from Opera Mini, or from a Widget engine. You need to exit, and find the app by yourself.
The problem appears to be that the surface area for interaction with the HTML page was too small. In hindsight, the task to develop richer and more convenient interactions with the underlying HTML page structure was never undertaken with any real seriousness.
However, the very nature of Java, a statically typed language may have more to do with its failure as a web language than any other techical issue. The industry has this bad habit of framing solutions based on old paradigms that are incompatible with the new. We saw it in the SOAP debacle, where everyone was trying to force fit the web into a distributed object programming model. Sometimes, one has to resign one’s self with to revelation that it just doesn’t fit.
Languages based on static inheritance and typing are good for building complex silo (i.e. closed world) based applications. However, a global scale Architecture of Participation requires more dynamic structures like that found in prototype based inheritance and dynamic typing. In such a massively open world, the distinction between metadata, configuration and instances is simply impossible to pin down into well defined classes and configuration files.
When Google unveiled GWT they wrote:
Reminder to self: Discuss Excel