Android - more than meets the eye
[27. May 2010; Nerd, Englisch]
Now that I own a phone with Android OS I could not help looking into programming for Android. Android uses Java as language and the SDK is decently integrated into Eclipse. The real surprise is the architecture choice they made for these small devices.
There are quite obvious concepts like a general preference of lazy initialization and implicit termination. Those result directly from specific needs of mobile devices.
But most interesting is the RESTlike service approach for building applications. Contents handled by an application are bound to URIs using content providers. Intents allow to access these resources with a set of different actions, just like REST requests. Activities serve as visualization components for data of content providers. They can be assigned to specific URIs and actions. An activity typically only serves one specific purpose like displaying details of a contact. Activities can have buttons, lists or menu entries which allow the user to navigate to different URIs and therefore activities. Basically Android apps work like modern web applications, only without HTTP and HTML.
An obvious reason for this design might be the ease of integration between applications which operate on the same contents or reference each others contents. Interactions between applications or parts of one application become as simple as linking to another web page.
But since its Google, I am wondering if its not a first step towards a thin client, which operates on data contained in "the cloud". However I don't think this would be a bad thing, once mobile networks become reliable and fast enough to no longer require phone storage.
After having seen scary iPhone development / Objective C presentations at JAX I am glad that Google has put so much more thought into the architecture of their mobile platform than Apple.