Smartphones

Android development fundamentals: How to get started

If you're considering developing Android apps, read what Justin James learned from talking with an Android Developer Advocate and a VP at Appcelerator.

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.

Android development

Java

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.

Appcelerator's Titanium product

The big news is that Appcelerator just released the full version of Titanium 1.0, which provides a cross-platform development environment for mobile development. Originally, Titanium interpreted everything through the WebKit rendering engine, which made it slow, but the newest releases only use WebKit's JavaScript interpreter. All of the rendering is performed by using native widgets, which makes Titanium very fast. It also means that the applications have the native look and feel, which is very important to end users, as well as having access to the native device capabilities.

Titanium is interesting as a development option because it uses JavaScript. Many developers know JavaScript, and JavaScript is a solid language with a lot of advantages. I have worked in JavaScript and Java, and JavaScript appeals to me because it is a dynamic, object-oriented, interpreted language; as a base level, it is similar to Ruby or Python and attracts me for the same reason. I will definitely look at Titanium to see what it's like to use it to write Android apps.

If you're already working in Android development, share some of your experiences and challenges in the discussion.

J.Ja

About

Justin James is the Lead Architect for Conigent.

0 comments