Putting aside the IP issue, this sounds like a textbook example of worse-is-better[1]. Sun spent years trying to corral mobile vendors through a single standards process to ensure the "correct" result while Google shipped and iterated on something just good enough. Android may be a "dog's breakfast", but it's a couple of orders of magnitude more successful than Sun's Java-on-mobile efforts ever were.
Apple's mobile success might seem like a counter example with the iPhone as a "better-is-better" perfectly polished jewel, but when you look beneath the surface, the iOS implementation is filled with compromises and hacky tricks[2]. The magic comes from always compromising in favor of what really matters (simplicity, responsiveness), rather than refusing to compromise at all.
[2] I'm particularly fond of the way it maintains a recently rendered version of your application's interface to show you for the fraction of a second it takes to activate the app and bring it back to the foreground. It's only marginally more useful than a black screen, but works wonders for the perception of responsiveness.
Reminds me why Java has the reputation for being over-engineered. Google actually shipped a version of Java that was sane to code with, and Sun is just jealous they didn't come up with it first. Android is the first time I could actually say that I enjoyed coding in Java. Couldn't say the same with Sun's complicated over-engineered stuff.
I've watched Gosling's various comments about Android over the years, and it really does sound like a case of sour grapes: Google saw success where Gosling's creation saw overwhelming failure (it is simply incredible for Gosling to actually denigrate Android -- which by and large is incredibly common across thousands of devices -- with the disaster that was J2ME).
I don't know why you have to drag iOS into this discussion, but it's a known fact that there are way more compromises and "hacky tricks" in Android than iOS.
Interesting. I can't comment on the relative volume of hacks in iOS vs. Android. Presumably both have quite a few.
My point was that "worse-is-better" was validated by the success of Android vs. Sun's own mobile efforts as characterized by Sun's executives here. And that despite appearances, the other major successful mobile platform is an application of worse-is-better as well.
I'm surprised the smart guys at Sun—who were themselves beneficiaries of worse-is-better in the Unix workstation market—built their mobile strategy around designing the "one true API". I suppose the (somewhat accidental?) success of Java convinced them it was a viable approach.
Apple's mobile success might seem like a counter example with the iPhone as a "better-is-better" perfectly polished jewel, but when you look beneath the surface, the iOS implementation is filled with compromises and hacky tricks[2]. The magic comes from always compromising in favor of what really matters (simplicity, responsiveness), rather than refusing to compromise at all.
[1] http://dreamsongs.com/WorseIsBetter.html
[2] I'm particularly fond of the way it maintains a recently rendered version of your application's interface to show you for the fraction of a second it takes to activate the app and bring it back to the foreground. It's only marginally more useful than a black screen, but works wonders for the perception of responsiveness.