While Android is based on a machine-independent VM architecture that compiles and runs code written in the Java language, it’s not exactly Java (Tee eM). In particular it’s a complete break from Sun’s Java ME (Micro Edition) offering. A lot of propeller heads get their beanies in a twist whenever someone steps off the “standards” path, so predictably there were cries of “Why couldn’t they just use Java ME?” But I believe there are many folks at Sun who are quietly saying “I wish we could have done that.”
Let’s face it, how many developers really like Java ME? How many can describe the difference between CLDC, CDC and MIDP? Between Foundation, Personal Basis, and Personal profiles? How many consider javax.microedition.lcdui the pinnacle of user interface design? Not many. (And if you’re one of them, you should seriously consider therapy). Java ME has years of baggage and legacy API that Android ignores. Over-complicated, and under-compatible, Java ME had backed itself into a corner, leaving the field open for competitors like Flash Lite to gain ground. Google’s initiative opens a new chapter for Java (or ‘Java-like’, if you insist) technology.
However, Google did make one big mistake with Android, the same mistake that IBM made years ago - it cut them out of the process, at least in perception if not in fact. In IBM’s case this resulted in a culture of distrust and dis-harmony (pun intended) between the two companies that continues today. Sun/IBM unity behind Java is a lost cause. But in Google’s case, the outcome can/will/must be different.