Recap: Google Android
In a previous article, we covered the basic features of Google Android. In this article, we’ll be going a little more in depth, examining android internal structure, and finding out what make Android such a powerful operating system– while still staying impossibly easy.
(Psst… if you didn’t read the first article, go here.)
Under the Hood of Google Android
The easiest way I can think of to visualize Android’s structure is by imagining a house with five rooms (it’s a childish analogy, but just be happy I’m not asking you to imagine a, say, Dalvik Virtual Machine. Jeesh).
The house represents Android in general. The rooms inside, however, represent the five key features in Android’s structure: Applications, the Application Framework, Libraries, Android Runtime, and, of course, the Linux Kernel.
Now, imagine that each of these rooms hold a certain number of people. Each person represents an element of that room. Different rooms hold different amounts of people (if that’s too much to hold in your head, go ahead and draw it on a piece of paper. I won’t mind.)
This first room is a doozy. It’s “people” represent all the applications that you have in Android.
The main applications that you might want to have are an email client, SMS (or ’texties’, if you’re like me), a calendar, maps, a browser (initially the WebKit browser– but we’ll get rid of that later on if you want), and your contacts. All applications are written in Java (or C, if you’re daring), so you yo can add or take away as many of these as you like.
The Application Framework
As a developer, you’ll have full acces to the APIs used by the core apps. Android is designed so that any application can publish its capabilities. In turn, any other application can use those capabilities, as well. It has some security constraints, as is expected, but still. That’s pretty awesome.
One of the best things I like about Google Android is how clean and easy it is to write code. Android has an extensive, not to mention very rich, set of ‘Views’ that’ll make your programming life a heck of a lot easier. It has drop down-menus, tables, buttons– the whole shebang. You can even embed a web browser.
Along with all that, you get a Content Provider (which allows apps to share information), a Resource Manager (to help you with graphics, layout files, etc), a Notification Manager (which gives you those annoying status beeps and such), and an Acticity Manager (which manages the life cycle of your apps). All in all, when it comes to creating applications quickly and easily, Android has you covered. We’ll cover how to write an application in another article.
So, you could say that the ‘people’ in this room are the managers and providers and etc. Believe me, there are a LOT.
(No, not the ones with Harry Potter books and those awesome laser scanners.)
Android has a set of core libraries off of which the applications run. As always, developers can directly access these.
Some of the core libraries (and also the ‘people’. Gawsh. I love this people-ness) include FreeType, SQLite, LibWebCore, and SGL. In this article, we’re only trying to give you a general idea of Android, so we won’t go too far in depth about libraries. I have a whole other article coming up that’s all ABOUT libraries.
You could say that the ‘Android runtime’ room is pretty exclusive– it only has two people: the Dalvik Virtual Machine and the core libraries (am I getting on your nerves with this ‘people’ thing yet?).
Most of the functionality available in the Java core libraries are provided by Android Runtime, which is yet another set of core libraries (see? I told you we’d need another article about libraries!).
In Google Android, there’s a tool called ‘DX’. What this does is it executes files in ‘.dex’ format, which are specially for the Dalvik Virtual Machine. This format is also created for minimal memory footprints, which makes it ideal for cell phones. The Dalvik Virtual Machine is written so it can run multiple prcesses quickly and smoothly. It relies on the Linux Kernel to do its magic. We’ll talk about that right after this.
Lastly, we have the Linux Kernel. This little room contains the Keypad, WiFi, Camera, and etc. drivers. The Linux Kernel holds all of Android’s internal structure together. It uses Linux 2.6, and also acts like an abstraction layer between the hardware and the software.
Coming Up: Prototypes, Applications, and Other Fun Things
To conclude our little ‘Android in Plain English’ series, we’ll have an article to cover all the small things: phones with Android, useful applications, etc. Just a few small things that are important, but not big enough to have their own article. Make sure you read it!
This post is part of the series: Google Android in Plain English
Understand the basic, and not so basic, functions and features of Google Android with this series of articles explaining the G1 platform it in simple terms. Google Android made easy!