Here’s a good write-up about the reason for the absence of Java on the iPhone. Beyond Steve Jobs’ “ball-and-chain” comment, the truth is that Java phone apps are coded to some lowest-common-denominator UI – meaning standard phone keys, perhaps a stylus, and no support whatsoever for multitouch, zooming and everything else that makes the iPhone so cool.
Of course, all the Java enthusiasts are up in arms about this, but Steve Jobs is right. Java’s touted hardware independence is, on the iPhone, a serious disadvantage. A Java app on the iPhone would stand out as a clunky, last-millenium legacy thing that wouldn’t react as the user expects.