The Android Code Challenge

The Android Code Challenge (ADC) is an idea of Google to encourage the community to build cool applications for the Android Platform by rewarding the 50 most promising applications submitted.

Of course the Android Developers Challenge, with its overall 10 Million Dollars of prize money, was attracting even more software-developers to create a bunch of really useful applications. On the other side many voices said, that this was no good choice from Google, because it would lead to less code-sharing, as many would fear sharing their ideas with a community, during the first important months after the SDK release. There were two Challenges planned:
  • Android Developer Challenge I: Submissions up to April 14, 2008
  • Android Developer Challenge II: This part will launch after the first handsets built on the platform become available in the second half of 2008.
In the Android Developer Challenge I, the 50 most promising entries submitted by April 14 will each receive a $25,000 award to fund further development. Those selected will then be eligible for even greater recognition via ten $275,000 awards and ten $100,000 awards. Applications submitted to the Challenge were supposed to be innovative and demonstrate all the capabilities of the Android platform, like location based services, media consumption, gaming and social networking, to enrich mobile experience.

All applications are created equal

“Android does not differentiate between the phone's core applications and third-party applications. They can all be built to have equal access to a phone's capabilities providing users with a broad spectrum of applications and services. With devices built on the Android Platform, users will be able to fully tailor the phone to their interests. They can swap out the phone's home screen, the style of the dialer, or any of the applications. They can even instruct their phones to use their favorite photo viewing application to handle the viewing of all photos.”

Once again this is all true. Developers can 100% customize their Android-Device. The Android System Communication is based on so called Intents, which are more or less just a String (with some data attached) which defines an action that needs to be handled. An example for this is: 

”android.provider.Telephony.SMS_RECEIVED” 

One can simply listen on that Intent by writing about 5 lines of definitions. The system would then recognize that there is more than one application that wants to handle that Intent and ask the user to choose which one he or she would like to handle the Intent.

Android from above

Let’s take a look at what the OHA emphasizes on its Android Platform:

Openness

“Android was built from the ground-up to enable developers to create compelling mobile applications that take full advantage of all a handset has to offer. It is built to be truly open. For example, an application could call upon any of the phone's core functionality such as making calls, sending text messages, or using the camera, allowing developers to create richer and more cohesive experiences for users.”

This is true, as a developer you can do everything, from sending short messages with just 2 lines of code, up to replacing even the HOME-Screen of your device. One could easily create a fully customized operating system within weeks, providing no more of Google’s default application to the user. “Android is built on the open Linux Kernel. Furthermore, it utilizes a custom virtual machine that has been designed to optimize memory and hardware resources in a mobile environment. Android will be open source; it can be liberally extended to incorporate new cutting edge technologies as they emerge. The platform will continue to evolve as the developer community works together to build innovative mobile applications.”

Here Google is talking of the so called Dalvik virtual machine (DalvikVM), which is a register based virtual machine, designed and written by Dan Bornstein and some other Google engineers, to be an important part of the Android platform. In the words “register based” we find the first difference to normal Java virtual machines (JVM) which are stack based. See the “Dalvik.equals(Java) == false”-chapter for more details on that issue.

What is Android

What is Android – a GPhone?
Android


The weeks and months before Google released the Android SDK there had been a lot of rumors about a so called GPhone. It was said to be a mobile device manufactured by Google providing free communication by showing context-sensitive advertisements to the user on the device itself.  

But on November 5th 2007 Andy Rubin2 announced:

 “[The] Android [Platform] – is more significant and ambitious than a single phone.” 

Google within the Open Handset Alliance (OHA) delivers a complete set of software for mobile devices: an operating system, middleware and key mobile applications. What was released a week later was not a final product, but a “First Look SDK” what many did not realize. Major news sites grabbed the discomforts of some developers who said that Android is full of bugs and heavily lacks of documentation. But the majority says that Android is not buggier than any other software at this stage.