Mobile device development is differentiated from desktop and Web application development primarily by the hardware and other system constraints of the device that the application will run on. Those constraints vary slightly from platform to platform. This guide focuses on resources to help application designers and developers learn about a cross section of some of the most promising platforms available.
The Apple mobile devices, including the iPhone, iPod Touch and iPad, are giants in the consumer electronics world. Although first generation devices tend to fall short of many corporate needs, Apple products' ease of use and Steve Jobs' magic touch attract a cult following. The iPad in particular shows promise for uptake in enterprises -- and its innovative user interface is already influencing new application design.
Probably the best place to start when branching out into a new platform is to go straight to the source. The official iOS developer site from Apple allows developers to download the SDK and begin to develop and test new applications. It also has information on distributing new apps on the App Store. The free iOS SDK includes Xcode IDE, an iPhone simulator with Open GL ES support, Interface Builder, Instruments, frameworks, compilers and Shark analysis tools.
In order to to take advantage of the multi-touch features built into the iPhone, another good resource to explore is Apple's Cocoa Touch framework. It includes the UIKit for file handling, networking, string building, and other other basic functions. Cocoa Touch also include other frameworks for 3d graphics, networking, professional audio, networking, and specialized Objective C frameworks that reduce many complex tasks to a few lines of code.
Another great resource is the iCode blog, which provides a wealth of information from basic tutorials to more advanced tips for taking advantage of the special features of the iPhone and iPad platforms. ManiacDev.com also provides a range of tips on everything to improving in-app purchases, to new libraries for iOS development.
Android Operating System
Android is a mobile OS based on Linux and championed by Google and the Open Handset Alliance. Developers write managed code that uses Google libraries. The Android Developers site provides the Android SDK, and a variety of tools to develop mobile apps on the Android platform. The SDK is designed for use with Eclipse, but the SDK includes other tools for debugging, packaging and installing applications on the emulator. The guide also includes tips on best practices, UI Guidelines and designing for performance and responsiveness. It also includes tips on using Eclipse to manage Android projects.
Developers might also consider checking out the official Android Developers blog for the latest news and tips from Google. The Android Talk channel on YouTube provides a wide range of news, tutorials and advice on development, marketing and market trends. Fred Grott's Android resources for application development Knol article provides links to various Android development libraries, using other programming languages for Android development, and several Android development utilities. Over the past year or so, our contributor William Brogden has given us a variety of Android related advice including these three tips on Android architecture, notes on developing for the Android mobile platform and comparing Android and Kindle development.
Microsoft is now focusing its efforts on the Windows Phone OS for mobile services. This is a major upgrade and does not directly support applications built for Windows CE and Windows Mobile 6. Although there are quite a few Windows Mobile devices now in the field, Windows Phone 7 and its successors will dominate for new smart phones. The actual growth and deployment of Windows Phone devices has been much slower than iOS and Android. However, Nokia has committed to using the Windows Phone operating system rather than Symbian for new smartphones.
The Windows Phone platform uses the Metro design language which focuses on a speedy interface with clean typography rather than fancy graphics. Windows Phone applications are distributed via the Zune marketplace. Applications, games and services designed to run natively for Windows Phone use either XNA or a Windows Phone specific version of Silverlight. XNA is derived from Microsoft's Xbox New Architecture and is oriented toward rich graphical applications and video games. It includes a rich set of class libraries to make easier to reuse code across the various Microsoft platforms.
Developers who are already used to working with Windows on desktops will find many similarities as they make the transition to mobile. According to the Windows Mobile Developer Center, most of the development for Windows mobile applications is done using Visual Studio in conjunction with the Windows Mobile SDK. These developer tools only run on Windows Vista and subsequent versions of Windows.
Microsoft provides a wide range of resources for getting Windows Phone development projects off the ground. The Windows Phone Development Library includes documentation on the development platform, tips on getting started, and a variety of learning resources on the platform, Silverlight and XNA Frameworks. It also includes a guide to installing the Windows Phone SDK.
Microsoft's App Hub provides tips on getting apps into the Zune marketplace for both Windows Mobile and Xbox platforms. The Windows Phone Developer Blog provides news on new tools, and tips on getting most out of the Metro design language, and improving the user experience. The Windows Phone Geek, is one of the largest outside blogs dedicated to the platform. It includes the latest development news, in-depth articles on getting the most out of the platform and tips and tricks for improving the development process.
As with other major mobile development platforms, Windows provides developers with a centralized publishing solution. Windows' App Hub provides the necessary resources for creating and distributing applications on the Windows Phone operating system. Also, the Windows Phone Blog provides news and commentary from the folks who know Windows mobile development best.
Traditional development for Research in Motion's Blackberry phones has been targeted at the BlackBerry Application Platform, which supports both Java and Web-based applications. More recently, BlackBerry purchased QNX, a maker of high performance operating systems by the same name, which is used in fault resistant applications like nuclear power plants, vehicles, and more recently the BlackBerry Playbook. Although deployment of the various BlackBerry platforms has lagged behind others, it has a strong enterprise focus on security, management and communications.
The BlackBerry Developer Zone provides research materials for application designers interested in all aspects of BlackBerry phone and table development. The BlackBerry Developers Blog has resources for getting started, forums for asking development questions, an issue tracker, and stories about how companies are developing secure mobile apps in different industries. Serious developers may consider checking out the BlackberryDevCon developer event, which brings together developers interest in developing for the various BlackBerry platforms and tools.
IBM developerWorks has developed a serious of tutorials on creating BlackBerry applications with open source tools. The Crackberry blog covers general BlackBerry news and reviews, as well as a tutorial on getting started with app development. Developers with an Adobe background should check out the the company's Blackberry app development guide, which includes tutorials on getting started, and on using AIR, Flash, ActionScript to develop BlackBerry apps.
The Symbian open source platform has been the world's most widely used smartphone platform. It grew out of Nokia's S40 and S60 platforms. However, it has lost some traction with the advent of the other mobile OSs and Nokia's decision to move to Windows Phone.
Most of the code is now available under the Eclipse Public License (EPL), although some of the code has not been made public yet and is still subject to the private Symbian Foundation License (SFL). The Symban Developer site provides more source code information, tools and kits, documentation and other information on the Symbian platform. If you're interested in developing for Symbian, you might also want to check out Nokia's Qt SDK.