Mobile development technologies

Introduction

There are a number of different options when developing for a mobile device such as a phone. There are two general approaches: web development, and native application ("app") development. Each is discussed below.

Location based applications - GPS

Before considering the different development options and mobile operating systems, a word on GPS (Global Positioning System) as this is one of the most exciting developments in the mobile software world. Most contemporary smartphones, including most Android phones and many Nokias, can use GPS - a series of satellites controlled by the US - to locate you on the Earth. This is the same technology that car "satnav" (satellite navigation) systems use.

This allows the development of interesting mobile applications that use your position on the Earth to deliver information about nearby points of interest, such as pubs or restaurants, through your phone. GPS enabled phones are the most effective for these location based applications, but any phone can use the mobile phone mast system to give an approximate location on the Earth.

Mobile Web Development

One option in mobile application development is simply to create websites for mobile phones. Increasingly this option is becoming more and more viable as more and more can be done from JavaScript in a browser environment. Some of the things now possible with JavaScript include:

Obviously you need a web browser capable of all these tasks. Many of these tasks are possible with more up-to-date browsers, such as Firefox for mobile and mobile browsers based around the WebKit engine, such as the Android browser or Safari for the iPhone.

Native App Development

The other option is to write custom applications (apps) for mobile phones, i.e. standalone, native applications which run independently of a web browser. Such native applications are popularly known as apps. Why might we want to do this? Basically, native apps give you rather more power as a developer to do what you want to do. Some examples:

How to develop a mobile application

Typically you download a Software Development Kit to a desktop machine, which comes with an emulator - a graphical representation of a phone which you can test your application on. You develop and debug your code on a desktop machine, and then transfer it to a mobile device, once it's known to work on the emulator. Of course further bugs might come to light on the actual mobile device - probably the trickiest part of mobile development!

Mobile operating systems

Back to the main topic of this week, and what options are available for the development of native (standalone) mobile applications? The first thing to consider is the operating system as different programming languages are supported by different operating systems. The main operating systems are:

Mobile development technologies

So what are the development options for actually creating applications for mobile devices? The main options include:

Android

One of the leading smartphone operating systems is Android. In the past three years Android has grown from a minority player to one of the leading alternatives to the iPhone amongst touchscreen smartphones. Android is a complete operating system available for mobile devices, based on Linux. Unlike many of the other options, it has been built from the ground up to be open source; the core operating system (except the tablet-only Android 3.0) and many of the standard applications available are open source applications. To develop applications for Android, you use the Android Software Development Kit (SDK) and the Java programming language, but Android has a different runtime environment and GUI system to standard (Sun/Oracle) Java. Consequently, existing Java applications will not run on Android directly, but usually only the GUI need be rewritten.

Advantages of Android:

Disadvantages:

iPhone

Apple's iPhone is amongst the more advanced smartphones available. It runs its own operating system (iOS) and consequently you need to write applications built specifically for the iPhone. iPhone apps are developed in a language called Objective-C, which is related to C++; like C++, Objective-C adds object orientated capabilities to the older C language. Since it is an Apple product, developing for the iPhone shares similarities to developing desktop applications for the Mac.

Advantages of iPhone development:

Disadvantages:

References:

Java ME (Java Micro Edition)

The formerly most widespread development option for mobile devices is probably Java ME (Java Micro Edition), though in the last three years it has been increasingly superseded by the iPhone and Android environments. This is a slimmed down version of the full Java programming language (one of the most commonly used programming languages today) for hardware with relatively limited memory and processing power, such as many mobile phones. BlackBerry uses JavaME plus their own extensions.

So what are the disadvantages?

.NET Framework for Windows Phone 7/Mobile

Windows Phone 7/Windows Mobile phones do not come with Java ME installed, although you can install Java to them yourself which allows you to write Java applications. However the normal way of writing applications for Windows on a phone is the same as the normal way of writing regular Windows applications: the .NET framework. The .NET framework is a library developed by Microsoft to allow you to create graphical and network applications on Windows operating systems, and you can write .NET applications for it. In terms of the actual programming languages, you would use either Visual Basic or C#.

Advantages of .NET framework:

Disadvantages:

So what platform should you develop for?

It really depends upon the features of your application. With native mobile applications ("apps") you have a lot of flexibility compared to the web development (HTML/JavaScript) option, but you need to develop separately for each platform (iPhone, Android, Java ME, etc). So if you are aiming for a cross-platform application which is relatively simple, it's probably best to go for the web option as long as this does not impact negatively on usability. If you wish to take advantage of all the features the phone offers, it's better to go for a native app, but you may need to either pick one platform (and just accept that your app will not work for the others) or develop multiple versions.

Mobile applications and web services

Most mobile apps interact with the web. Mobile apps typically provide location-based information. For example, a mobile app might look up the nearest pubs and restaurants to the user. This would work as follows: