Hmm, I don't think Java has had it nearly as bad historically (possibly apart from the old mobile Java profiles, which I agree were quite painful). Any code using the core classes (math, collections, basic I/O) would always work fine on any JVM, including Android. Porting
pure Java code to Android has always been very easy, as it should be.
Whereas I've found with C# that even perfectly innocuous-looking functions would be mysteriously unavailable in Silverlight, say. It has been very hard to pick a C# library subset that's both portable and useful, and Microsoft seem to have taken an awfully long time to sort that out.