introduction

Upload: ssss

Post on 14-Jan-2016

6 views

Category:

Documents


0 download

DESCRIPTION

Native vs. mobile

TRANSCRIPT

ContentsAbstract21.Introduction32. Approaches62.1 Diversity of mobile platforms and devices62.2. Native applications72.2.1. Native tools82.2.2 Application programming interface (API)92.3 Mobile web applications102.3.1 HTML5112.4. Hybrid applications123. Comparing native application and mobile web applications133.1. Development133.1.1 Device specific features143.1.2 Developers support143.1.3 Portability153.1.4 Maintenance153.2 Distribution163.2.1 Access to consumers163.2.2 Monetization173.2.3 Distribution constraints183.3. Usage criteria183.3.1 Performance193.3.2 User experience194.Conclusion20Bibliography22

Abstract

Mobile application development has become very important area in software industry in last five years. Many organizations that are taking first steps in implementing mobile strategy are facing important decision. The extensive growth and expansion of smartphones and tablets have led to use of mobile applications. Choosing the development approach is very essential for every organization. This seminar paper examines a topic at the heart of any mobile strategy: whether to deploy a native application or web application. this seminar will show key characteristics of each approach, their advantages and disadvantages, and factors should be also taken in consideration. Also, it will be shown how each of these approaches are measured to certain criterias: development, distribution and usage. The purpose of this seminar paper is not to identify the best development approach, as that one does not exist, but to rather to list pros and cons of each approach and to describe situations or enterprise requirements, that best suits native application or mobile web application.

1.Introduction

Ever since smartphones went worldwide, applications and their stores became extremely popular. Smartphones become must-have product and moved focus from personal computers.In terms of revenue, however, iOS took the lead recording revenue of over $100 million over $40 million more than Android (App Annie, 1). This information is only telling us how important are application are becoming. Revenue of these stores of Androids Google Play and iOSs App Store is expected to plummet in the following years. So exactly, how is this influencing the world? Apps generated $53 billion revenue in 2012, and are predicted to generate $68 billion revenue in 2013 (Vision mobile,1). These numbers are telling us that development of application is taking huge part in economy. In the world that is increasingly open and social, mobile application are becoming vital part.

Figure 1. Revenue of Application StoresWell, everyone who is considering making an application must take in consideration whether the application is going to be native application, web mobile application or hybrid application. But, to fully realize importance of application, we first must know what an application in computer science is. Application is very broad and very spread term in computer science. What is an application? Application is a program or piece of software designed to fulfill a particular purpose (Oxford Dictionary,1). Purpose of the application is very important, when considering development of an application. For business, the development of application is no longer optional, it is now become imperative. Every serious company in every sphere of human life has as an imperative to build an app, because focus shifted from the desktop computer application to mobile application. Expansion of the mobile Web, has sparked the debate for the best approach for developing application that give consumers and employees ability to access whatever, however and whenever they want. It is very important to be very convenient and accessible for regular customer and not just regular customer. The goal of developed application should be to attract more users that are not initially members of target group. Why is this important? People are spending more and more time on mobile phones surfing the Internet, downloading applications, playing games and streaming movies, music. Moreover, companies want to make sure that their product is going to reach desired audience. First thing that people tend to forget in development of a mobile application is user experience. Some developers treat mobile screen as just another screen, while reality is much more different. User interactions and behavior are vastly distinct and that may lead to low usage of an application. Furthermore, we need to define the most important terms that will appear throughout the paper such as native application, mobile web application and hybrid applications. According to Techopedia, a native mobile application is a smartphone application that is programmed in specific language such as Objective C for iOS and Java for Android (1). Usually, they have access to camera and other features of smartphones. Mobile web application stated by Techopedia.com is any program that is accessed over a network connection using HTTP, rather than existing within a devices memory. Very important is to mention that they run inside a Web browser (1). People tend to confuse with this term, but essentially this an application where all parts or some parts are downloaded from the Web to gain full functionality. Also, the next term is hybrid application. According to Techopedia.com, hybrid app is type of application that has cross-platform compatibility, but accesses phones hardware. It is developed with programs like Sencha, PhoneGap and Mosync (Techopedia,1). These applications are written with web-based technologies, but are running natively and are taking full advantages of smartphone features.In this seminar work I am going to discuss the best solution for development of an application in terms of development, distribution and usage.

2. Approaches

Figure 2. Difference between native app and mobile web app

2.1 Diversity of mobile platforms and devices Personal computers have some sort of standardized operating systems, which is not the case for mobile platforms. According to Gartner Operating systems such as Android and iOS are widespread, but in order to create an application for 90% of market, we need to develop applications for four different platforms including previous two, Symbian and Blackberry (1). However, there is not only problem with mobile platforms, there is also a problem with different software versions and physically different devices that are causing headaches for developers. An application should work for variety of Android devices that come with about 10 different API versions and also to be able to adapt on various different screen resolutions (Opensignal,1). Other platforms such as Apples iOS is much more homogenous and they tend to use same, if not similar version of the system. A remarkable amount of work is needed to develop an application that is going to cover most mobile devices. For each mobile platform, there is new programming language, developments tool, software development kit, and API (different application programming interface). Software tool that is shared among all these platforms is web browser. Every smartphone device is delivered with already installed web browser that can interpret Javascript code and view GUI (graphical user interface) component using HTML and CSS. However, they are not perfect. They have a lot of problems, but emergence of HTML5 and CSS3 is reducing differences between web applications and native applications.

2.2. Native applicationsNative applications are applications that have binary executable files that are usually downloaded from Google Play or App Store or any other store. These files are placed directly in phone. Native applications are executable program coded in the machine language of the hardware platform that is running in. Also, this type of application has been compiled into the machine language of that CPU (PC Magazine Encyclopedia,1). After installation is finished on the device, which is mostly initiated by the user, native applications communicates directly with mobile operating system. Operating system vendor makes available free to access all of the APIs for native application and can have some specific features depending on operating system. In creating native application it is very important for developers must write the source code(in human-readable form) and create additional resources, such as images, audio segments and various OS-specific declaration files. After this, comes the procedure of compiling source code and linking it to the executable in binary form. 2.2.1. Native toolsThese tools are designed for creating applications that run on specific platforms. For Android, it is used Java and Android software development kit. For Apple iOS, development is based on the Objective C programming language and XCode for user interface. Blackberry is used for C/C++ framework and plug-in eclipse, but previously was based in Java. It is similar for other platforms.

Apple iOSAndroidBlackberry OSWindows Phone

LanguagesObjective CJava ( some C,C++)JavaC#, VB.NET

ToolsXcodeAndroid SDKBB Java Eclipse Plug-inVisual Studio, WP dev. tools

Packaging format.app.apk.cod.xap

App stores App StoreGoogle PlayApp WorldMarketPlace

Figure 3. Native tools2.2.2 Application programming interface (API)After installation is finished on mobile device and launched, it interacts with mobile operating system through specific APIs calls the operating systems. API can be either low-level or high-level. Low-level APIs are the ones that are interacting directly with the touch screen or keyboard. Also, it connects to networks, processes audio from microphone, play sounds through audio devices or receives images and videos from camera. Global Positioning System (GPS) is also accessible by an application and can access any hardware element available. High-level APIs are processes that very important to the personal mobile experience. These processes are browsing the web, managing the calendar, contacts, photo album and, of course, the ability to make phone calls and to send or receive text messages. Most mobile OSs includes a set of built-in applications that are executing these services, a set of exposed high-level APIs is made accessible for native apps as well, allowing them to access many of the important services (IBM, 5). There are also some other features such as downloadable apps to access various cloud-based services such as push notifications or in-app purchases.API provides the GUI toolkit. Each mobile OS comes with its own standard for UI components such as buttons, sliders and so on. Developers for making enjoyable experience must maximize usage of those components. In development of applications that need to work on different platforms, designer needs to know about different components of each operating system. The fact is that APIs are OS-specific and they much more complexity, but creates rich mobile applications that are using full functionality of modern mobile devices.2.3 Mobile web applicationsThere is confusion in defining mobile web apps, because people tend to mix mobile web applications and mobile websites. The reason is that they are quite similar, but a mobile web is an application in which all or some parts of the software is downloaded from the Web each time it is run (IBM,4). The only difference, but a major one, is that mobile web applications are having focused application purpose, similar to native applications. There are also two types: browser-based and rich-client desktop apps. According to PC Magazine Encyclopedia, in browser-based Web applications JavaScript, HTML and CSS are executed via browser, where JavaScript instructions are contained within the Web page and they are combined with HTML code that gives visual layout and the CSS style sheet (1). Like the name says, these applications are run directly in a Web browser. The next type is the type that created confusion. Web applications may also run without browser. A client based web application is an application which can installed in mobile device or downloaded each session, interacts with a server on the using standard Web protocols, according to PC Magazine encyclopedia (1). Some companies are going further and they are creating shortcuts that is has no difference from native applications. However, these two types are some sort of extremes, because a lot of websites are implementing their own mixture of features. And they are very promising trends that lead to growing number of JavaScript toolkits such as dojox.mobile, Sencha Touch and JQuery Mobile, according to IBM. These types of application are very useful, because of their multiplatform support. Most mobile vendors are using WebKit, rendering engine in browsers, an open-source project led mostly by Google and Apple, according to IBM (1). So we can conclude that application code is written in standard web languages that work in WebKit leading to uniform experience for various devices and operating systems. Unlike native applications, they do not have independent executable that directly interfaces with the operating systems. They run through browser which has limited number of APIs exposed. Also, results will vary with different screen sizes, device functionality and operating environments. It can be difficult to provide balance

2.3.1 HTML5HTML5 is the latest version of the HTML language and it could be a game-changer in the world of mobile applications. It allows a experience very similar that is provided by native applications. Also, it has its own local storage feature that allows offline running. HTML5 is supported on big three platforms: iOS, Android and RIM, according to Lionbridge (5). Developers are realizing the potential of this new technology which will lead to increasing number of tools, frameworks and methodologies. It is still under development and functionality remains somewhat limited and inconsistent. Different browsers are interpreting HTML differently and evolving at different timeframes. One of the problems with HTML5 is that it not standardized. Due to lack of consistency and standards means you need to develop different HTML5 apps for different devices. HTML5 supporters are very enthusiastic and they claim it will become universal standard for mobile platforms, as well as its critics who will claim that will never match capabilities of native applications. HTML5 is something that should be watched closely over the years as improvements arising. It has capabilities to greatly use some functionalities such as audio, camera, GPS etc. The gap between native and web applications is closing quickly. In near future, it is possible there would not be any difference.

2.4. Hybrid applicationsHybrid applications combine approaches of native and mobile web applications. How does it work? Developers tend to write significant portions of their application in web-based technologies, while maintain direct access to native APIs. According to IBM, native part of an application uses the operating system APIs to create an embedded rendered engine that connect the browser and device APIs(1). Developers have options to develop much or the entire user interface in browser window while native wrapped around it to provide access to device functionality. It is very similar to native, because it is downloaded from application store, stored on mobile device and launched like native. Instead of rewriting the whole code, developers tend to make at least some code in HTML, CSS and JavaScript and reuse it across different devices. Also, it is also possible to develop a mostly native app with only a few screens powered by web views.3. Comparing native application with mobile web applicationsIn order to evaluate properly native application and mobile web application, we must decide on proper criteria measurement. We will divide examination into: development, distribution and usage.3.1. Development In development there are three main factors that diversify largely these two types: device specific features. developers support and portability.3.1.1 Device specific features Native applications are taking full advantage of platform functionality, but web applications are serving everyone with limited functionality. Web applications are having some restrictions, due to their bond with the Internet browser. According to Mahemoff, they are missing several specifications such as GPS, camera and some in-app experience like notifications on battery status. Also, they are missing extended offline execution capability and multi-tasking (1). These issues are seen as main flaw of HTML5 based applications. The situation is changing over time and the solutions are coming at very good pace. According to Charland and Leroux, features can be added to web browsers by recompiling it with adding functionality if the operating system provider authorizes access via APIs (4). There are several opinions on these subject, while one group of experts claims that web applications will close gap soon, according to Mahemoff(1), others are claiming that web apps will be left behind for a long time(SIegler,1). We can conclude that maybe the best solution of taking full advantage of these types will be making some sort of hybrid applications. 3.1.2 Developers supportDevelopment process can be vastly easy if there are suitable tools, it is very important to determine what kind of support each platform provides. According to Madaudo and Scandurra, developers like to work in native code, because it is easier to get help. They just go online to forums and quickly get answers since writing in native code is done much longer time than for cross-platforms code (2). Native tools have much more advanced tools at their disposal, because they include SDKs, emulators, debugging tools and performance analysis tools. This is not the case with web applications. Platforms for developing cross-platform apps ( web apps) are created far later, so support is not on same level as is support for native applications. During years, support for web application development became easier than it was,according to Charland and Leroux (3). Web mobile applications are created lately, so is the support for creating them. Difference will be smaller and smaller in coming years, if companies continues to develop at this pace mobile web apps.

3.1.3 PortabilityThe ability to run on different operating system is very important factor in evaluation of the best approach for developing mobile application. Native applications are platform-specific and in order to be used for different platform, whole code must be rewritten. Each platform has its own programming language and tools. This all leads to increasing developments costs. According to Holzer and Ondrus, this can be seen as major drawback in development of native applications ( Holzer and Ondrus, 4). On other hand, we have web applications. According to Lewis, there is no convenient native development platform, so HTML5 is looking like very attractive possibility (Lewis,1). The main reason is to use to web applications is that the same code can be used for several platforms, because every smartphone is coming with mobile browser. Also, there is concern of compatibility among browsers, because HTML5 still is not standardized. However, web mobile applications are still way more portable than native applications despite some minor issues that web apps are having.

3.1.4 MaintenanceTwo factors that are important for application maintenance are reusability of the code and the platform where that code is going to be distributed. Some of the native distribution platforms require validation before they can be updated to new versions, while web apps can be updated with no delay, according to Holzer and Ondrus ( Holzer and Andrus, 4). This can be a major reason why developers are moving towards increased development of web applications. According to Madaudo and Scandurra, cross-platform frameworks often use their own subset of Javascript, which means that code cannot be reusable without refactoring or substantial changes (3). This leads to conclusion that developing still web applications requires additional work on code, but those are details and they do not cost too much money3.2 DistributionWhen it comes to distribution which is very important, if not important as creating the app, there are several issues that needs to be taken in consideration such as how to reach the desired customers, how to generate revenue from application development and what are restrictions that application developers are going to encounter.3.2.1 Access to consumersThe way to reach customers is essential. The main goal should be to easily find and download applications. Applications stores are solution for that. Their one-click purchase mechanism and centralized portals proved to be very effective, according to Holzer and Ondrus (4). Native applications are having major advantage over web applications, because they have established application stores. Change in future is inevitable for web apps, even without portals for distribution, according to Mahemoff (1). Nowadays, your application has wasted your time and resources, if it is not present on the app stores such as Google Play or Apples App Store. According to Claburn, there are some web stores such as the Chrome Web Store but Google does not mentioned them a lot.(1). This sentence sums up how important are web stores for major companies. This is one of major advantages of native applications over web applications, because the reach to the consumers is far greater over application stores than just searching over the Internet. 3.2.2 MonetizationPeople are moving to development of mobile applications over desktop, because it is easier to collect revenue. There are several type of ways to collect to revenue such as pay perdownload (e.g., CutTheRope), pay per subscription (e.g., New York Times), advertising (e.g.,Blendr), pay for features (e.g., Hipstamatic), and freemium (e.g. Angry Birds) (Holzer and Andrus 4). These models are been provided by almost all portals and platform provides for native applications. Portals are accessible through device and only one-click is separating from earning desired amount of money through any of previously mentioned models. According to Claburn, there are alternative ways of monetizing Web apps through advertising, selling virtual good, but that may work for some applications (1). Web application can gain revenue, but it is very tricky and depends on type of application. Google hasn't said much about revenue in the Chrome Web Store (Claburn 1). Basically, we can conclude based on this sentence, that earning money is easier when you are developing native application, because you will have the place where everyone will probably see it and increase opportunities in cashing time spent on developing applications, but in future this can change due always present possibility of monetizing the web.

3.2.3 Distribution constraintsIf you want to distribute over portals, then developers should be aware the restrictions that comes with that. Web apps are easily deployed on independent portals and they are not encountering such restrictions. According to Claburn, 30% revenue goes to Apple or Google through selling native iOS or Android apps through the iTunes App Store or Android Market, while a Web app cost range from 0 to 5% of all revenue on Chrome Web store (1). This is seen as major issue for developing native applications, because 1/3 of your revenue is given to provider for just putting it on their portal. Moreover, developers are leaning towards making web applications, mainly because the cost of deploying to the web stores is almost nothing.

3.3. Usage criteriaThere are two requirements that are very important in determining what type of applications is best to develop: how fast is application performing and how application does look like.3.3.1 PerformanceImprovements of hardware and bandwidth are leading mobile phones to reaching previously unthinkable levels of performance. Performance of the native apps is usually faster than web apps. According to Maduado and Scandurra, difference between native apps and web apps is easily noted during graphical rendering and animations (1). Applications that are written in native code tend to run more smoothly than thos written in web language. Users easily notice slow graphics or animations and it presents big concern for web apps. According to Erkkil, interpreting Javascript code has been much slower than running native code, but latest mobile browsers are closing the gap (46). Performance of native applications proved to be better, because they are using that is stored locally and it automatically reduces time. That difference can be reduced over the years, because on the late Android versions, the default browser has closed the gap to other web browsers. (Erkkil, 47). For better performance, it is wise to use native applications, but in upcoming years it would not really matter are you using native or web app.

3.3.2 User experienceAn important aspect of using mobile device is the coherence of the user interface. According to Madaudo and Scandurra, native applications are providing more fluid and responsive interface than web apps, especially visible in animations and gestures (2). As previously mentioned, in developing native application, we are using programming language of the platform that grants access to full device APIs. In development of web applications, we are encountering many limitation to the device specific features. According to Erkkil, the primary problem with web applications was slow responsiveness to the user interaction, fluency and speed of the user interface, but overall functionality and usability was alright (42). Web apps are not far behind native applications, but they are relatively slow due to their dependency on the Internet connection. According to Mahemoff, web apps can be still be customized to meet look-and feel of the platform and they do not need to follow platform standards (5). This is certainly true for some games and some conventional apps such as Twitter. It depends really what are the goals of developers and what are their target users. If they are expecting controls and widgets to be consistent then native app should be their choice. On the other hand, if developers are writing for all platforms and want to progressively enhance, that this is right approach..

4.Conclusion

Mobile computing is the future of business. As mobile applications continue to take a central role in business world, organizations are moving towards them. Choosing the best approach for developing an application in terms of development, distribution and usage is unachievable, because it depends from situation and needs that company or single user is confronted. So, I will propose when is convenient to use native application and when is the obvious choice is web application. If companies are having existing native skills, then they will be able to take advantages of them, without investing significant amount money. Second reason for developing for developing native application is single mobile OS. Sometimes, companies are targeting limited target audience, audience that is known for using only one operating system. When companies are giving certain of mobile device such as Blackberry for their employees, there is no need for multi-platform coverage. Furthermore, there are applications built around single functionality. Skype is prime example of that. It would not be able to use some elements such as VoIP and access to contacts, if it is not developed natively. Web languages are not yet good for achieving desired functionality. Finally, if application is requiring rich user interface requirements such as games, ideal solution is native approach, because web technologies are still not able to access full APIs.On the other hand, some organizations prefer direct distribution without waiting for long and uncertain approval processes. Using purely web languages can completely can completely avoid app stores and allow the organizations to fully control how application is distributed and updated. For building pilot application, it is desirable to build it as web application. It reduces the costs and time to market. Once the concept has been approved, organization can use this code in writing a better, sustainable application. Also, very important reason to develop a web-based application is its visibility. Application that is an app stores will only appear there, but an application that is web-based will be visible in search engine, which in many cases exposes to a much larger audience. Additionally, web development skills are very common and easily found in many organizations. Web developers can build applications with only web skills such HTML, CSS and JavaScript. Furthermore, HTML5 is rapidly expanding in both availability and capability. It is likely to become default technology for client-side application development. However, writing an app in HTML means ensuring that investments they make today do not become obsolete tomorrow. HTML functionality is becoming richer and deals with wider range of mobile requirements.Many companies are searching for the optimal development approach for reaching their goals, but they are realizing that each approach is carrying certain limitations and neither of these two approaches is meeting all the growing needs and complexity of modern mobile enterprises.

Bibliography1. "Android Fragmentation Visualized - OpenSignal."OpenSignal. N.p., Aug. 2012. Web. 4 Jan. 2015. .2. "App Annie Index - Market Q1 2014: Revenue Soars in the United States and China - App Annie Blog."App Annie Blog App Annie Index Market Q1 2014 Revenue Soars in the United States and China Comments. N.p., 15 Apr. 2014. Web. 28 Dec. 2014. .3. "Application.": Definition of in Oxford Dictionary (British & World English). N.p., n.d. Web. 1 Jan. 2015. .4. Charland, Andre, and Brian Leroux. "Mobile Application Development: Web vs. Native."Communications of ACM54.5 (2011): n. pag. Web. 5 Jan. 2015.5. Claburn, Thomas. "Web Vs. Native Development: There's No Winner."InformationWeek. N.p., 17 Aug. 2011. Web. 15 Jan. 2015. .6. "Developer Economics: App Market Forecasts 2013-2016 - VisionMobile."VisionMobile. N.p., 22 July 2013. Web. 28 Dec. 2014. .7. Erkilla, Jussi-Pekka. "Web and Native Technologies in Mobile Application Development." Thesis. Aalto University, 2013.Web and Native Technologies in Mobile Application Development. Web. 3 Jan. 2015. .8. "Gartner Says Worldwide Sales of Mobile Phones Declined 2.3 Percent in Second Quarter of 2012."Gartner Says Worldwide Sales of Mobile Phones Declined 2.3 Percent in Second Quarter of 2012. Gartner, 14 Aug. 2012. Web. 15 Jan. 2015. .9. Holzer, Adrian, and Jan Ondrus. "MOBILE APP DEVELOPMENT: NATIVE OR WEB?"MOBILE A PP D EVELOPMENT : N ATIVE OR W EB ?(n.d.): n. pag. 2012. Web. 7 Jan. 2015. .10. Lionbridge. "Mobile Web Apps vs. Mobile Native Apps: How to Make the Right Choice."Mobile Web Apps vs. Mobile Native Apps: How to Make the Right ChoiceIntroduction(n.d.): n. pag.Lionbridge. Web. 4 Jan. 2015. .11. Mahemoff, Michael. "HTML5 vs Native: The Mobile App Debate - HTML5 Rocks."HTML5 Rocks. N.p., 3 June 2011. Web. 5 Jan. 2015. .12. McWherter, Jeff, and Scott Gowell.Professional Mobile Application Development. Indianapolis: Wiley, 2012. Print.13. "Native App."PC Magazine Encyclopedia. N.p., n.d. Web. 7 Jan. 2015. .14. "Native,web or Hybrid Mobile-app Development."IBM. IBM Coorporation, Apr. 2012. Web. 5 Jan. 2015. .15. Siegler. "HTML5 Is An Oncoming Train, But Native App Development Is An Oncoming RocketShip."TechCrunch. N.p., 9 Feb. 2011. Web. 15 Jan. 2015. .16. "Techopedia."Techopedia.com. N.p., n.d. Web. 7 Jan. 2015. .

18