Sunday, February 15, 2009

Google Android: Perfect For Some People

I've been using Google Android phone (Developer Phone 1, not the white stock model sold in Czech shops) for more than a month and I am now - after many, many years of desperation - almost happy with my phone.

I wouldn't dare to write that "Android is the best phone in existence" because that's extremely subjective statement. In fact, that sentence is completely wrong because Android is not a phone but G1 phone's operating system by Google which will be soon (and I mean in a matter of weeks) implemented on many other commercially available devices devices (not only phones). The interesting fact is that the whole operating system in open-source and you can officially download the full source code, modify it and build it on your bizarre device (and then manufacture and sell that device without paying Google anyting).

(Please note that "full Android source code" doesn't necessarily mean "full source code of everything that's installed on G1 phone when you buy it".)

The OS is Linux-based and standard applications are stored in bytecode interpreted by Dalvik virtual machine. The bytecode is usually generated by running almost-standard Java sources through Google's compiler and re-compiler (those are also open-source and freely available, including the emulator). My personal problem is that I absolutely hate Java and refuse to do anything meaningful in it. That's why I won't be developing in Adroid any time soon, at least unless someone releases Dalvik compilers for different languages. Of course, you can even recompile the kernel and create Android applications in any damn language you want, but then it's not easy to distribute these applications to normal (non-hax0r) users across different Android platforms.

Me = haXx0r!

However, the ability to hack my phone into oblivion isn't the main reason why I like Android (at least for now). For now, I am happy because Android seamlessly (almost) brings my Google Accound into the palm of my hand. GMail, Contacts, Calendar, everything is transparently synced. You don't have to connect any cables, you don't have to install any software on your PC - you don't even need a PC although it's useful. It's a bliss to organize your contacts in GMail and see those changes automagically propagating into the phone in a matter of minutes. (Android also supports Google Apps For Domains accounts.)

(BTW, the stock G1 phone cannot be rooted by simply issuing the "su" command as on the Developer Phone but it's not very hard to do it.)

And this is the "subjective" part: If you - for example - use Outlook or Lotus Notes, you could say that there is no simple way to sync your data with Android, I think. Of course, if you never touched Outlook in your life (like me) and have hundreds of contacts neatly organized in GMail and all your schedules in Google Calendar, the situation is completely different.

Also, the first Android Phone (G1) is positively ugly, the software on the early models was almost beta-quality and you are lucky if you get 24 hours of life from the phone's battery (because the phone is online almost 100% of the uptime, unless you specifically tell it to be offline). Again, this doesn't matter too much for me. I don't care about the elegance factor, there are updates available (plus many excellent applications for free) and when the more advanced model will be released, I will just sign-in to my account and most of my data automatically appears on it...

As for the applications: The framework is designed in such a way that any application can do almost anything (including changing the dialing method, for example) and cooperate with other applications (from different developers) - without any ugly hacks and exploiting of undocumented features. When you install applications, you get warnings about what permissions this application needs. If you download something called "Funny ringtones" from unknown developer and it warns you that "This application needs online access / access to your private data / access to roaming" and yet you click on "Install", it's then your fault when you find 30 seconds later that your phone is 0wn3d. I much prefer this free distribution model to tightly controlled iPhone application market.

Another interesting thing is that there's no such thing as "application launching" in Android. All applications are basically running all the time (of course most of them are "waiting" most of the time) and you just switch between them. The upside is that you don't run out of memory if you work with several applications at the same time (unless they generate lots of runtime data). The downside is that you cannot "install" applications on the SD card and run them from there.

Why I wrote all of this? To tell you that Android phone is fundamentally different and fresh. It reminds me of the original PalmOS (v4) before it died horrible death.


Anonymous said...

With new Google Sync service is possible sync Contacts/Calendar in any Windows Mobile based device (and also other device, but I'am not test it) with no new software installed. Thanks to agreement Google with Microsoft about ActiveSync protocol use. It's simple, it's work.

Srakyi said...

Why do you hate Java so much? :)
And do you hate Java as a language, or whole Java Platform?

BTW advantage of Dalvik is, that in fact you don't have to do compiler from any language do Dalvik. Only thing needed is (in theory) to transform .CLASS files generated by Java (or jython, groovy, jruby, scala...) compiler to DEX format. Unfortunately those dynamic languages aren't supported right now by Dalvik VM.

Fuxoft said...

srakyi: I don't know why exactly but I hate both C and Java, they seem extremely cumbersome and non-elegant to me.

The "advantage of Dalvik" you mention is not seen as "advantage" in my eyes at all because to create class files you need to use Java. :) I'd rather create my own assembler to write directly in Dalvik bytecode, for example...

Srakyi said...

4Fuxoft: yes, you're right. I have to admit that Java (the language) is not elegant at all. But there are many interesting languages working on top of Java VM. And you can write pretty neat code in them...

Though for really big systems has statically typed and object oriented Java many advantages.

And writing in Dalvik bytecode? It's certainly possible (you can start by studying currently implemented opcodes, but I can't imagine writing useful app in reasonable time this way. All those abstract layers above bytecode helps a lot. You'd have to reinvent the wheel couple of times... and as you probably know from my talk on GDD - if you really want to go so deep, you don't even need Dalvik bytecode. Use whatever you can run on Linux :) But you won't be writing for Android anymore.

...for example - what about trying your favourite (or isn't it?) Lua? Some guys already did -

Fuxoft said...

srakyi: Fortunately, I am not in a position where I HAVE TO WRITE SOMETHING for Android and must choose some kind of language / IDE right now. I just meant to say that I'd probably even prefer "reinventing the wheel" and working on the lowest possible level (DEX classes) instead of having to program in Java and understand the intricacies of Android Java IDE. This somehow reminds me of hacking ZX Spectrum's machine code. But all of this is highly theoretical. For now, I am glad that my phone allows me to be mobile and I am waiting until someone creates some other interesting language compiler for Android (or even user-friendly assembler/linker indepentend of Java). Android Lua is unfortunately out of question (at least in its current implementation) because IF I write something, I want it to be fully compatible Android application usable by non-hackers.

You were the Czech guy that spoke about Android at GDD? You pissed me off by saying that Android runs Java :)

Srakyi said...

Yes, that was me. I'm sorry about that, I didn't mean to piss you off, but I had to say that :)

However I think we'll both agree that best thing about Android is that we can actually talk about all those things. The freedom of (mostly ;) free platform is a huge deal.

Anonymous said...

Well, while Android looks interesting, I think I'll rather wait for the Palm Pre. Now THAT looks like a true PalmOS successor.

Dr.Sid said...

Palm for me too, pls.

Also .. I always laughed when someone tied Google and Big brother together. After trying to remove GoogleUpdate.exe from my computer I won't laugh anymore.

But then .. when Palm will hit stores, Android will mature a bit. As it looks sad now with WM6 dominating, it will look better toward end of the year.

Anonymous said...

If you live in Czech Republic and watch football regularly, please email at, for an interesting opportunity. Thank you.

Unknown said...

Blog was clear and the way this blog articles written is awesome, they clearly describe what they want to tell their reader. Android is very popular and its many app like
Download Youtube Videos on Android etc. are more popular. People love to download them.