Mobile Application Development – Current Status, Opportunities and Skills Required – Interview with Professor Mark DuBois
Today’s Web Professional Minute is an interview with Professor Mark DuBois, Illinois Central College and WOW’s Director of Education. In this seven minute podcast, Mark covers the current status of Mobile Application Development, his research into the landscape of providers and devices, the opportunities for monetization, jobs and the skills required and the training resources available.
According to Wikipedia, Mobile application development is the process by which applications are developed for small low-power hand held devices such as personal digital assistants, enterprise digital assistants or mobile phones. These applications are either pre-installed on phones during manufacture, or downloaded by customers from app stores and other mobile software distribution platforms.
Mobile software development is the process of creating software which can be used on a mobile device. It also refers to the creation of special web and applications for mobile devices. This is often done using a mobile simulator on a personal computer.
Mobile software is developed by using different platforms and programming languages based on the target mobile device. There are many different hardware components found in mobile devices so their applications are developed using different software architectures. It is also made more difficult because users of mobile applications have diverse preferences so extensive improvements to traditional system development methodologies are required in order to keep up with this demand.
Most of the methodologies in use are based on the model-driven approach which has three different views of the application development process: the application itself and its structure, the business logic and (3) the graphical user interface of the application.
[edit] Platforms for multi-vendor devices
The following software platforms will run on hardware platforms from a number of different manufacturers:
* Java ME This platform generally produces portable applications, although sometimes device-specific libraries exist (commonly used for games), making them non-portable. It is often used to provide simple applications on feature phones. Applications (including their data) cannot be larger than around 1 MB if they are to run on most phones. They must also be cryptographically signed in order to use APIs such as the file system access API. This is relatively expensive and is rarely done, even for commercial applications. Java ME runs atop a Virtual Machine (called the KVM) which allows reasonable, but not complete, access to the functionality of the underlying phone. The JSR process serves to incrementally increase the functionality that can be made available to Java ME, while also providing Carriers and OEMs the ability to prevent access, or limit access to provisioned software.
* Symbian platform Designed from the start for mobile devices, the Symbian platform is a real time, multi-tasking OS specifically architected to run well on resource-constrained systems, maximising performance and battery life whilst minimising memory usage. The Symbian Foundation maintains the code for the open source software platform based on Symbian OS and software assets contributed by Nokia, NTT DOCOMO, and Sony Ericsson, including the S60 and MOAP(S) user interfaces. The platform is fully open source, mostly supplied under the Eclipse Public License. Over 300 million Symbian OS-based units have been shipped and Symbian holds more than a 50% market share globally.
* Android Android is a Linux-based platform from the Open Handset Alliance, whose 34 members include Google, HTC, Motorola, Qualcomm, and T-Mobile. It is supported by over 34 major software, hardware and telecoms companies. The Linux kernel is used as a hardware abstraction layer (HAL). Application programming is primarily done in Java. The Android specific Java SDK is required for development although any Java IDE may be used. Performance critical code can be written in C, C++ or other native code languages using the Android Native Development Kit (NDK).
* Windows Mobile is a variant of Windows CE for mobile phones. Windows CE was originally developed for palmtop computers and Pocket PC PDAs with stylus-touch screens, and later adapted for use with keyboard-equipped smartphones. Phones have become the largest installed base for CE, though market share has fallen since the introduction of Android and IPhone. Windows Mobile supports a subset of the win32 programming interface, and a simplified GUI with one window on the screen at a time. Applications can use the .NET Compact Framework Devices are compatible with applications on Pocket PC/Windows Mobile devices. Windows Mobile 6.5 introduced IPhone-like finger-based touch interfaces, while Windows Phone 7 is a substantial redesign that uses Silverlight and XNA for rich user interfaces.
* Qt (framework) Qt uses standard C++ but makes extensive use of a special pre-processor (called the Meta Object Compiler, or moc) to enrich the language. Qt can also be used in several other programming languages via language bindings. It runs on all major platforms and has extensive internationalization support. Non-GUI features include SQL database access, XML parsing, thread management, network support, and a unified cross-platform API for file handling.
* BREW Used for deploying applications on CDMA devices (but also supports GPRS/GSM models). Distributed via a Brew Content Platform. Little penetration in Europe. BREW can provide complete control of the handset and access to all its functionality. However the power provided by native code with direct access to the handset APIs, has caused the BREW development process to be tailored largely towards recognized software vendors. While the BREW SDK (Software Development Kit) is freely available, running software on real mobile hardware (as opposed to the provided emulator) requires a digital signature which can only be generated with tools issued by a handful of parties, namely mobile content providers and Qualcomm themselves. Even then, the software will only work on test enabled devices. To be downloadable on regular phones the software must be checked, tested and given approval by Qualcomm via their TRUE BREW Testing program.
* Palm OS formerly had a strong enterprise following in the important US market, based on Palm PDAs
o Palm webOS is Palm’s follow-on proprietary mobile operating system running on a Linux kernel which supports multitasking. Launched with Palm Pre and Pixi, now owned by Hewlett Packard.
* Flash Lite Used for devices that support the Flash Lite player.
* Microbrowser based. Lightweight functionality provided via a web-interface
Platforms for single vendor devices
The following software platforms will only run on a hardware platforms from a specific manufacturer:
* BlackBerry Supports push e-mail, mobile telephone, text messaging, internet faxing, web browsing and other wireless information services as well as a multi-touch interface. It has a built-in QWERTY keyboard, optimized for “thumbing”, the use of only the thumbs to type. The BlackBerry devices soon took a dominating position on the North American smartphone market. Also important for BlackBerry are the BES (BlackBerry Enterprise Server) and the Mobile Data System (BlackBerry MDS).
* iOS (Apple) The iPhone and iPod Touch SDK uses Objective-C, based on the C programming language. Currently, is only available on Mac OS X 10.5+ and is the only way to write an iPhone application. All applications must be cleared by Apple before being hosted on the AppStore, the sole distribution channel for iPhone and iPod touch applications. However, non-Apple approved applications can be released to jailbroken iPhones via Cydia or Installer. This system is also used for the iPad tablet computer.