Now that lots of Android-based devices have come out, and especially now that it’s moving past being used “just” for phones, but also for tablets & netbooks, I’ve decided to buckle down and really get involved in developing for the platform. I was at CES last week, and there were several e-readers and other devices being shown there running Android, so it’s obviously getting ready to go big time. I wouldn’t be surprised if there will be Android-based TVs, microwaves, and even washing machines next year.
I’ve been working my way through the substantial platform documentation, and am quite impressed with the programming model. Though it’s Java, it feels much more like working with ActionScript, in that it uses a lot of the more modern approaches to getting things working. And the platform gives you a LOT more control over what kinds of apps you can develop that the iPhone platform, since you can easily create background processes and services that other apps can use, run multiple apps at the same time, etc. This is getting me excited about developing in Java again, after having left it behind for ActionScript and Python.
I started working with Java back in the days when it was called Oak, and was a Sun research project, and spent a lot of time developing interactive client-side applications in the Java 1.0 and 1.1 days (mostly interactive e-commerce and advertising applications). Though, at the time, the libraries were fairly simple, that was also one of the beauties of Java. As it started being used for more server-side development, and the libraries started growing, I felt that Java had lost a lot of that purity of design. In fact, I started calling it the “COBOL of the Internet,” since it seemed that developing in Java had become one of the most verbose ways possible to get anything done. In my opinion, the committees extending it had massively overused design patterns to the point where you had to write a dozen lines of code to get the simplest things working.
I know a lot of people complained that Google had broken compatibility with J2ME and other mobile platforms by creating their own Java libraries, but I feel it was a necessary step to get things back to a more sane development environment.
I ordered a Nook and a Nexus, so I could work with two completely different Android form factors. The Nook’s back-ordered for a month, so my review of that will have to wait, but the Nexus is quite a nice phone. I love the animated boot-up screen and the animated home-screen background, but the apps I’ve downloaded and played with so far don’t feel as polished as the iPhone apps. There’s a bit of a lack of polish, but that could be due to the relative newness of the platform, and due to the different developer culture that Android attracts (not as focused on beautiful interactions as the iPhone community). One thing that I really dislike about the default Android skin is that it’s difficult to tell what’s a button, since the regular buttons are just bits of text with no border. If you know you’re supposed to press them, that’s great, but without some indication that something’s able to be pressed, it’s pretty confusing. In general, though, it shows a lot of promise.
If I were a device manufacturer, Android would be my first choice to look at as the basis for developing a hardware product.