[Samsung Galaxy Nexus] macfre:
.. Maybe you are, but it seems you didn't write anything in Objective C basing on what you wrote below. I don't think it's fair to judge two languages when you really know only one.

Yes, the age of language is definitely the most important thing. Is Android going to die soon because programming for Android is not based on "Go"? Java is 21-17 years old language, depending what you consider as the "starting point".

Also, what does "dumb phone with a touch screen" mean? There are a lot of "dumb phones" with touch screens nowadays (for instance Samsungs with Bada OS). If you are serious, then unfortunately for you, you are also very wrong.

Java, as a language (not talking about Sun/Oracle's virtual machine which is a completely different thing) is one of the least sophisticated languages out there, in the entire world. And I program in a lot of languages, both professionally and as a hobby.

Objective C with blocks (closures), messaging, ability to use weak typing feels **way** more dynamic and sophisticated than Java.

I have no idea what do you mean by "smart" language. I know Java is simple and pretty limiting (when it comes to language features/syntax) - and I know it very well, I program in Java daily, since many years, and I like it - is it what you consider as "smart"?

Permissions? They have nothing to do with the choice of language. Android's permission model is also not really sophisticated. If app wants to use the INTERNET permission only for some optional stuff (like, downloading new dictionaries) it still must ask for that permission at the moment you install the app, what really hurts software like Swype keyboard. A keyboard with INTERNET permission looks really suspicious - after all, nothing stops it from uploading somewhere everything you type ;) - even if it needs that permission only for a short moment when it downloads new dictionaries. "On demand" permissions would work much better. Not to mention that the current implementation on Android is not that safe either, as the permission model can be breached by abusing Intents (e.g. here)

Memory cleaning? Garbage collector has its pros and cons. There are no memory problems on iOS devices, ARC is pretty neat, iPhone 4S runs really great on just 512M RAM, most popular applications including all stock ones are not known for memory leaks. Somehow people deal with it and they do just fine.

On the other hand, there's no low latency audio framework for Android and, my wild guess here is, garbage collector makes it pretty much impossible. At least looking at logcat logs, there's load of 1-3ms GC pauses on my Nexus all the time.

And here is a proof that you have no idea what you are writing about. All Android applications processes spawn in their own instance of Dalvik virtual machine. Meaning, precisely, that each App runs in its own virtual environment. Basically the very point you made above could be used against Android.. if that point made a sense at all, but it doesn't.

Running processes in virtual machines has nothing to do with being a full blown operating system or not. Both Android and iOS are operating systems, and what you wrote above simply doesn't make sense at all. Isolating processes in virtual machines has nothing to do with widgets (or lack of them), "synchronous multitasking" (?), "no services" (whatever you meant by it; there are services on iOS) or restricted OS level communication. It's not really debatable since Android already does it all ;)

*double facepalm*