Thursday, January 29, 2009

Evaluation of android platform

The android platform is a mixture of Linux kernel and a Java application interface. Evaluation

The Linux kernel is very well tested over the years. In android, this has been slightly modified to suit the embedded / mobile environment. Linux as a OS is the most stable. So having the same as a mobile OS is also good.

For the developers the Java platform is most suitable for developing applications, since you don't have to worry about pointer and OO language increases the usability and maintainability of the system. Java forms one of the largest developer communities. So this combination is ideally suited for a mobile platform. Since java runs very slowly on a mobile, the virtual machine is modified. The Dalvik virtual machine is register based instead of the usual stack based VM's. This supposedly runs much faster.

Overall the platform looks very well organised and suits the mobile environment. Now after making this a open source we need to see the role of google in promoting and maintaining this platform.

Performance of android market

The android application market is quite similar to apple store, the main difference being that the applications are not controlled by google.

Anybody can register as a developer with a nominal fee of $25 and post their applications into this android market from where the users can download their applications. Presently only free applications are allowed to be posted and hence the market is given the name beta. Quite a good number of application are available now for free.

The rating system is same like that of you tube. How good this system will be only time will tell. Nonetheless its very easy for developers to post their applications onto this market. This should attract a lot of developers to post their applications in this market. As the number of applications increase how google manages it remains to be seen. It should have a mechanism to discourage apps that have bad rating.

Tuesday, January 27, 2009

building blocks of android application

To understand the basics of an android application and how it works, first we need to understand these terms.

Activities: This is the atomic functionality. An activity is usually a single screen in the application. When associated a UI it will be similar to a page/form of other platforms. There exists a stack of activities that is maintained by the activity manager. Every activity in android is associated with a class. It runs/exectues in the process that creates it.

Intents : Android uses a class called 'Intent' to move from screen to another. It has the information describing the action, data etc.

Intent Filters: specifies what the activity is capable of handling.

Service: Service is the one that performs a particular task for another applciation. Application which makes use of this service runs on different processes. Since they run on different context/process it makes use of Binder IPC for the communciation.

Content Provider: This is normally used for accessing lower level functionality like file access, network access etc. The content provider provides the platform related functionality to the running application.

Task: This contains a collection of related Activites. These set of activities perform a particular task. This is comparable to an application on other platforms.

Process: This is a simple linux process.

Friday, January 23, 2009

why android was open-sourced

Android is now released in the market and the first google phone is available. But what is the benefit that google is getting by making in open source. Till now I haven't come across a convincing answer to this. Google gets its main revenue from advertising in the internet. The only reason that could be is that, by making android open source it tends to increase its revenue in the mobile internet users market. Only time will tell what its strategy is... advertising on mobiles ??? :-)

apache license for android

I read a few blogs on why google chose apache license for android. It mentions that if android were to use gpl license then nobody would then adopt android, because any properiatery software that are pluged-in to android would have to be made open source. Even though it would lead to more openness and faster development, many would like to avoid it. It has even chosen bionic libc just to keep the gpl license out of user space. It would be a nightmare for developers if everything that they develop were to be made open source. So apache license does make sense...

Wednesday, January 21, 2009

brew and android

Android is released after Brew so you can expect all the advantages of brew to be incorporated in android.

One of the best features of Brew is that you can write extensions. i.e. plug in components of the applications and introduce new features into the application. This feature is almost non-existant in any other software platform. In other platforms such an application can be created only by native application developers. In android, there exists no difference between a native developer and third party. So anybody can write such applications even if the feature is non-existant.

In Android, this feature is implemented in the form of AIDL. You can write one application which provides a specific service to another app. (this is as good as an extension). Since this is developed as a new applciation it can be shipped later.

Another striking difference between the two platform is that brew supports only CDMA mobiles whereas Android supports GSM, UMTS technologies. Since Android is open-source you can expect it to support CDMA in the near future.

porting to android

I have been working on brew platform from a long time now. For a change I am now presently looking into the android platform. Intially I was thinking that android platform would be similar to that of J2ME. But it isnt so. Only the basic J2ME libraries are supported in android. The application structure, activites, tasks and threading mechanism is quite different than J2ME. This means that for an application to port from J2ME to android is as tough as porting it from any other platform. But the number of API's supported by android is very good which makes porting to this platform easier. This is only my first impression of this platform, have to see how it goes...


Learning android platform

To learn android platform it would be better first to go through the presentations in the android website.

There are four presentations that give the detail about the components of the android platform. After understanding this you can choose your area of expertise and dig deep into the same.

I felt it would be better to learn about the platform by first concentrating on the kernel. The kernel is essentially the Linux kernel with some modifications for the mobile environment. Modifications include the binder (IPC driver), Power manager, bionic libc etc.

Android has tried to remove all the disadvantages of various software platforms and designed this platform to find a way around it. This is why I feel android would be a great success in the market. Also this has the added advantage of being open source. This would make the development much faster as more eyes will look into the code. This has even forced nokia to consider making symbian open source.

Looks like the telecom world is going through the phase of open source. Whether this will make telecom market better or kill it completely needs to be seen...

Tuesday, January 20, 2009

downloading git and android source in ubuntu

1. Install ubuntu 6.06 or above.

2. while installing linux if you are inside the firewall you need to modify /etc/apt/source.list. comment the first line and uncomment all other links.
If you are inside a firewall and the links to ubuntu updates are blocked while installing linux then you need to modify the above file. The first link will be prompting you to insert cdrom which needs to be commented and the other links will be commented if there is no access to it while installing linux. This can be later modifed by the root.

3. sudo apt-get update - this would update the sources.list with the latest packages available in the ubuntu public sites and the dependencies of each software to be installed.

4. sudo apt-get install git-core to install git. -This step will install git along with the dependent libraries. Alternately you can download the deb file and install in which case u need to install the dependent libraries yourself. I would prefer installing it this way first to install all the depending libraries first and then installing the required revision of git.

5. specific version of git is available at http://git-scm.com which can be downloaded and installed.

6. Follow the steps as given in http://source.android.com/download

With all this steps I was able to download the source of android at work :-)