For several years, I have been making the case that smartphones will replace laptops and desktops for an increasing numbers of users, particularly if someone comes out with a universal smartphone docking station. While the docking station hasn't happened yet, many users, particularly consumers and business executives, now use smartphones as a replacement for their laptops or desktops, and mobile development is rapidly changing. As a result, I'm going to write more about mobile development. I have reached out to Google, RIM, and Apple, and I plan to contact Microsoft when more details on the Windows 7 Phone OS are available (I feel that the current Windows Mobile 6.X platform is a lame duck, and it is now fact that 6.X apps will not run on 7).
I am starting with the open source Android platform, mainly because I recently purchased a Motorola Devour. I spoke with Jason Chen, an Android Developer Advocate with Google, and Scott Schwarzhoff, VP of Marketing at Appcelerator, to learn about what it takes to get up and running with Android development. I plan on trying the paths that Jason and Scott suggested and then writing about what this development is like in more detail in a future column.
During my conversation with Jason, he explained that most Android developers use Java to develop for the Android. Google supports an Eclipse plug-in for Android development, but you can use any Java IDE, such as NetBeans and IntelliJ IDEA (and even a plain text editor) as well. Jason made it very clear that Android used entirely different Java bytecode than the normal JDK; however, Android does use the same .class files that are produced by the usual Java process. I asked if Android uses the standard libraries, and he told me that there are similar libraries, but not the standard ones. The impression I got was that Android uses the Java language and replicates much of the standard framework, but it does not use the standard JDK (much like writing C# for Mono as opposed to the .NET CLR).Openness
Jason really stressed the openness of the Android platform; in fact, the first AT&T Android phone completely replaces Google services with Yahoo!. We talked a little about how openness applies to application distribution. In contrast to, say, the iPhone platform, Android apps can be installed directly via USB cable (which is great for developers or internally developed apps) or through the Android Market. In contrast to Apple's App Store, the Android Market does not have any restrictions as to what goes on there. The Android Market charges developers a one-time $25 fee to register, and the revenue split is 70/30 (most of the 30 goes to the carriers, with only a little going to Google to cover distribution costs; Google is not making money on the Android Market). In addition, there are other application markets out there for developers who would rather get their distribution elsewhere.Development cycle
The basic development cycle that Jason described is very similar to any other application cycle: plan, code in your IDE, test in the emulated environment, and then test on directly attached devices. When you are ready to put an application on the market, you just log in to the Android Market and upload it. The application contains a manifest file that describes what device capabilities are required, and users are only shown apps that work for their devices (they are also shown any special rights it needs, such as network access).Notepad Tutorial
Jason suggested that, if you're just starting out with Android development, you should check out the Android development site, and look at the Notepad Tutorial, which covers a lot of ground. He said two big challenges for first-time Android developers are grappling with the multi-tasking nature of the device and handling interruptions, such as incoming calls, gracefully.
If you're already working in Android development, share some of your experiences and challenges in the discussion.
Justin James is the Lead Architect for Conigent.