4 ms·
IIRC it wasn't purely about money. Sun had a mobile platform at the time, J2ME. If you wanted to use Java on mobile, it had to be J2ME. There was no option bac
by thu2111 6y ago
IIRC it wasn't purely about money.
Sun had a mobile platform at the time, J2ME. If you wanted to use Java on mobile, it had to be J2ME. There was no option back then to just pay money and pick'n'choose which bits of Java you wanted. In fact there still isn't, the Java guys are zealous about compatibility.
And J2ME was in turn a slow, multi-vendor, standards oriented kind of thing with multiple implementations. It was (a) very limited, (b) very buggy, (c) very poor developer UX. The issue wasn't Java itself but rather the huge variety of bugs and missing APIs between different phones. See the issues Android faced with fragmentation and multiply it by a million. In fact it was an attempt to fight fragmentation that led Sun to take the hard-line "our way or the high way" approach!
Additionally, J2ME was not open source but Google or rather Andy Rubin felt strongly that Android had to be open source under non-GPL licenses because mobile vendors hated the GPL. They could just about tolerate Linux but that was the limit. So Google was going to go to Sun and say, hey, please release one of your own profitable Java products under an open source license, so we can make more money out of Google Maps? No way.
Could Google have made Android using J2ME? Maybe. Perhaps? But it'd have been a huge ball and chain around their ankles and Android would have been radically different, likely different enough to have killed it. For instance J2ME had a simple GUI library but it was limited by the need to run on feature phones. They'd have never been able to make it as advanced as the Android GUI toolkit was, and competing with the iPhone? Forget it.
To some extent this situation was inevitable. From a technical perspective using the Java platform worked out very well for Android. But given Sun's business model at the time and the history of J2ME there was no way to take it to the next level. In hindsight we can say that Google could have replaced the entire revenue stream of J2ME, but what company wants to replace a many-vendor many-customer ecosystem with a single revenue source? Nobody would do that!
- int_19h 6y agoCould they have implemented J2ME as spec'd, and add proprietary APIs on top of that? I remember that Sun balked when Microsoft did it, but that was back in 1990s. Was it still a limitation when Google started working on Android?
- pjmlp 6y ago> Could Google have made Android using J2ME? They could have yes, with Java SE actually > The SavaJe OS was a monolithic OS-and-Java platform, an implementation of Sun Microsystems' Java Standard Edition, as opposed to the more limited Micro Edition usually offered on mobile phones. https://en.wikipedia.org/wiki/SavaJe https://en.wikipedia.org/wiki/SavaJe Also the Nokia and Sony-Ericson extensions to J2ME were quite good, while keeping compatibility with J2ME related specifications.
- thu2111 6y agoThe standard GUI toolkit for Java SE at the time was Swing. That would never have been appropriate for mobile, but they'd have had to support it anyway. Also the Android team believed that HotSpot wouldn't work on heavily RAM constrained phones, hence Dalvik. Were they wrong? Doubt it.
- pjmlp 6y agoHotSpot wasn't the only game in town for embedded, and Dalvik was much worse than what Nokia and Sony-Ericson had on their own (not HotSpot based) implementations. So much that they eventually rebooted the whole thing with ART. Apparently Swing was appropriate for SavaJE, go figure.