In my last post, I wrote about my first Android app, a spinning OpenGL-accelerated cube. I didn't release that one to the Android market of course; it was just a test.
However, I am proud to say I have now written an app, "RuneScape Map", and released it to the Android market! It is a tool for players of the popular online game RuneScape, that lets them view the large (12-megapixel) world map on their Android device. Of course, they can pinch-zoom and scroll around the map with their fingers.
It sounds like a simple app, but it actually took some clever tricks; the 12 megapixel image can't fit into memory -- in fact, if you try to view it through the Android browser, it's extremely low-resolution and if you zoom in, it is too blurry to read. It was a wonderful feeling to get it working, and even more wonderful to actually put it out there in the public.
Anyway, my point of this post was not to advertise my app; I doubt any one of the readers of this article plays RuneScape. I guess my point is, Android apps aren't tough to make, and they're a ton of fun to develop. If you are a Java developer, get started and you'll see what I mean!
All it takes is to download the Google SDK and read some of the documentation. There is plenty of material to read through Google's online reference. The SDK comes with an emulator which looks and acts like a real Android phone, right on your screen. You don't even need a physical device to develop apps (though of course you should test on physical devices).
Here are some good reasons for you, as a Java developer, to start Android development:
The SDK installs into Eclipse, so you can use the IDE that you already know and love. When you hit "Run", it launches the emulated phone and starts your application, or if you connect your real phone to your computer, it will automatically deploy it to your device!
The Android virtual machine supports most of the Java 5 libraries you already use. You can look through the package index to see if a certain library exists in the Android environment. The big omissions are Swing and AWT, which of course are replaced by the Android's custom GUI system (which optionally uses XML to define the layout of widgets!), but many libraries like java.util, java.io, java.math, java.net, javax.xml, junit, and so on are implemented just as you are used to. And there's even OpenGL support, which is great for someone like me who is looking to develop a 3D game in the near-ish future.
Your apps are portable. I don't mean cross-platform, I mean literally portable. Picture yourself in an interview, the interviewer asks about your prior work, and you just calmly pull your phone out of your pocket, tap the icon of your whiz-bang application, and hand the phone to them. I don't know about you but if I were that interviewer, I think I'd be impressed (assuming of course that the app is as thought out as the delivery). Or, see my other scenario at the end of my previous blog post, about the mobile WebSphere console.
There's a large, and growing, audience. Though the iPhone is ahead, the Android platform is growing in terms of popularity and number of phones. Many people (such as myself) prefer the additional customization and freedom that Android allows users, and many people (also such as myself) are migrating from "dumbphones" to smartphones.
There is a lot of untapped potential and plenty of room to grow. In my case, I searched the market for "RuneScape" and found nothing, so I developed an app myself. This kind of thing is common; once you have access to the Android market, go search for anything you can think of and see what's out there. There's a good chance you can find something that hasn't been made yet, so go make it! Fill that need!
I hope I have convinced you to at least consider the Android platform, if you are interested in these type of apps. If not, that's okay! But I personally find it very exciting to make something that runs on my phone, anywhere, and can do anything that I can write in Java.