Nov 29, 2009

Some Thoughts about Android

As a embedded developer working with mobile phones, there is a new interesting kid on the block; the Android platform. If you are a mobile developer you most certainly had heard of it.

The interesting thing from a Java developer point of view is that all the APIs are in fact in standard Java APIs. But the developers of the Android platform has selected a subset of the Java SE APIs. Thus the implementation is not a fully compliant Java implementation. Further on the code is not executed as bytecode. The source code is first compiled to bytecode. In the second step the bytecode is converted to Dalvik bytecode. The Dalvik bytecode is then executed on a Dalvik Virtual Machine. The Dalvik is optimized for devices with limited power. According to the people behind the Dalvik VM, it should consume less power than a normal JVM.

I have bought a HTC Hero to have the opportunity to use an Android phone and to develop applications for the Android platform. It is possible to execute a Android application on an emulator, but still I think there is a need to be able to execute on a real device. The emulator is real good and I think that it is very close to the reality. My experience tells me that in the end it is always better to run on an actual device.

As of now I have not developed an real Android application from scratch, although I have attended an Android course. I am really looking forward to making an Android application. If its gets good it would be interesting to put it on Android Market, aka Google Market.

But what will happen to Java ME? I think that Java ME will live long and prosperous, although some programmers that are tired of Java ME will move to Android. The devices that are out on the market today are primarily high end phones. Java ME is found on many low end and mid end phones. What do you think? Will Java ME survive now that Android has arrived?

6 comments:

Jarle Hansen said...

Although I really hope that Android has success in the smart phone market, Java ME is here to stay.

It is important to remember that Java ME is so much more than just a language for phones. There are a lot of smaller devices where Java ME is the ideal choice. Also, there are markets where you do not find a lot of smart phones. In these places you will most likely find a considerable amount of lower end Java ME (CLDC 1.x) enabled phones.

As a developer I am really happy about Android. It includes a lot of the newer language features that Java ME lacks. Also, it does not feel as limited as Java ME does. I really hope both languages/platforms does well. Because, lets face it, one of the alternatives is Windows Mobile and I dont think any of us would like that :)

My Open Source Software Development Blog said...

One must also remember that Java ME comes in many flavors, like CLDC and CDC. The CDC variant is used on Blu-ray players.

Another problem with Java ME is the security implementation(s). On some Java ME you devices you get questions like; "Do you want to allow javax.microedition...". Not easy for a normal user to understand. On an Android phone this is written in normal English. But there is nothing in Java ME hinders it to translate this into plain English messages. I have encountered Java ME devices that present one security question for each access to the filesystem. This is really awful.

Nevertheless I really hope that Java ME and Android can live side by side for many years to come. I hope that the competition will make both of the better.

Last but not least, I agree with you Jarle.

Anonymous said...

I hope that J2ME (for phones) continues to proliferate. The implementations were rather poor for a long time, but recently they have become much better. LG and Samsung, for example, have started shipping much improved J2ME environments on their high end feature phones.

I'd be sorry to see J2ME drowned out by iPhone, Android, etc., just when it reaches its potential.

Speaking of J2ME, I was very pleased to see in microlog v2 that the J2ME/MIDP code is now split out into its own package. I guess that means that libraries that depend on microlog can be used for J2ME, Android, and even J2SE projects. Great work.

My Open Source Software Development Blog said...

Regarding J2ME...

Let us hope that it will survive and improve to be better.

Thanks for your nice word about Microlog. The reason for splitting up Microlog to these modules is that Microlog should be easier to use on more platforms. There is a Android module for example.

My Open Source Software Development Blog said...

There is also the problem with device fragmentation which also could happen for Android:

http://gigaom.com/2009/11/29/android-app-developers-not-happy/

Software download said...

You helped me a lot indeed and reading this your article I have found many new and useful information about this subject.