I read John's piece Assembly Java is Absurd that was written in response to the original Assembly Java piece… I don't care about religious wars, but allow me to provide some clarification here.
John says that he is “knee-deep in my studies of object oriented design patterns, refactoring, Java EE, and Java ME”, which is great… for new Java mobility developers the tips or workarounds might look absurd, but for the experienced mobile developers it is about practicality vs. religious OO battles.
Over time, as handsets capabilities continue to increase, such workarounds won't be needed; that is a given. But right now they are needed in most cases. Today mobile handsets are (still) resource constrained, and in many respects it is a bit like coding an embedded device, such as ensuring you maximize memory and storage and power utilization. There is nothing absurd about squeezing more functionality out of your application, and the handset.
Always design using a pure OO approach, and adapt the design and packaging as needed. Obfuscate your code, and if still too large after obfuscation, then start optimizing. Experienced mobile developers already know the limitations, so they know what to optimize from the get go.
At the end, it is all relative; it truly is. But what is not relative is the ability to maximize your application-and-the-handset's functionality, across many handsets, with the goal of reaching more users, and making more money; otherwise the application will be a beautiful Object Oriented piece of art, but you would have failed… and go explain that to your investors, or worst, to your wife spouse or significant other when the dough is not coming in. Just use your common sense, and adapt and balance as appropriate; it is OK to do that.
See:
* Optimization vs. object orientation
* J2me mobile development practice
* Java ME tips from the coach
* Assembly Java
* Is still there any Java ME Programmer Thinking in Object?
* Mobile Java
ceo