Cross-Platform Mobile Apps Solution

Similar documents
Lecture 4 Cross-Platform Development. <lecturer, date>

Development of mobile applications for multiple platforms

Making Mobile a Reality

Mobile Development Frameworks Overview. Understand the pros and cons of using different mobile development frameworks for mobile projects.

WEB, HYBRID, NATIVE EXPLAINED CRAIG ISAKSON. June 2013 MOBILE ENGINEERING LEAD / SOFTWARE ENGINEER

Software Development Interactief Centrum voor gerichte Training en Studie Edisonweg 14c, 1821 BN Alkmaar T:

How to Choose Right Mobile Development Platform BROWSER, HYBRID, OR NATIVE

Evaluating Cross-Platform Development Approaches (WORA Tools ) for Mobile Applications

01. Introduction of Android

A Way Out of the Mobile App Development Conundrum

Choosing a Mobile Application Development Approach

Etanova Enterprise Solutions

Developing and deploying mobile apps

Introduction to Appeon Mobile

Analysis of Native and Cross-Platform Methods for Mobile Application Development. [ Whitepaper] Praveen Kumar S

MENDIX FOR MOBILE APP DEVELOPMENT WHITE PAPER

Issues of Hybrid Mobile Application Development with PhoneGap: a Case Study of Insurance Mobile Application

Cross Platform Applications with IBM Worklight

Take full advantage of IBM s IDEs for end- to- end mobile development

Developing Applications for ios

CrossPlatform ASP.NET with Mono. Daniel López Ridruejo

POINT-TO-POINT vs. MEAP THE RIGHT APPROACH FOR AN INTEGRATED MOBILITY SOLUTION

Building Mobile Applications Creating ios applications with jquery Mobile, PhoneGap, and Drupal 7

Lecture 3 Mobile App Development (Android, ios, BlackBerry, Windows Mobile) <lecturer, date>

separate the content technology display or delivery technology

Mobile App Development

Navigating the Mobile App Development Landscape

Cross-Platform Development

The Anatomy of a Native App

Mobile Phones Operating Systems

SYST35300 Hybrid Mobile Application Development

Enterprise Mobile Application Development: Native or Hybrid?

QML and JavaScript for Native App Development

Mobile web apps: The best option for business? A whitepaper from mrc

Choosing a Mobile Strategy for Your Business

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013

Accelerating Business Value by

HYBRID APPLICATION DEVELOPMENT IN PHONEGAP USING UI TOOLKITS

Statement of Direction

To Study and Design a Cross-Platform Mobile Application for Student Information System using PhoneGap Framework

COMPUTER SCIENCE (AS) Associate Degree, Certificate of Achievement & Department Certificate Programs

How Simple Is It To Develop a Mobile App? Uma Sudhan OpenEdge Developer 7 th Oct 2013

Introduction to IBM Worklight Mobile Platform

Whitepaper. Trans. for Mobile

Mobile Application Design

Cross-Platform Phone Apps & Sites with jquery Mobile

Mobile Application Development of the Erhvervsstyrelsen Frekvensregistret Service Challenges and Implementation

Take Your Rocket U2 Apps Mobile with Rocket LegaSuite. Greg Mummah, Product Manager Rocket Software

KonyOne Server Prerequisites _ MS SQL Server

Multi-Platform Mobile Application Development Analysis. Lisandro Delía Nicolás Galdámez Pablo Thomas Leonardo Corbalán Patricia Pesado

The Suitability of Native Application for University E-Learning Compared to Web-Based Application

Building cross-platform Modern Apps: the Design perspective. Amit Bahree, Senior Director,

Building native mobile apps for Digital Factory

An Analysis of Mobile Application Development Approaches

A Beginners Guide To Responsive, Mobile & Native Websites 2013 Enhance.ie.All Rights Reserved.

This document is provided to you by ABC E BUSINESS, Microsoft Dynamics Preferred partner. System Requirements NAV 2016

Here s how to choose the right mobile app for you.

/// CHOOSING THE BEST MOBILE TECHNOLOGY. Overview

Executive Summary. Three Key Takeaways

Mobile App Infrastructure for Cross-Platform Deployment (N11-38)

Android on Intel Course Introduction. Paul Guermonprez Intel Software

Best practices building multi-platform apps. John Hasthorpe & Josh Venman

All About Android WHAT IS ANDROID?

COMPUTER SCIENCE (AS) Associate Degree, Certificate of Achievement & Department Certificate Programs

Bridging the Gap: from a Web App to a Mobile Device App

Automated testing for Mobility New age applications require New age Mobility solutions

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT

Smartphone Application Development using HTML5-based Cross- Platform Framework

Mobile and Social Computing

ios SDK possibilities & limitations

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

Making Sense of Mobile Development Options. Luis Sala Director, Technology

Cross Platform Applications with IBM Worklight

ICAPRG601A Develop advanced mobile multi-touch applications

System Requirements for Microsoft Dynamics NAV 2016

,... Innovative Software in its Simplicity! Windows Linux Mac OS X ios

A Review of Different Comparative Studies on Mobile Operating System

Article. One for All Apps in HTML5

Take Your Team Mobile with Xamarin

Native, Hybrid or Mobile Web Application Development

100% NO CODING NO DEVELOPING IMMEDIATE BUSINESS -25% -70% UNLIMITED SCALABILITY DEVELOPMENT TIME SOFTWARE STABILITY

Database FAQs - SQL Server

Native mobile apps: The wrong choice for business?

T14 RUMatricula Phase II. Section 1 Metaphor and requirements

Native versus HTML5 where s mobile programming heading to?

System Requirements for Microsoft Dynamics NAV 2016

Retool your HTML/JavaScript to go Mobile

Integrating Mobile into Your Cross- Platform Strategy with Qt

How To Use Titanium Studio

Native, web or hybrid mobile-app development

Skillsoft Course Directory

ipad, a revolutionary device - Apple

Cross-Platform Tools

CATALOG OF CLASSES IT and Technical Courses

WHITEPAPER. Pros & cons of native vs cross-platform mobile development with Xamarin

MOBILIZING ORACLE APPLICATIONS ERP. An Approach for Building Scalable Mobility Solutions. A RapidValue Solutions Whitepaper

Sybase Unwired Platform 2.0

Chapter 1. Introduction to ios Development. Objectives: Touch on the history of ios and the devices that support this operating system.

ORACLE MOBILE APPLICATION FRAMEWORK DATA SHEET

Quality assurance for mobile applications Case studies for GUI test automation. Alexandra Schladebeck

Transcription:

Cross-Platform Mobile Apps Solution Prepared by Kevin Mullins CEO and Chief Developer Appracatappra, LLC. 709 Gale Street #8 Seabrook, TX 77586 kmullins@appracatappra.com http://appracatappra.com

Table of Contents Cross-Platform Mobile Apps Solution 3 About this Document 3 Rise of the Mobile Market 3 Tapping Into this Market 3 The Cross-Platform Problem 4 Typical Mobile Application Approaches 4 Platform Specific App 5 Pros 6 Cons 6 Best Suited For 6 Web App 7 Pros 8 Cons 8 Best Suited For 8 Encapsulated Web App 9 Pros 10 Cons 10 Cross-Platform Mobile Apps Solution 1

Best Suited For 10 The Fourth Mobile Application Approach 11 Shared Code Base App 11 Familiar.NET Technologies 11 Added Benefits 12 Extended Reach and Reusability 13 Pros 14 Cons 14 Best Suited For 14 Conclusion 15 Appendix A: Development Technologies 16 About Xamarin 16 About Mono 16 About MonoTouch and Mono for Android 17 What is MonoTouch 17 Features 17 What is Mono for Android 18 Features 18 What is MonoDevelop 19 Features 19 Appendix B: Sources 20 Source Material 20 Cross-Platform Mobile Apps Solution 2

Cross-Platform Mobile Apps Solution About this Document This document will identify the challenges that arise in developing cross-platform mobile applications and present a solution to these challenges using Xamarin s MonoTouch and Mono for Android.NET based cross-platform frameworks. Rise of the Mobile Market According to mobithinking there are 5.3 billion mobile subscribers world-wide and mobile device sales continued to rise throughout 2010 with Smart Phones showing the strongest growth. Mobile growth is being driven by the developing world with the strongest regions of growth being in China and India. While Nokia currently maintains the number one spot in both smart and standard mobile phones, devices based on the Google Android Operating System (OS) are expected to become to leading device in 2011. Both Gartner and IDC expect to see Symbian usage drop following Nokia s decision to switch to Microsoft s Windows Mobile platform, which is expected to see strong growth when Windows 8 and Windows Mobile Mango is released this year. As of October, 2011, based on worldwide market share, the top Smart Phone OSes are: Android - 38.5%, ios - 19.4%, Symbian - 19.2%, BlackBerry - 13.4%, and Window Mobile 5.6%. In 2010, more than 300,000 mobile apps have been downloaded 10.9 billion times. IDC predicts that global downloads will reach 76.9 billion in 2014 and will be worth US$35 billion. Canalys predicts that direct revenue from the sale of apps, in-app purchases and subscriptions across smartphones and tablets will be $7.3 billion in 2011 rising to $36.7 billion by 2015. Tapping Into this Market As mobithinking noted, What other medium offers such reach? Given the easy access to information stored on the Internet or locally in a mobile application, coupled with the fact that these always-on devices are ever on-hand, a company now has the ability to reach a potential customer no matter where they might be physically located. What other medium indeed! As you can see, this presents a vast, growing, and largely untapped medium to reach out to customers in ways that have never been seen before. The problem arises how does a company or mobile application developer tap into this fast growing and vast network of potential users across multiple hardware and software platforms, while cost effectively managing the design, development, implementation and support of an ever growing number of mobile applications? Cross-Platform Mobile Apps Solution 3

The Cross-Platform Problem Given that the development and long term maintenance of cross-platform mobile applications can be a complex and costly affair, how does a company both cost and time effectively support the largest number of those platforms? Amplifying this problem is the fact that the end user (customer) expects a solution that not only is easy to use and performs quickly on their specific device, but one that maintains the unique user experience (look and feel) of that device whether it be an Android based mobile phone or an Apple ios based tablet. Ideally the company will want to employ a write once, runs everywhere approach and while there are many different cross-platform development solutions available, no clear cut solution currently exists that provides the desired design, development and maintenance savings with true, native look and feel of a mobile application written specifically for a given device. The one caveat to the above statement would be a game or kiosk based application that could have a totally custom user interface, that is not supporting the standard device UI look and feel, since this is typical of these types of apps, it would not be outside of the end user s expectations. Typical Mobile Application Approaches Currently there are three main approaches to designing, developing and implementing cross-platform mobile applications: Platform Specific App - Custom written for the specific platform Web App - Custom web based application using internet standards Encapsulated Web App - A combination of the first two approaches where a web app is embedded in a platform specific app Each of the above listed approaches have an inherent set of strengths and weaknesses which we will discuss in greater detail below. Generally, I am of the strong belief of let the tool fit the task when evaluating a given approach I always try to keep the following in mind: Depending on the type of mobile app being created and its intended purpose, an approach s strengths and weaknesses really come into play. What makes a specific approach ill suited for one type of application, may actually be of benefit to another, and vise versa. Cross-Platform Mobile Apps Solution 4

Platform Specific App Currently the most common approach to developing a cross-platform mobile solution would be the creation of individual native application (using the platform specific development environment, tools and languages), for each device being target. For example: Xcode and Objective-C for Apples ios devices such as the iphone, ipod Touch or ipad. While this provides the cleanest solution to presenting the native UI look and feel while being able to take advantage of all of the abilities of the given mobile device, it also has the downside of maintaining multiple, totally separate, development projects, written in different languages, each with their own set of assets (icons, images, media, etc.) that must constantly be kept in sync. While this solution might be practical when targeting one or two platforms, it can quickly become a maintenance nightmare as the number of platforms increase. Adding to the complexity can be the downtime that it takes your developers to potentially learn a new language (like Objective-C) and/or a new development environment (like Xcode or Eclipse). Cross-Platform Mobile Apps Solution 5

Pros Provides full access to the specific devices abilities such as GPS, Camera, etc. Uses the specific devices UI look and feel Typically faster because it is a compiled binary as opposed to interpreted script. Has access to the latest OS features as new versions are released Can be accessed offline (depending on the specific apps function) when not attached to the internet. Cons Must maintain multiple, separate development projects each with their own separate assets No code reuse across platforms Hard to maintain separate code bases and keep each project in sync Can take time to learn each platform s specific language and development environment Best Suited For This approach is best suited for mobile applications that must be able to be used when not connected to the internet, where speed of operation is required and/or where devices specific functionality such as GPS and Camera access or specific UI look and feel is important. Cross-Platform Mobile Apps Solution 6

Web App The creation of a mobile web application using a combination standard HTML 5, CSS 3, and Javascript with the possible inclusion of a mobile specific framework such as jtouch that lives in a server on the internet accessed through the mobile device s web browser. This approach provides a single source, run anywhere solution that can be created with the standard tools and languages that a developer would be familiar with such as DreamWeaver and Javascript however it does sacrifice access to several of the devices unique features (like specific hardware or functionality) and potentially might not provide the device specific UI look and feel that the end user would be expecting. A further downside would be that the mobile device would have to have a connection to the internet to access the application and the speed of the app could be negatively effected by the speed of the user s internet connection. Cross-Platform Mobile Apps Solution 7

Pros One single code base that can be presented on each targeted device Can be designed using languages and tools the developer would already be familiar with Allows for code reuse and sharing across devices. One single project to maintain and keep in sync Cons Must be connected to the internet to use the application, cannot be used offline Cannot access devices specific hardware and/or features Doesn t use the specific devices UI look and feel Typically slower than a compiled binary because the scripting language has to be interpreted on-the-fly Best Suited For This approach is best suited for mobile applications that requires internet access to function, where device specific hardware and functionality isn t needed, where native UI look and feel is not an issue (such as a game), and/or the content and structure changes rapidly. Cross-Platform Mobile Apps Solution 8

Encapsulated Web App This approach is a fusion of the two previous approaches by developing a device specific shim mobile application that uses an embedded WebView control to display a mobile web app written in HTML 5, CSS 3 and Javascript. This approach has the advantage of writing the shim application once for each platform which would then be used over and over again for each hybrid mobile app submitted. In this way, it would somewhat limit the maintenance issue of the fully native app. It would also have all of the same benefits and deficits of the pure web app approach however, depending on the apps purpose, could eliminate the requirement that an active internet connection be available. Cross-Platform Mobile Apps Solution 9

Pros One single code base that can be presented on each targeted device Can be designed using languages and tools the developer would already be familiar with (for the web based parts) Allows for code reuse and sharing across devices (for the web based parts) Can be accessed offline (depending on the specific apps function) when not attached to the internet. Cons Cannot access devices specific hardware and/or features Doesn t use the specific devices UI look and feel Typically slower than a compiled binary because the scripting language has to be interpreted on-the-fly Must maintain multiple, separate development projects each with their own separate assets (for the shim) No code reuse across platforms (for the shim) Hard to maintain separate code bases and keep each project in sync (for the shim) Can take time to learn each platform s specific language and development environment (for the shim) Best Suited For This approach is best suited for mobile applications might need limited, occasional connection to the internet to function, where device specific hardware and functionality isn t needed, where native UI look and feel is not an issue (such as a game), and/or the content and structure changes rapidly and can be downloaded from a web server while an active internet connection is available. Cross-Platform Mobile Apps Solution 10

The Fourth Mobile Application Approach Given the above three most typically used approaches to cross-platform mobile application development, and their inherent strengths, weaknesses, and best suited usages, I would like to add a fourth new approach, Shared Code Base App. Shared Code Base App This approach involves using the open source Mono project and MonoDevelop tools, along with Xamarin s MonoTouch and Mono for Android add-on frameworks to take all of the common functionality (such as business logic) of an application and compile it into a Microsoft C#.NET assembly. The resulting assembly is then used in native applications written for each specific platform (again in C#) that implements the User Interface (UI) using the platform specific UI look and feel with the added benefit on running at near-native or better speeds because it is a compiled native app. While you still have the negative of maintain several different development project files, each with their own set on media that will need to be kept in sync. They are all now written in the same language (C#), with far less duplicate code while still presenting the device specific, native UI look and feel, running at near-native speeds. In many ways this combines many of the benefits of the three typical approaches, with few of the deficits while being lean and limber enough to be a general purpose approach well suited for nearly all mobile application needs. As a caveat, this does currently leave the RIM BlackBerry devices out in the cold. However this might be a moot point in the near future, as it looks like RIM is adding support of BlackBerry devices to run mobile apps based on the Android OS. Familiar.NET Technologies For large corporations already heavily invested in Microsoft.NET technologies such as C# and Visual Studio, there is no downtime for the developer to learn a new language such as Objective-C or Java. Equally important, the MonoDevelop IDE closely mirrors the layout and functionality of Microsoft s own Visual Studio so an experienced.net developer should have no trouble quickly becoming acquainted to it. Cross-Platform Mobile Apps Solution 11

Added Benefits As an added benefit, you also gain access to many of the standard.net Framework Technologies such as: Managed Code, Windows Communication Framework (WCF), Workflow Foundation (WF), LINQ, XML, SQL, nearly all of the Base Class Library (BCL) including things like Garbage Collection, Threading, Math Functions, System.Net, Cryptography, etc. It should be noted that, on average, a developer has to write far less code than languages such as Objective-C. Also the addition of true, automated Garbage Collection cannot be stressed enough, as it aids greatly in the developer s ability to create crash resistant applications. Cross-Platform Mobile Apps Solution 12

Extended Reach and Reusability Not only does this approach give access to the current top two mobile Smart Phone OSes in the world, Android and Apple s ios, it also adds the ability to share code with devices based on the up and coming Windows Mobile Mango platform since the Shared Code Base assembly is 100% compatible with Microsoft s.net platforms. And it opens the possibility to share the assembly with Windows based desktop application, Apple Macintosh Computers (by using MonoMac), ASP.NET based web applications and web services and Microsoft specific devices such as the XBOX game console. Cross-Platform Mobile Apps Solution 13

Pros Places the largest part of the application functionality in a single development project that can be shared across platforms Can be designed using languages and tools the developer would already be familiar with Allows for code reuse and sharing across devices Provides full access to the specific devices abilities such as GPS, Camera, etc. Uses the specific devices UI look and feel Typically faster because it is a compiled binary as opposed to interpreted script. Can be accessed offline (depending on the specific apps function) when not attached to the internet. Cons.NET compatibility frameworks could introduce bugs not seen in the default platform specific APIs.NET compatibility frameworks might lag behind the latest updates a specific platform s OS version Must maintain multiple, separate development projects each with their own separate assets No code reuse across platforms (for the User Interface sections) Hard to maintain separate code bases and keep each project in sync Can take time to learn each platform s specific language and development environment (for the User Interface sections) Best Suited For This approach is best suited for mobile applications that might require access to specific hardware or functionality, require native device specific UI look and feel, require near-native speed and have large sections of functionality (code) that isn t dependent on specific UI features that can be shared across several platforms. Cross-Platform Mobile Apps Solution 14

Conclusion Given the Shared Code Base App s ability to reuse code (business logic) across many platforms (not just limited to mobile devices), the ability to use a common language to code across those platforms (C#), the Enterprise developer s familiarity with Microsoft s.net tools and technologies combined with the abilities to access the platforms native UI look and feel running at near-native speeds, I feel this approach provides a general purpose, best-of-class solution for most any mobile application need. Again my caveats would be any mobile application that would be required to run on mobile hardware not currently supported by this technique (such as the RIM BlackBerry) or very specific mobile applications like a magazine app that would be better suited to be delivered via a 3rd party tool such as Adobe s Digital Publishing Suite. Cross-Platform Mobile Apps Solution 15

Appendix A: Development Technologies About Xamarin Xamarin was founded in May of 2011 in Boston, Massachusetts. Our mission is to produce the best software development tools in the world, and to make it fast, easy and fun to build great mobile apps. Xamarin is composed of more than 20 members of the team that built Mono, with ten years of experience working together to create a great developer platform. About Mono Mono is a free and open source project lead by Xamarin (formerly Novell) to create an ECMA standard compliant.net compatible set of tools including the Microsoft C# language and Common Language Runtime. Mono has been designed as a way to bring Microsoft.NET applications cross-platform and allow them to run on the following platforms: Android, BSD, ios, Linux, Mac OS, Windows, Solaris, and Unix operating systems. Mono allows the developer to write cross-platform applications using many of the standard.net Framework Technologies such as: Windows Communication Framework (WCF), Workflow Foundation (WF), LINQ, XML and SQL. It also includes nearly all of the Base Class Library (BCL) including things like Garbage Collection, Threading, Math Functions, System.Net, Cryptography, etc. Cross-Platform Mobile Apps Solution 16

About MonoTouch and Mono for Android MonoTouch and Mono for Android are implementations of Mono for ios and Android based devices. Contrary to Mono itself, they are released under a commercial license only. Please see the Xamarin website for the latest yearly subscription fees. What is MonoTouch According to the Xamarin website, MonoTouch: MonoTouch allows developers to create C# and.net based applications that run on Apple's iphone, ipad, and ipod Touch devices, while taking advantage of the iphone APIs and reusing both code and libraries that have been built for.net, as well as existing skills. By compiling C# and.net applications down to machine code targeted specifically at the mobile hardware, MonoTouch allows the these apps to be run on ios devices. Features The following are the major benefits of using MonoTouch to develop ios mobile apps: Modern type-safe, garbage collected framework via C# and.net Builds device native applications using native APIs Integrated Developer Environment via MonoDevelop Can be deployed to the itunes App Store and delivered to external customers or via the Enterprise For many developers, learning Objective-C was seen as a huge barrier-to-entry. This is especially true for many.net developers whom have never had to worry about memory management, pointers, and other C language responsibilities that they are unfamiliar with. Cross-Platform Mobile Apps Solution 17

What is Mono for Android Xamarin defines Mono for Android as: Mono for Android enables developers to use Microsoft Visual Studio to create C# and.net based applications that run on Android phones and tablets. Developers can use their existing skills and reuse code and libraries that have been built with.net, while taking advantage of native Android APIs. Features The following are the major benefits of using Mono for Android: Modern type-safe, garbage collected framework via C# and.net Builds device native applications using native APIs Integrated Developer Environment via MonoDevelop Can be deployed to the Android App Store and delivered to external customers or via the Enterprise Mono for Android was developed to allow developers to more easily write cross-platform applications that will run on all mobile platforms by allowing developers to reuse their engine and business logic code across all mobile platforms and swapping out the user interface code for a platform-specific APIs. Cross-Platform Mobile Apps Solution 18

What is MonoDevelop MonoDevelop is an IDE primarily designed for C# and other.net languages. MonoDevelop enables developers to quickly write desktop and ASP.NET Web applications on Linux, Windows and Mac OSX. MonoDevelop makes it easy for developers to port.net applications created with Visual Studio to Linux and to maintain a single code base for all platforms. Features Multi-platform Supports Linux, Windows and Mac OSX. Advanced Text Editing Code completion support for C# 3, code templates, code folding. Configurable workbench Fully customizable window layouts, user defined key bindings, external tools Multiple language support C#, Visual Basic.Net, C/C++, Vala Integrated Debugger For debugging Mono and native applications GTK# Visual Designer Easily build GTK# applications ASP.NET Create web projects with full code completion support and test on XSP, the Mono web server. Cross-Platform Mobile Apps Solution 19

Appendix B: Sources Source Material The following source material was used in the creation of this document: mobithinking http://mobithinking.com/mobile-marketing-tools/latest-mobile-stats Mono Project http://www.mono-project.com/main_page MonoDevelop http://monodevelop.com/ Xamarin http://xamarin.com/ Wikipedia http://en.wikipedia.org/wiki/monotouch InfoQ http://www.infoq.com/articles/monotouch-introduction Cross-Platform Mobile Apps Solution 20