You are on page 1of 20

MAKING THE TRANSITION FROM

Desktop/Web Application Development to Mobile Application Development


A RapidValue Solutions Whitepaper

Contents
Executive Summary What Skills Do Desktop/Web Developers Have? What Skills Do Mobile Developers Need? Mobile Development Options The Mobile Mindset-Factors to Consider Migration Paths-Desktop/Web Application Development to Mobile Application Development From Desktop/Web to Mobile: An Eight-Week Plan Syllabus Training Resources Conclusion About RapidValue 3 4 6 7 8 11 11 12 16 19 20

A RapidValue Solutions Whitepaper April - 2013

02

RapidValue
Enabling Mobility

Executive Summary
People rely on their smart phones, tablet devices and laptops for all kinds of activities. Consumers use their mobile devices for shopping and entertainment, while professionals rely on them as extension of their offices, to collaborate, engage with customers and get work done. As the power and capabilities of mobile devices continue to grow, taking advantage of powerful new mobile applications and the unique capabilities of mobile devices become even more valuable. Many desktop/web developers (and their organizations) are eager to participate in the mobile revolution. RapidValue has been approached many times by desktop/web developers and CIOs, asking if they can transfer their existing desktop skills (or those of their staff) to mobile application development. Weve created this paper to help them get started. This paper provides a guide for enterprise desktop/web developers who are interested in becoming mobile developers. The paper examines the main technologies that desktop/web developers use today (Java, .NET and HTML) and various mobile development technologies (mobile web applications, native apps and cross-platform development frameworks. The paper also addresses the migration path depending on a developers current skill set and the mobile platform(s) you want your applications to run on. In many cases, desktop/web developers already have a strong foundation to become successful mobile developers. Well look at the additional skills and knowledge they need to acquire, the differences between developing for desktop/web and mobile environments, as well as the requirements for specific platforms. Well also examine resources that are available to help your desktop/web developers make a smooth and cost-effective transition.

Definition: Enterprise desktop/web developers are those who build applications to be accessed via PC/Desktop. The application is either accessed through web browser or is installed on the system.

A RapidValue Solutions Whitepaper April - 2013

03

RapidValue
Enabling Mobility

What Skills Do Desktop/Web Developers Have?


There are two main types of enterprise applications: Web or thin client applications primarily execute on a remote server, with the user engaging with them through their browser (e.g. Google Gmail). Desktop or thick client applications are installed on each device and execute on the device (e.g. Microsoft Outlook). Most enterprises use both. A number of technologies can be used for building both types of applications. The most popular are Java, .NET and HTML for both thin and thick client applications. Most enterprises have developers who are familiar with Java, .NET or HTML for building their solutions. These developers will also know the software stack and frameworks associated with each platform. Because of their popularity and their applicability to mobile, these are the platforms we will address in this whitepaper.

Java
Java has two main flavors used to develop desktop and web applications: Java Enterprise Edition (J2EE) for developing web applications Java Standard Edition (JSE) for developing thick client desktop applications

There are also application development frameworks such as Spring1 and Hibernate1 which are most popular for enterprise Java developers. These run on top of Java, and are used for building web and thick client applications. Spring is an open source application framework and inversion of control container for the Java platform. Hibernate is an object-relational mapping (ORM) library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database. Hibernate solves object-relational impedance mismatch problems by replacing direct persistence-related database accesses with high-level object handling functions.

A RapidValue Solutions Whitepaper April - 2013

04

RapidValue
Enabling Mobility

Microsoft .NET
The second part of the desktop/web development world is Microsofts .NET Framework. .NET1 is a software framework developed by Microsoft that runs primarily on Microsoft Windows. It includes a large library and provides language interoperability (each language can use code written in other languages) across several programming languages. Programs written for .NET Framework execute in a software environment known as Common Language Runtime (CLR), an application virtual machine that provides services such as security, memory management, and exception handling. The class library and the CLR together constitute the .NET Framework. Web applications for the .NET Framework are developed using ASP.NET, while native applications are developed using Windows Presentation Framework (WPF) and C#. ASP.NET is a server-side Web application framework designed for Web development to produce dynamic Web pages WPF is a computer-software graphical subsystem for rendering user interfaces in Windows-based applications C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based) and component-oriented programming disciplines

HTML
HyperText Markup Language (HTML)1 is the main markup language for creating web pages and other information that can be displayed in a web browser. HTML has gone through a number of revisions and experienced a variety of extensions. The most recent version used is HTML5, which is also an attempt to define a single markup language that can be written in either HTML or XHTML syntax. It includes detailed processing models to encourage more interoperable implementations; it extends, improves and rationalizes the markup available for documents, and introduces markup and application programming interfaces (APIs) for complex web applications. HTML5 has also been built with consideration for low-powered devices such as smart phones and tablets.

Source: Wikipedia definitions

A RapidValue Solutions Whitepaper April - 2013

05

RapidValue
Enabling Mobility

What Skills Do Mobile Developers Need?


Mobile applications can be developed in three fundamental ways: mobile web, native or cross- platform. Each approach requires different skill sets. Mobile technology is also more fragmented compared to desktop, with four main platforms, each with multiple form factors, screen sizes, etc.

Mobile Web App


The application is built to run over the internet from a central server, from where it can be accessed by any device with a web browser.

Technologies:
JavaScript HTML5

Native Apps
The application is built in its native code to run on a specific device and operating system. The app is downloaded from an app store and resides on the device.

Technologies:
iPhone and iPad: Objective C BlackBerry: Java technologies Android: Java technologies Windows tablet and Windows phone: .NET / C# using the Microsoft Windows tablet SDK

Cross-Platform Frameworks
The application is built once using a cross-platform framework and run it on multiple mobile platforms after fine-tuning for each platform. The application is downloaded from an app store and resides on the device.

Technologies used with leading frameworks:


Appcelerator: JavaScript, HTML PhoneGap: JavaScript, HTML IBM Worklight: JavaScript, HTML RhoMobile: Ruby on Rails

A RapidValue Solutions Whitepaper April - 2013

06

RapidValue
Enabling Mobility

Mobile Development Options


Due to differences in underlying technology, each development approach has inherent advantages, drawbacks and appropriate use cases. Careful analysis is required to ensure that an application is built using the right technology for the functionality required. The following table summarizes the different approaches:
Development Approach Definition and Tools

Native Build the app using native frameworks: iPhone SDK Android SDK Windows Phone SDK

Cross-Mobile Platforms Build once, deploy on multiple platforms as native apps: RhoMobile Titanium Appcelerator PhoneGap Worklight Etc. RhoMobile: Ruby on Rails Appcelerator: JavaScript, HTML PhoneGap: JavaScript, HTML Worklight: JavaScript, HTML

Mobile Web Build using web technologies: HTML5 Sencha JQuery Mobile Etc.

Underlying Technology

iPhone: Objective C Android: Java Windows Phone: .NET

JavaScript, HTML

Deployment Key Use Cases

App stores

App stores

Over the web Generic user experience, performance depends on Internet connection Distributed user base across smart phone platforms Need to maintain single code base Moderate amount of device functions

Apps requiring high-end user experience, more transactional in nature

Simpler apps, more informational in nature Offline Usage Multiple device types distributed across key users Works well for a number of enterprise applications that do not require heavy device functions

Large user base on one device (e.g. physicians with iPad) Offline usage Apps requiring extensive device and/or OS functions

For more information about the different development options, please refer to the RapidValue Whitepaper How to Choose the Right Architecture for Your Mobile Application http://www.rapidvaluesolutions.com/whitepaper/

A RapidValue Solutions Whitepaper April - 2013

07

RapidValue
Enabling Mobility

The Mobile Mindset-Factors to Consider


Developing for a mobile device platform is not just a technology change; it requires a different mindset and new design skills. There are certain important factors which developers need to consider that are inherent to smart phones and other mobile devices, including: Device Fragmentation Screen size Screen density User experience Memory capacity Battery life

Multiple Platforms and Devices


Traditional desktop and laptop PCs are Windows-based with a standard screen size, features and form factor. The mobile landscape is much more fragmented, with four main platforms (Android, iOS, Windows Phone and BlackBerry) that are continually evolving. Accordingly, building mobile applications requires more factors to consider when planning, including which device platform to build first, what mobile technology option to choose, what capabilities should the mobile phone support, and the need for a long-term roadmap with deployment on additional, next platforms. In contrast to traditional Windows-based desktop development, mobile developers need to think about creating application code for multiple platforms-Android, Windows Phone, iPhone and BlackBerry. Designing an application that is optimized for various devices with different screen densities and screen sizes is even more challenging.

Screen Size
Enterprise applications designed for a desktop or laptop client work with a screen size that far exceeds that of mobile devices. How to design for a device that fits in your pocket requires simplification and a rethink about navigation. While a desktop application may have tabs, options and links on all sides of the screen and in line with text, for mobile you need to concentrate on the immediate function, reducing the number of options to only those needed for the immediate task or feature.

User Interaction
Instead of a mouse and keyboard, there is a quite different mode for user input: touch. Even a single touch can involve a variety of interactions, including single-tap, double-tap, long touch, move and fling. All these actions have to be captured.

A RapidValue Solutions Whitepaper April - 2013

08

RapidValue
Enabling Mobility

Desktop PCs and laptops provide keyboards for data entry, allowing comfortable, fast typing with both hands and all fingers. Since mobile devices do not have that capability, even those with keyboards, manual data entry should be minimized. Instead, wherever possible, provide options for selecting instead of asking for specifics through data entry. Unlike clicking links with a mouse, tapping links using your fingers on a touchscreen mobile device is not easy. Users can easily activate a link they did not intend to tap and accidentally land on an undesired page. Bigger bars, tabs or buttons let users tap with more precision.

Screen Density
Thats not quite the same as far as the phones go. Devices available from different manufacturers vary from 120 dpi for the lower-end HTC Tattoo / Wildfire and 240 dpi for the higher end Droid seriesa difference of 100% in screen density. This means that using hardcoded values for pixels and a single set of images will lead to one of two things on a higher end phone: either your UI will be up-scaled and fuzzy, or the controls will be too small to allow comfortable targeting with a finger. Therefore you need to bundle multiple resolution images and use display metrics to scale your custom drawing code.

Integration with Phone Functions


Smart phones are sophisticated communication devices. Making phone calls is their most basic function. While mobile platforms place many limitations on design and content, they also open up new opportunities that traditional desktops cannot provide. For example, integration with phone functions such as direct calling and text messaging lets users select a phone number from a list, then call or text that number without having to type it. Another example: capabilities such as GPS can be integrated into location based services like mobile search. Many mobile devices can automatically detect user presence and provide them with local search results, creating powerful opportunities for businesses to promote their offerings based on a persons proximity to their place of business and their immediate intent.

Limited CPU/Memory/Battery Resources


Mobile devices lack the computing power and memory capacity of most desktop and server systems. Developers need to write algorithms and perform code optimization to support the mobile device capacity. For example, 1 GB of memory is a constraint in mobile phones which is not found in todays desktop applications.

A RapidValue Solutions Whitepaper April - 2013

09

RapidValue
Enabling Mobility

Another issue that enterprise applications do not have to address is battery life. With enterprise applications, you can have complex algorithms running on the server because there are no battery constraints. But when it comes to mobile, a complex algorithm or suboptimal code will drain the battery quickly. When designing algorithms, developers need to think about battery consumption, and design for optimal usage.

There is another approach to building applications which works efficiently across multiple device types including desktops, mobile phones and tablets. The RapidValue whitepaper Responsive Web Design vs. Mobile Web AppWhat Approach Is Best for Your Enterprise? explains the difference between Mobile Web App and Responsive Web Design, and provides a framework for resolving some of the key questions decision makers have. These questions include what factors to consider when choosing between Responsive Web Design and Mobile Web App, and what types of industries Responsive Web Design is most suitable for. As the paper guides you in how to make the right choice, it draws upon RapidValues experience helping enterprises succeed in the complex and evolving mobile ecosystem. Download the whitepaper: http://www.rapidvaluesolutions.com/responsive-web-design-whitepaper/

A RapidValue Solutions Whitepaper April - 2013

10

RapidValue
Enabling Mobility

Migration Paths-Desktop/Web Application Development to Mobile Application Development


Desktop/web developers can map their skill sets to mobile technology. The following are typical migration paths:
Current Development Languages/ Platforms Migrate to Mobile Technology Mobile Web App (HTML5),Cross-platform Mobile Apps (PhoneGap, Appcelerator, Worklight) Native Apps (Android, BlackBerry) Native Apps (Windows Phones, Windows Tablets) Native Apps (iPhone, iPad) Cross-platform Mobile Apps (Rhomobile) iBuildApp (iOS)

JavaScript, HTML

Java .Net, C# Objective C Ruby on Rails C# using Mono Framework

DESKTOP/WEB TO MOBILE MIGRATION Various training programs, online tutorials, study materials, resources and learning tools are available for each mobile platform to help desktop/web developers acquire the skills they need. The following sections provide more details about these learning resources.

From Desktop/Web to Mobile: An Eight-Week Plan


This plan assumes you are a desktop/web developer with good knowledge in Java or .NET. This section illustrates two scenarios: 1) how a Java developer can become an Android application developer in eight weeks and 2) how a .Net developer can become a mobile application developer for iOS devices in eight weeks.
Migration Path Week 1 Week2 Week3 Week4 Week5 Week6 Week7 Week8

Java to Android

Learn the platform fundamentals. (Refer to the detailed Android syllabus in the next section.)

Learn: How to design for performance Android devices Device versions Factors such as memory, battery life, screen size, etc. of the devices

Starting with the POC (Proof Of Concept), build a dummy application

Completely review and test the dummy application

A RapidValue Solutions Whitepaper April - 2013

11

RapidValue
Enabling Mobility

.Net to iOS

Learn the platform fundamentals. (Refer to the detailed iOS syllabus in the next section.)

Learn: How to design for performance iOS devices Device versions Factors such as memory, battery life, screen size, etc. of the iOS devices

Starting with the POC (Proof Of Concept), build a dummy application

Completely review and test the dummy application

Syllabus
The following syllabus will help enterprise desktop/web developers learn what they need to know to build applications for Android and iOS devices.
Android Devices Session What is Android? Setting up the development environment Dalvik virtual machine and .apk file extension Fundamentals Application Structure (in detail) Basic building blocks: activities, services, broadcast receivers and content providers UI components: views and notifications Components for communication: intents and intent filters

Introduction

Android API levels (versions and version names) AndroidManifest.xml Uses-permission and uses-SDK Activity/services/receiver declarations

Emulator Android Virtual Device

Resources and R.java Assets Android training course syllabus ipsr solutions ltdValues strings.xml Layouts and drawable resources Activities and activity lifecycle First sample application Deploying sample application on a real device Launching emulator Editing emulator settings Emulator shortcuts

A RapidValue Solutions Whitepaper April - 2013

12

RapidValue
Enabling Mobility

Logcat usage Introduction to DDMS File explorer Second app (switching between activities) Develop an app for demonstrating the communication between intents

Basic UI design

Form widgets Text Fields Layouts RelativeLayout ,TableLayout, FrameLayout, LinearLayout Nested layouts [dip,dp,sip,sp] versus px

Menu and Preferences

Shared preferences Preferences from xml Option menu Context menu Sub menu Android training course syllabus ipsr solutions ltd menu from xml menu via code Time and date Images and media Composite AlertDialogs and Toast Popup Tabs and TabActivity styles.xml colors.xml: declaring colors and drawables Drawable resources for shapes, gradients (selectors) Shapes drawables State drawables Transition drawables 9 Patch drawables Style attribute in layout file Applying themes via code and manifest file Examples SQLiteOpenHelper SQLiteDatabse Cursor Content providers Defining and using content providers Example: sharing database among two different applications using content providers Reading and updating contacts Reading bookmarks

UI Design

SQL Lite Programming

A RapidValue Solutions Whitepaper April - 2013

13

RapidValue
Enabling Mobility

Adapters and Widgets

Adapters ArrayAdapters BaseAdapters

Advanced Topics

Example: Efficient Adapter ListView and ListActivity Custom listview GridView using adapters Gallery using adapters Broadcast receivers Services and notifications Toast Alarms Custom Toast Custom dialogs Custom Tabs Custom animated popup panels Other components Threads running on UI thread (runOnUiThread) Worker thread Handlers and Runnable AsynTask (in-detail)

iOS Devices

Session Traditional vs. iPhone development Capabilities Constraints Phone software architecture Setting up iPhone app development Pointers Arrays String operations malloc, calloc Data structures Examples and Lab Creating projects in Xcode Organization of your project Interface Builder Learning the basics of Nib file Working with Objective-C, Cocoa, Interface Builder and Xcode The MVC pattern Learning the model, the controller and the view Cocoa Touch

Introduction

UI Design

A RapidValue Solutions Whitepaper April - 2013

14

RapidValue
Enabling Mobility

Device Capabilities

Basic UI Controls Basics of user interaction Delegation Taking keyboard inputs Handling events Selecting table items Editing table items Searching a table Navigation Various UI controls Using labels, buttons, sliders Working with alerts Working with multiple views Issues with long running tasks Multiple threads Issues with threading and UI NSOperation NSQueue Creating a responsive application Tabs Pickers Table views Tapping Tracing touches Multi-touch gestures Playing video Audio recording and playing Camera Accelerometer GeoLocation Application sandbox Data storage and archiving Navigating the file system Reading and writing files Working with database Core data Connecting to the internet Working with Web Services Understanding settings Working with Settings Bundle Securing settings

A RapidValue Solutions Whitepaper April - 2013

15

RapidValue
Enabling Mobility

Training Resources
The following table lists some useful resources for desktop/web developers to get started with building applications on platforms such as Mobile Web, iOS, Android, BlackBerry and Windows Phone.
Resource How to Build Mobile Applications for iOS and Android by Dan Armendariz and David J. Malan, Instructors at Harvard Extension School Description This course teaches developers how to build mobile apps for Android and iOS, and how to deploy them in Android Market and the App Store. Developers learn how to write native apps for Android using Eclipse and the Android SDK, how to write native apps for iPhones, iPod touches and iPads using Xcode and the iOS SDK, and how to write web apps for both platforms. This audio podcast explains the tools and APIs (updated for iOS 5) required to build applications for the iPhone and iPad platform using the iOS SDK. Topics covered include user interface designs for mobile devices, unique user interactions using multi-touch technologies and object-oriented design using the model-view-controller paradigm, memory management and the Objective C programming language. Other topics include the object-oriented database API, animation, multi-threading and performance considerations These videos from the Google I/O conference cover 90+ sessions featuring in-depth content about a number of technologies and developer products. URL http://cs76.tv/2011/spring/

iPhone and iPad Development by Paul Hegarty from Stanford University

https://itunes.apple.com/us/itunes-u /ipad-iphone-application-development /id473757255?ls=1

Mobile Application Development on Android Platform by Google

http://www.google.com/events/io /2010/sessions.html

Object-Oriented Analysis and Design Learning Material by Ken Anderson, Associate Professor and Associate Chair of the Department of Computer Science, University of Colorado, Boulder

This course presents an introduction to the design and construction of software systems using techniques that view a system as a set of objects that work together to realize the system's functionality. Includes examples of object-oriented systems written in Java, Python, Ruby and Objective-C. It also explains the Android and iOS frameworks as examples of large-scale, modern frameworks used by developers worldwide.

http://www.cs.colorado.edu/~kena /classes/5448/s11/lectures/

A RapidValue Solutions Whitepaper April - 2013

16

RapidValue
Enabling Mobility

Windows Mobile Applications Fundamentals by Microsoft

A quick guide to building Windows mobile applications. Developers can reuse their existing Visual Studio and .NET development skills and server infrastructure to extend their applications to mobile devices. A guide to creating application for BlackBerry tablets. The tutorial guides developers to: Create a basic web application that uses JavaScript, HTML5 and CSS Create a button that triggers an event Retrieve the GPS coordinates for the user's location Run and test the application on the Ripple emulator Set up and create a BlackBerry WebWorks configuration document (config.xml) Package the application using the Ripple emulator Launch the application on the BlackBerry Tablet Simulator

http://msdn.microsoft.com/en-us /windowsmobile/bb264318.aspx

Tutorial: Creating your First Application by BlackBerry Developer Forum(HTML5 Web Works)

https://developer.blackberry.com /html5/documentation/tutorial_ create_first_app_intro_1969476_ 11.html

A Guide for Android Developers by Android Developer Forum

Lessons on how to use basic platform features that leverage alternative resources and other features so that an app can provide an optimized user experience on a variety of Android compatible devices, using a single application package (APK)

http://developer.android.com /training/basics/supporting-devices /index.html

Developers Guide to Design, Code, Build, Innovate by Apple

iOS Development Centertechnical resources for developing innovative apps for iOS PhoneGap is a free and open source framework that allows developers to create mobile apps using standardized web APIs for various platforms. This guide helps developers easily create apps using web technologies (HTML, CSS and JavaScript).

https://developer.apple.com/

User Guide to Build Cross-platform Apps Using Web Technologies by PhoneGap

http://phonegap.com/

Quick Start Guide for Building Cross- platform Mobile Apps Using the Titanium Platform by Appcelerator

A developers guide which includes documents on Titanium SDK and Titanium Studio:

http://docs.appcelerator.com /titanium/latest/

A RapidValue Solutions Whitepaper April - 2013

17

RapidValue
Enabling Mobility

The Titanium SDK lets you develop native, hybrid and mobile web applications from a single codebase Titanium Studio is an extensible, Eclipse-based IDE for building Titanium applications and web applications

http://msdn.microsoft.com/en-us /windowsmobile/bb264318.aspx

Worklight Mobile Application Platform by IBM

A cross-platform application development tool which provides an open, comprehensive and advanced mobile application platform for smart phones and tablets, helping organizations of all sizes efficiently develop, connect, run and manage HTML5, hybrid and native applications. The platform consists of a comprehensive development environment, mobile-optimized middleware and an integrated management and analytics console, supported by a variety of security mechanisms. A quick start guide for this touch-optimized UI framework built with jQuery and HTML5. jQuery Mobile can be used to build sites and apps that are accessible on all popular smartphone, tablet and desktop devices.

http://www-01.ibm.com /software/in/worklight/

Build Mobile Web Applications using jQuery Mobile

http://jquerymobile.com /demos/1.2.0/http://www.motorola .com /Business/US-EN/Business+ Product+and+Services/ Software+and+Applications/ RhoMobile+Suite http://docs.sencha.com/touch/2-0/

Develop Mobile Web Applications using Sencha 2.0

A user guide to build mobile web apps using Sencha 2.0. It also includes API documents for developers. Tutorials for developers to build crossplatform applications using the Xamarin development platform.

Develop Cross- platform Apps Using C# and .Net Technology

http://xamarin.com/monotouch

A RapidValue Solutions Whitepaper April - 2013

18

RapidValue
Enabling Mobility

Conclusion
With the wide popularity of smart phones and mobile applications, enterprise developers in many companies are looking to contribute to the mobile revolution. This revolution is influencing many companies to shift towards a Mobile First, Desktop Second strategy for their business. However, the shift from desktop to mobile requires developers to refocus-not completely away from desktop application development, but certainly with an inclination towards mobile. Enterprise desktop/web developers within an organization who are interested in becoming mobile developers need to understand that developing for mobile is not just a technology change; it requires acquiring a different mindset and new design skills. There are certain hurdles for enterprise developers to overcome and several important factors to consider when building applications on mobile platforms. Some of these factors are fragmentation, screen size, resolution, user experience, memory space, battery life and capabilities inherent to smart phones and other mobile devices. RapidValue has a team of domain experts and mobility consultants to help you build innovative and comprehensive mobile applications for your enterprise. If youd like more information on this topic or need guidance on building your first mobile application, please contact us at marketing@rapidvaluesolutions.com

A RapidValue Solutions Whitepaper April - 2013

19

RapidValue
Enabling Mobility

About RapidValue
RapidValue is a leading provider of mobility solutions to enterprises worldwide. Armed with a team of 175+ experts in mobility consulting and application development, along with experience delivering over 200 mobility projects, we offer a range of mobility services across industry verticals. RapidValue delivers its services to the worlds top brands and Fortune 1000 companies, and has offices in the United States and India.

www.rapidvaluesolutions.com

www.rapidvaluesolutions.com/blog

+1 877.690.4844

contactus@rapidvaluesolutions.com

Mobility Information Series Jan 2013 A RapidValue Solutions Whitepaper April - 2013

RapidValue RapidValue
Enabling Mobility Enabling Mobility

You might also like