And I'm REALLY curious about why you and 14 other people think that Android is such a good mobile OS. The VM is both a legal and speed liability, the Android UI is not GPU-accelerated and the entire OS is still immature (see the embarrassing bugs with the SMS or the browser security holes).
Isn't that part BSD-licensed?
> the Android UI is not GPU-accelerated
It's a bit hard when you have to support more than one device, but I believe it's a matter of time. As more and more hardware gains hardware acceleration, I assume it will come (if not already in the latest 2.x and 3.x series)
> the entire OS is still immature(see the embarrassing bugs with the SMS or the browser security holes)
Don't confuse the OS with the programs that run on it. You don't blame Windows when SharePoint eats up all your intranet, do you?
SMS and web browser are core mobile OS services, they're not simple programs since connectivity is very important for a mobile phone.
Oracle is not complaining Google is implementing Java in Dalvik. Oracle is complaining they are implementing things too similar to stuff Oracle has acquired patents about.
Anyway, features i find pretty neat are:
- The concept of Activities
- The concept of Intents and their connection to activities
- real multitasking
- XML based layout with builtin internationalization
- the use of Java as widely known language
- Dalvik after getting JIT compilation = nice piece of technology, a fast and capable VM for such "slow" and limited hardware
- oh and it's open source (except for the google apps, just like any other app)
I’m not sure why you like XML so much, is it that you can write an interface programmatically? While it’s true that a nib is nothing more than a writeout of a view’s object graph, it features a higher-level mode of internationalization (nib-level) meaning that interfaces don’t have to be shoe-horned into text fields. Besides, it’s always possible to create a blank view that’s drawn into.
However, Dalvik’s JIT is more a ripped feature of the JVM (hah), and Apple has worked against implementing similar, their memory management techniques are still mainly reference counting.
And the open source thing? Apple’s core OS is OSS as well, Google’s strategy is the same: open source the fundamentals, leave the important bits proprietary. Apple’s children are UX and native apps, Google’s is online apps, which is why the Open Source tide line is a bit lower on iOS: Google couldn’t care less about churn and boring, long-range updates, as long as they get the users doing web stuff. Both Google and Apple both protect what’s important to their business interests.
But let me tell what i find so nice about activities and intents by example of a simple usecase.
I am browsing in my RSS reader and find a good article. Now if i want to share this article, i usually have a "share" option which sends the intent to the OS. Depending on the registered applications it let's me send this article via mail or twitter or sms or even bluetooth (or really whatever app supports this intent). After deciding i want to send this as mail to a friend the mail activity opens up, let's me send it and seamlessly send me back to right where i was (reading the article). This is integrated throughout the whole OS.
Now, if i am reading some rss article in Pulse on my iPad, i have two options: Use the facebooks-share button of Pulse. Ok, but if i want to mail it or the app doesn't offer that at all? I'll have to copy the URL, close pulse, open the mail app, write the mail, close the mail app, open up pulse again.
Another example is: Google places offers me a restaurant i want to visit. Now depending on the apps i have installed i can use google maps, some other navigation software or the public transport app i have to show me the way to get there. It makes the user experience quite seamless, despite the applications not "knowing" of each other. I don't have to write down the adress, open up some other app, enter the adress again.
It's also the way to replace core functionalities of the UI. Want another home application? When pressing the home button on the device it's firing an intent and this can be handled by some home app of your choice. Same for the search button.
The nice thing about intents is that it's very flexible. Depending on the apps i have installed it offers me interaction between those apps.
About JIT: If you want to believe Wikipedia, JIT is no JVM originated feature but was invented somewhere in the 60s.
I find it quite hard to imagine how the Dalvik JIT could be a real rip-off of the JVM JIT, as those are based on quite different architectures. The only thing in common is that they both use the same syntax.
About Open Source: I may be corrected here but it's perfectly possible to have a working phone by taking the sourcecode from android. It will have a running kernel, a working UI, i can install apps and live with it. What would be missing would be gmail or the android market. But there are other markets and other mail applications.
Could you please point me to where i can find a compilable open source version of iOS?