DZResearch_2014MobileDevelopmentGuide_4
Transcript of DZResearch_2014MobileDevelopmentGuide_4
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
1dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
D Z O N E R E S E A R C H P R E S E N T S
2 0 1 4 GU I D E TO
MOBILEDEVELOPMENTTOOLS, STRATEGIES, AND INSIGHTS FOR
ACCELERATING MOBILE DEVELOPMENT
BROUGHT TO YOU I N PARTNERSH I P W I TH
-
2 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile
Welcome
Dear Reader,
This is the third guide weve produced in the DZone Research series this year and weve been excited by your response to the first two. It is clear that many of you are anxious for resources to help create high-quality products and services, and your feedback thus far has been immensely helpful in shaping the direction of these guides.
For this guide, we heard from over 1,000 of you and learned a ton about the ways you are developing for mobile. With your insights, we were able to put together a strong portrait of the mobile development landscape and unveil many perspectives. As you read this guide, we hope that you will discover some new things that will help accelerate your development, from best-practices to new tools.
As always, thanks to everybody who played a part in the creation of this guide, including those of you who took the time to complete our survey, the experts who shared their knowledge, the vendors who helped us understand their products, as well as our research partners.
Enjoy the guide and happy developing!
Jayashree GopalakrishnanDirector of [email protected]
TABle oF coNTeNTS
Summary & Key TaKeawayS
Key reSearCH FINDINGS
THe mobIle laNDSCape: CroSS-plaTForm problemS aND SoluTIoNS By ALec NoLLer
THe STaTe oF NaTIve vS. web vS. HybrIDBy Mitch ProNschiNske
baCK-eND INTeGraTIoN: a major HeaDaCHe For eNTerprISe mobIlITyBy suhAs uLiyAr
Game oF pHoNeS INFoGrapHIC
mobIle uX: reFINING perCeIveD perFormaNCe By ANdrew trice
THe STep-by-STep mobIle DevelopmeNT CHeCKlIST
SoluTIoNS DIreCTory
GloSSary
cReDITS
DZoNe ReSeARchJayashree GopalakrishnanDIreCTor oF reSearCH
Mitch pronschinske SeNIor reSearCH aNalyST, auTHor
Matt Werner marKeT reSearCHer
alec nollerCoNTeNT CuraTor, auTHor
BenJaMin BallreSearCH aNalyST
Special thanks to our topic experts Alex Curylo, Pieter De Rycke, Raymond Camden, Max Katz, Jose Roy Javelosa, and our trusted DZone Most Valuable Bloggers for all their help and feedback in making this guide.
DZoNe coRpoRATerick rossCeo
Matt schMidtpreSIDeNT & CTo
Brandon nokesvp, operaTIoNS
alex craftsSeNIor aCCouNT maNaGer
hernni cerqueiraleaD SoFTware eNGINeer
kellet atkinson DIreCTor oF marKeTING
ashley slateGrapHIC DeSIGNer
chris sMithmarKeTING aSSoCIaTe
4
10
18
24
25
35
3
6
14
22
DZone Research Guides are published by DZone, 150 Preston Executive, Cary, NC 27513. All contents 2014 DZone. All rights reserved.
REUSE PERMISSIONS AND REPRINTS: Email [email protected] Phone +1 (919) 678-0300. Fax +1 (919) 443-1110.
PRINTED IN USA.
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
3dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
SummARy & Key TAKeAWAySEntering todays mobile space requires significant decisions about the development technology you want to use. Will your apps
be native, web-based, or will you choose from a variety of cross-platform tools to make something in between? If you develop
native apps, will you build for both Android and iOS? These decisions are often made without adequate knowledge of industry
trends and relevant data. The DZone 2014 Guide to Mobile Development gives readers a full picture of the various approaches to
mobile development, enabling them to overcome its biggest obstacles. Exploring the data and content in this guide and on its
companion site dzone.com/research/mobile will help you understand:
The challenges of cross-platform mobile development and strategies for overcoming them
The strengths and weaknesses of native, hybrid, and web-based approaches to mobile development
Mobile development trends and preferences from a survey of more than 1,000 mobile professionals
Feature comparisons between various Mobile Application Development Platforms (MADPs)
Strategies for mobile user experience design and enterprise integration
K e y TA K e AWAy SA Web or Hybrid App is Becoming the Preferred Enterprise AppAs enterprises start to build more B2E apps, they are likely to turn to web and hybrid apps, or use
MADPs that generate native apps from a common codebase. Our mobile development survey found
that the organizations building web and hybrid apps are making more enterprise apps than the overall
pool of respondents. The organizations that are exclusively focused on enterprise apps are also using
web technologies 15% more than Java, which is the second most common language for that group.
The lower cost of maintaining a single codebase is driving a surge of web and hybrid apps in the
enterprise world.
Many Developers are Turning to Cross-Platform ToolsCross-platform tools are being used by 41% of the mobile developers surveyed, and it is the
most popular tooling group among a long list of common mobile utilities. This finding is further
emphasized by the two most common pain points among the mobile developers surveyed: testing
efficiently on multiple devices (53%) and building native apps for multiple platforms (50%). MADPs
are certainly not the only answer to these challenges, but the platforms compared in our solutions
directory are worth investigating.
The Majority of Mobile Customers are Still ExternalAmong the mobile developers surveyed, 60% said they are developing for
consumers and 54% are developing for businesses outside their own. This
indicates that customer experience should be the key concern for todays
mobile developers, and that performance must feel native. The enterprise
app space is growing, but only 30% of respondents said their organization is
developing them.
Commissioned Apps and Marketing Through Apps are Primary Revenue SourcesMost companies are making money by building commissioned apps or by
marketing products through a mobile app. The expected revenue source for
mobile apps is correlated to the size of the organization. The most common
target revenue source for organizations larger than 99 employees is revenue from
marketing and brand awareness for another product, while organizations under
100 employees cite commissioned apps as their most common revenue generator.
-
4 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile
Key ReseaRch Findings
DZone surveyed over 1,000 IT professionals with some involvement in mobile technology for the 2014 Guide to Mobile Development, providing key information on mobile monetization, tool usage, production levels, and platform prioritization. The largest demographic segments are developers (39%) and development team leads (29%). 53% of respondents come from small organizations (under 100 employees) and 47% come from large organizations (100 or more employees). The majority of respondents are headquartered in the US (36%) or Europe (36%).
moRe moBIle hoBByISTS AND employeeS ThAN FReelANceRSOver half (51%) of those surveyed work in an organization that develops mobile apps and 48% of all
respondents have participated in their organizations mobile efforts. Outsourcing is relatively unpopular,
with only 14% saying their organization outsources mobile development efforts. 37% of respondents
have developed mobile apps as a freelancer, showing that fewer developers choose to strike out on
their own when building mobile apps. However, 56% have built mobile applications as hobby projects,
and 30% of the overall respondents dont expect any return on investment from their apps.
ANDRoID AND WeB SKIllS moRe commoN ThAN IoS SKIllSAndroid has the largest percentage of organizations and individual respondents
targeting the platform with 84%. iOS is a close second with 70%. 56% of
respondents say they are developing for web or hybrid, and Windows Phone
has a strong showing with 24%. When respondents were asked which platforms
they personally have helped build applications for, Android has a larger lead
with 71% and web/hybrid takes second place with 50%. 47% of the respondents
have built iOS apps and 17% have built Windows Phone apps. Android has a
large set of developers in this survey most likely because its platform language,
Java, is already ubiquitous in the software industry. Web skills, along with Java
skills, are much more common than Objective-C skills, which are not often
used outside of iOS development. One of the more interesting statistics is that,
among large organizations, 14% more organizations are targeting iOS compared
to small organizations.
The leADeRS ARe BuSINeSS AND uTIlITy AppSThe top five types of apps that respondents and their organizations are working on include Productivity, Finance, and Business (63%), Tools and
Utilities (39%), Social Networking and Communications (20%), Travel, Maps, and Navigation (17%), and News, Media, and Weather (16%). For
hobbyists, Tools and Utilities is the most common type (55%), and for freelancers, its between Productivity, Finance, and Business (53%) and Tools
and Utilities (46%). Hobbyists are also much more interested in developing games (27%) or entertainment apps (16%) than other developers.
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
5dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
cRoSS-plATFoRm DevelopmeNT AND TeSTINg ARe The BIggeST pAIN poINTSThe most common mobile development pain points for respondents centered
around multi-platform development and testing. Testing efficiently on many
different hardware sets and screen sizes is the biggest pain point for respondents
(53%), while building native apps for multiple platforms (50%) is a close second.
The third most common pain point is a lack of skilled mobile developers (40%).
Respondents from large organizations were 10% more likely than those from
small organizations to experience pain points around integrating with existing
in-house apps, lack of skilled mobile developers, and security.
commoN TImelINe FoR moBIle App DevelopmeNT IS 1-3 moNThSApp development time can vary widely based on a host of factors, but finding out how
much time it generally takes organizations and individuals to develop apps is useful for
discovering industry opinions about how long an app should take to complete or how large
a project should be. The top three answers for organizations were 12 weeks (14%), 8 weeks
(13%), and 4 weeks (10%). For individuals working by themselves, their timetables gravitate
toward 4 weeks (15%) with 12 and 8 weeks (both 12%) close behind. As for the number
of apps completed per year, the chart to the left shows statistics for the number of apps
organizations are churning out.
cRoSS-plATFoRm ToolS ARe uSeD By NeARly hAlF oF moBIle DevS41% of respondents say they or their organizations are using cross-platform tools such as
Apache Cordova/PhoneGap. This is the most popular type of mobile tool, with IaaS/PaaS as
the second most crucial development utility at 20% usage. For programming languages, Java
is very popular in this group of enterprise developers (73%), but web languages appear to be
the most common skillset (80%). Objective-C for iOS is third with 45%, and C#, the language
of Windows Phone, is fourth with 25%. The mobile usage percentages for the rest of the
programming languages can be seen in the chart to the right.
commISSIoNeD AppS AND pRoDucT mARKeTINg ARe The moBIle BReADWINNeRSCommissioned apps (37%) are the number one overall source of expected mobile app
monetization. Marketing and brand awareness for another product (26%) and app store
purchases (25%) are the other two major sources. For small organizations, commissioned apps (43%) are still the most common expected
revenue source, but app store purchases are in second place (31%) and product marketing is in third (21%). This is probably due to the small
amount of employees needed to build an app-based business or a mobile development-for-hire shop. For large organizations, marketing for
another product is the most common expected revenue source (32%). Commissioned apps are second (28%) and app store purchases are
third (18%). Many larger organizations come with larger products, so often their focus is on moving leads through a sales pipeline toward more
valuable, non-mobile product purchases.
What are your organizations pAIN poINTS for mobile application development?
1 TeSTINg oN mulTIple DevIceS2 BuIlDINg NATIve AppS FoR mulTIple
plATFoRmS
3 lAcK oF SKIlleD moBIle DevelopeRS
-
6 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile
Mobile development has become a ubiquitous part of the software industry, and most developers understand the central dilemma organizations face when building a mobile app: cross-platform development. What options exist for deploying an app to multiple platforms simultaneously? What are the strengths and weaknesses of each platform?
The backbone of mobile development is the native application, but there are a growing number of alternatives: web apps provide a browser-based solution, hybrid apps leverage web development skills in a native package, and code translators apply one platforms native development skillset to the codebase of another. However, the differences can be subtle, and every option carries its own set of drawbacks.
NATIvE DEvElOPMENTNative applications are built from the ground up for a specific platform and tailored to fit it. The precise, platform-centered nature of native development means that these apps have no limits in terms of access to APIs and device features, performance optimization, and platform-specific best practices for user interface design. Ideally, every mobile app would be built this way: to suit its exact purpose while utilizing all of the available resources.
native application developMent
ANDRoID IoS WINDoWS phoNe
language: Java
Primary IDE: Eclipse or Android Studio
language: Objective-C
Primary IDE: XCode
language: C#
Primary IDE: Visual Studio
One of the major benefits of native mobile development is the availability of resources. For example, developers targeting Android have the Android Software Development Kit (SDK) at their disposal, which includes a suite of tools to streamline the development process: the SDK Manager condenses updates and tool installations into a single menu, the AVD Manager provides access to the Android Emulator and other virtual devices, and the Dalvik Debug Monitor Server (DDMS) is a powerful debugging tool, just to name a few. iOS and Windows Phone developers have similar toolsets available in their SDKs, covering everything from the UI and device feature tools of Cocoa Touch in the iOS SDK to the real world testing conditions of the Simulation Dashboard for Windows Phone 8. These toolsets make native SDKs invaluable and thorough resources.
Unfortunately, the native SDKs are all robust toolsets that a native developer has to learn for each platform. To develop native apps from scratch (rather than through an intermediate tool), developers
must be skilled with the required language, IDE, and development tools for each targeted platform, and if developers with diverse skillsets are not available, additional developers must be hired. This can be a serious problem, given the increasing push to develop on multiple platforms. For example, according to DZones 2014 Mobile Developer Survey, 62% of respondents targeted both Android and iOS. The economic constraints of native development are a major factor in the growing popularity of web apps, hybrid apps, code translators, and Mobile Application Development Platforms (MADPs), which allow developers to reach multiple platforms with just one tooling ecosystem.
WEB APPSThe skillset for building a basic mobile web app is more common than that of native development. Essentially, mobile web apps are just regular websites optimized to look good and function well on mobile devices, and they can provide a quality app-like experience if the developer is very skilled in web technologies. Widely understood front-end web development languages such as HTML, CSS, and JavaScript provide the logic behind a web app, and there are plenty of tools and libraries out there to help web developers direct their skills toward mobile devices. jQuery Mobile and Sencha Touch are two examples of mobile web frameworks that provide UI components and logic for sliders, swipes, and other touch-activated controls that are common to native mobile applications.
The community around open source web technologies is another key difference between native and web development. Web technologies like Node.js and AngularJS are some of the most popular projects in the open source community according to
GitHub statistics [1]. This suggests that the community support and knowledge base around web technologies is broader than native technologies.
In addition to being a more common skill set, mobile web development can also solve a fundamental issue with native application development. Aside from possible browser compatibility issues, web apps present a near-universal cross-platform option. Most APIs and hardware features will not be accessible by web apps, and because they are not discrete applications in the same way that native apps are, web apps cannot be distributed through common means, such as Apples App Store and Googles Android Marketplace. Web apps may be a particularly flexible option, but they lack a presence on fundamental mobile distribution channels.
HYBRID APPSMany of the drawbacks for web apps are alleviated by another cross-platform option built on the same core web development skillset: the hybrid app. Like web apps, hybrid apps require web development skills, but unlike web apps, they include some native features to allow greater flexibility. It gets the name hybrid because it is built with web languages and technologies at its core.
The mobile landscape:cRoss-plaTFoRm pRoblems and soluTions
by alec noller
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
7dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
With the help of a native packaging tool, it can be deployed just like a native app and access more native device capabilities (device APIs) than a pure web application.
A hybrid app is created by first coding the application to run in the devices native webview, which is basically a stripped-down version of the browser. For iOS this view is called UIWebView, while on Android its called WebView. This view can present the HTML and JavaScript files in a full-screen format, and pure web apps can achieve this full-screen view as well. WebKit is the most commonly targeted browser rendering engine because it is used on iOS, Android, and Blackberry.
Where a web app really starts to become a hybrid app is when the app is placed inside of a native wrapper, which packages the hybrid app as a discrete application and makes it viable for app store distribution. In addition to the native wrapper, a native bridge allows the app to communicate with device APIs, such as alarm settings, accelerometers, and cameras. The native bridge is an abstraction layer that exposes the device APIs to the hybrid app as a JavaScript API. This is one feature that clearly separates hybrid and pure web apps, because web apps are unable to pass through the security structures between the browser and native device APIs. Access to many of the hardware features on mobile devices makes hybrid apps feel more like native apps than web apps from the user perspective.
MADPS AND CODE TRANSlATORSSome tools can go even further in terms of taking a single codebase and deploying it on multiple mobile platforms. MADPs are development tools, sometimes including a mobile middleware server, that build hybrid or native apps for each platform using one codebase. Some MADPs, such as Appcelerators Titanium and Trigger.io, can take advantage of native elements where native is necessary or higher performing. UI widgets may be native, for instance, while a more flexible JavaScript API condenses the universal parts of mobile development and maximizes code reuse. As more native elements are introduced, some of the drawbacks of native development reappear, such as the costly need for multiple
skillsets. MADPs are most useful in scenarios where an application needs to work with many back-end data sources, many other mobile apps, or many operating systems [3].
A less comprehensive but more straightforward solution is to use code translators when building native apps for multiple operating systems. These tools take native code and translate it into another platforms native code, or translate native code into a neutral low-level alternative, such as bytecode. One example is Googles J2ObjC, which translates Java classes into their Objective-C equivalents, alleviating a lot the initial development of an iOS version of the app. Although its much more than a code translator, a product called Xamarin does something similar by allowing developers working with C# and .NET in Visual Studio to produce a native ARM executable. They can then take advantage of ahead-of-time (AOT) or just-in-time (JIT) compilation to run their apps on iOS and Android in addition to Windows Phone [3].
As is the case with hybrid apps, the UI presents a problem. Because UI development cannot be translated between platforms, code translators still require significant knowledge of the native platform to write the UI. In other words, code translators can provide substantial benefits in terms of cutting down development time, but theyre not necessarily a write once, run anywhere solution.
NO SIlvER BUllETSBetween native apps, web apps, hybrid apps, and the growing number of MADPs, there are a lot of options for mobile development. Its important to note that there is no one solution that does everything. Some sacrifice affordability and accessibility for pure native performance, UI for easy cross-platform deployment, or ease of development for native authenticity. Even the simplest tools come with some degree of a learning curve. If a method with no trade-offs existed, the industry would adopt it en masse, and you would know about it.
Because there are trade-offs, developers and decision-makers will have to recognize their needs, and the needs of their users, in order to determine the best way to approach mobile development.
[1] https://github.com/search?o=desc&q=stars%3a%3E1&s=forks&type=Repositories[2] http://trigger.io/cross-platform-application-development-blog/wp-content/uploads/2012/05/slide03-v5.png[3] http://www.kony.com/resources/glossary/mobile-application-development-platform-madp-0
Ideally, every mobile app would be built this way: to suit its exact purpose while utilizing all
of the available resources.
W R I T T E N B Y
Alec NollerAlec Noller is the Senior Content Curator and leader of the Mobile Zone at DZone. When hes not creating and curating content for DZone, he spends his time writing and developing Java and Android applications.
Inspired by Trigger.io [2]
-
Close the App Gap. Create powerful data-driven mobile & web apps with minimal coding.
ANYTIME, ANYWHERE ACCESS.
Quickly build and deploy apps on any cloud or device with
Progress Pacifi c, Platform-as-a-Service (PaaS). Jumpstart
your mobile or web app development, connect and leverage
data, and deploy your app using the web, cloud, or hybrid
environments all from a single development code.
Visit www.progress.com/dzonemobile and take a trial today.
2014 Progress Software Corporation and/or its subsidiaries or affi liates. All rights reserved.
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
9dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
There is a critical need to deliver apps that
are optimized for web and mobile devices.
As a result, many developers are living by
the motto of web is not enough when
developing enterprise applications. When
developing applications that span web and
mobile, you should think about designing
apps specifically for each device, how youll
connect and integrate backend data, and
how youll deploy and manage the apps.
coNSIDeRATIoNS WheN DevelopINg cRoSS-plATFoRm AppSDo you standardize on a single platform or
use different approaches for each device?
One way to avoid this question is to choose
a solution that allows you to build and
deploy apps on any environment, using a
single development approach. To deliver
apps fast and save crucial development
resources, you need to build device-specific
apps without writing device-specific code.
BeNeFITS oF uSINg A SINgle plATFoRm While organizations are turning to
Platform-as-a-Service (PaaS) to assemble,
deploy, and manage applications they
need to carefully consider support for
mobile. It is important to select a PaaS that
provides a rich mobile experience without
custom code and also offers support for
both private and public cloud deployment.
Without these capabilities, you wont reach
your goal of quickly building, deploying,
and managing compelling apps.
DRIveN By DATAWhat good is an application without data?
With a simple, fast connection to cloud
and on-premise data, you can develop and
deploy modern, high-performance business
applications regardless of source whether
youre using RDBMS, SaaS apps, big data
stores, or others. You need standards-based
data connectivity built into your PaaS
solution so that you can go from data to
application at lightning speed.
Create powerful data-driven mobile and
web apps with minimal coding. Visit www.
progress.com/dzonemobile and take a trial
today.
FuTuRe pRooFINg application development
cReATe poWeRFul DATA-DRIveN moBIle AND WeB
AppS WITh mINImAl coDINg.
Close the App Gap. Create powerful data-driven mobile & web apps with minimal coding.
ANYTIME, ANYWHERE ACCESS.
Quickly build and deploy apps on any cloud or device with
Progress Pacifi c, Platform-as-a-Service (PaaS). Jumpstart
your mobile or web app development, connect and leverage
data, and deploy your app using the web, cloud, or hybrid
environments all from a single development code.
Visit www.progress.com/dzonemobile and take a trial today.
2014 Progress Software Corporation and/or its subsidiaries or affi liates. All rights reserved.
Additional information in the vendor profile section of the guide
W R I T T e N B y
Mark TroesterSenior Director of Pacific Product Management and Solution Marketing, Progress
TARgeTS
STReNgThS
cuSTomeR SucceSS SToRy
NoTABle cuSTomeRS
DeScRIpTIoN
FRee TRIAl 30-day free trial
uSeS Enterprise Apps (for internal use)
TWITTeR @progresssw phoNe 1-800-477-6473
Easily meet the web and mobility requirements of your users
Easily assemble, manage, and deploy web and mobile apps: powerful applications at low cost.
Leverage multiple data sources with Progress data integration for web and mobile apps
Deliver powerful native apps without writing device specific code
Rich PaaS support for all your web/mobile or mobile-only apps
Progress Pacific Platform-as-a-Service (PaaS) can be used to build business apps fast, with simple point-and-click wizards and drag-and-drop features. With Pacific you can also connect your app in real time to a variety of SaaS, relational, NoSQL, big data, social, CRM, and ERP sources. Using Progress Pacific you can develop, deploy, and manage apps for iPhone, Android, web, or cloud. You can manage multi-tenant apps from the browser in the environment of your choice: public, private, or on-premise.
Brixxs is already making an impact with Progress Rollbase, part of Progress Pacific, by helping registered taxi companies in the Netherlands to quickly comply with new regulations and improve the quality of their services in large cities. by using Progress Pacific, Brixxs has developed and updated applications that have allowed taxi companies to comply with strict new regulations introduced by the Dutch government, within just 3 days of them coming into effect. Progress Pacific made this possible by allowing Brixxs to rapidly build their apps using an intuitive, easy-to-use web interface.
moTwin
Brixxs
Good Done Great
Carego International
Explore Analytics
FreshERP
Progress Pacific BY PROGRESS SOFTWARERapidly develop & deploy business apps using the mobile, data integration, selfservice, and collaboration capabilities of Progress Pacific.
Full pRoFIle lINK
dzone.com/r/ xsyWAdditional information in the vendor profile section of the guide
cATegoRymADp
WebHybridNative
TAgS -JAvAScRIpT- -moBIle mIDDleWARe- -uSAge ANAlyTIcS- -peRFoRmANce ANAlyTIcS-- -ReST + SoAp-
-
10 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile
A continuing question in mobile development is whether its
more beneficial to build applications that are written directly for
a native platform or to build applications on web languages and
technologies. When tools like PhoneGap emerged, a third hybrid
option became available that could use native code in conjunction
with web languages to gain a set of attributes that no native or web
apps have. Today, there are also Mobile Application Development
Platforms (MADPs) that can generate largely native apps from a
single original codebase, which does not have to be written in web
languages.
MADPs are compared on a tool-by-tool basis on DZones mobile
research portal (http://dzone.com/research/mobile). For native,
hybrid, and web applications, this article will serve as a comparison
between the three mobile app types. In addition to the comparison
information, youll also get a snapshot of the industry use cases and
current trends around native, web, and hybrid apps.
COST Native apps often cost more to develop and distribute because of
the distinct language and tooling ecosystems, which require more
investment in developer skills if you need to develop for more than
one platform. However, cost is dependent on many other factors
as well, so native apps wont be the most expensive option in every
case. Building an excellent mobile web app also requires a high
degree of developer expertise, so no matter which type of app you
build, quality will always be expensive.
TESTABIlITYMature and predictable native platforms with proven tools tend to
make testing easier than the frameworks that create hybrid apps
using JavaScript-to-native communication. Web app testing can
also be a struggle if the developer isnt skilled and knowledgeable
about the JavaScript ecosystem. Native app testing becomes
increasingly difficult if you maintain multiple codebases and
support a large number of devices.
CODE REUSABIlITY/PORTABIlITYPerhaps the biggest weakness of native apps is their lack of
portability to other platforms. The appeal of web apps is that you
can have one codebase and run it on any major mobile platform.
The appeal of hybrid apps is similar, because you are able to reuse a
large amount of code for each platform. However, web apps arent
100% portable. Newer web standards arent always supported by
the browsers on every device, so even web developers have to
worry about compatibility issues [1]. It should also be noted that
native app webviews are not the same as device browsers, and
therefore have their own fragmentation issues.
DEvICE ACCESSAlthough web apps can access some basic mobile device APIs, like
the GPS for geolocation apps, they still have very limited hardware
access. They dont have support for Digital Rights Management
(DRM), which is needed for many multimedia services, they cant
harness background processing, and they cant use secure storage
outside of applications. There are some new standards currently
being drafted by the W3C that will give web apps a few more
capabilities for accessing device APIs, but for the next few years,
hybrid apps and native apps will provide significantly more access
to device APIs. Hybrid app frameworks have made a lot of progress
getting access to most of the low level features, like the gyroscope
and accelerometer.
UI CONSISTENCYMobile web UI frameworks help web and hybrid apps build native-
looking UI components, but differences still remain. The frameworks
also have to stay up to date with major platform design updates
like iOS 7. In iOS, a web or hybrid UI is especially apparent, because
when UIWebView is used, the bitmap compositing does not happen
in the hardware like it would for a native app. Subtle features
like the bouncing effect at the bottom of a page on iOS cant be
completely recreated in JavaScript. Thats why the developers who
built forecast.io (a web app that rivals native UX) recommend that
NATIve hyBRID WeB
coST Commonly the highest of the three choices if developing for multiple platformsSimilar to pure web costs, but extra skills are
required for hybrid toolsLowest cost due to single codebase and common
skillset
coDe ReuSABIlITy/poRTABIlITy
Code for one platform only works for that platform
Most hybrid tools will enable portability of a single codebase to the major mobile platforms
Browser compatibility and performance are the only concerns
DevIce AcceSS Platform SDK enables access to all device APIs Many device APIs closed to web apps can be accessed, depending on the toolOnly a few device APIs like geolocation can be
accessed, but the number is growing
uI coNSISTeNcy Platform comes with familiar, original UI components UI frameworks can achieve a fairly native look UI frameworks can achieve a fairly native look
DISTRIBuTIoN App stores provide marketing benefits, but also have requirements and restrictionsApp stores provide marketing benefits, but also
have requirements and restrictionsNo restrictions to launch, but there are no app
store benefits
peRFoRmANce Native code has direct access to platform functionality, resulting in better performanceFor complex apps, the abstraction layers often
prevent nativelike performancePerformance is based on browser and network
connection
moNeTIZATIoN More monetization opportunities, but stores take a percentageMore monetization opportunities, but stores
take a percentageNo store commissions or setup costs, but there
are few monetization methods
the state of NATIve vs. WeB vs. hyBRIDby mitch pronschinske
NATIve vs. WeB vs. hyBRID: 7 FAcToRS oF compARISoN coN pRo NeuTRAlKey
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
11dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
you build an original UI for web apps, rather than trying to recreate
the native UI and having your app look wrong to users [2].
SEO This may not be the fairest criterion for native applications, but if you
want the textual and semantic content of your app to be found and
ranked by search engines, your app has to have a web component. A
web component is required because apps are closed environments,
and search engines cannot access that information.
DISTRIBUTIONWith app stores, native and hybrid apps are able to harness marketing
tools such as rankings and featured placement all in a well-maintained
system. Web apps, by contrast, dont have to fulfill any app store
requirements, and they are accessible through any compatible
browser. The disadvantages for native and hybrid apps are the
app store requirements and content restrictions. For web apps, the
downsides are that you dont get the marketing benefits of an app
store. Web apps also have to be manually bookmarked if the user
wants a shortcut on their homescreen.
PERFORMANCENative code will always be the most straightforward path to the
snappiest performance. Hybrid app performance can be strong,
but will sometimes suffer depending on how the tools build code to
interface with the native OS. Web apps can have strong performance
as well, if you have skilled web developers and use modern standards
like appcache. Web and hybrid performance will also improve as
mobile browsers get faster JavaScript engines. Other things that
can help mobile web performance include using WebKits overflow
scrolling to create scrolling divs, using tools like FastClick to speed up
hyperlinks, and only animating GPU-accelerated properties [3].
DEPlOYMENT/UPDATESIf app updates arent automatic, they can be a real annoyance to
the user. A huge advantage for web apps is that you can deploy
them like any other desktop website. Hybrid apps can make some
updates through the web without app store approval, but hybrid apps
and native apps still have to jump through the hoops of app store
approval, and they need to download any updates from the app store.
MONETIzATIONFor web apps, you can make money through advertisements,
subscriptions, or an app store for web apps, though the vast majority
of app downloads still happen in the native platform stores. Native
and hybrid apps have more options for monetization, including in-app
purchases, platform-native ads, and the app purchase itself. However,
to be in the high-profile native app stores, you need to hand over a
percentage of your app download revenue to the company that owns
the store (usually around 30%). There is also an initial fee to develop
for the platform and deploy on the app store.
NATIvE vS. WEB vS. HYBRID: THE TRENDSWhen looking at the trends in the native vs. web vs. hybrid
conversation, it cant be denied that native apps are heavily favored
by consumers. A recent survey by Flurry, a mobile analytics company,
found that mobile users in the US spend 86% of their time using
native or hybrid apps [4]. That number is still 54% even if you filter
out gaming apps. Comparatively, 14% of their time is spent in the
browser using mobile websites. This is a pretty good indication that
an app-like experience, whether its through native or hybrid code, is
the preferred mode of consumer interaction.
If thats not enough evidence, you just need to look at the most
popular mobile apps right now and youll find that most of them are
native. Facebook and LinkedIn both tried to build hybrid apps for
accessing their websites, but they found that the experience and
performance werent up to their standards, so they built native apps
for all of the major platforms [5]. However, those companies can
certainly afford to have many developers with the skillsets to build on
those platforms.
An area where
web and hybrid
app development
is becoming more
common is in the
enterprise. The need
for business-to-
employee apps (B2E)
is expected to grow
exponentially over the
next few years, and
most companies will
not want to build and
maintain two or more
codebases for every
app. Another option
for these enterprises is
using MADPs, which were described in the introduction. The expected
growth of B2E apps has led some analysts to recommend choosing
hybrid apps or MADPs for large scale internal app development, while
building native apps for external customers with high performance
expectations [6]. Web apps tend to be recommended if the
organization needs to circumvent app stores, build an e-commerce
storefront that is searchable on the web, or create a marketing site
that is also easily searchable and accessible through the web.
The point of this exploration is not to pick a winner, but to know the
strengths and weakness of each application type. The choice between
native, web, or hybrid is dependent on a number of factors, including
business needs, app requirements, developer skill, and development
timelines. All potential types should be explored and evaluated before
implementing a mobile strategy.
[1] http://mobilehtml5.org/[2] http://blog.forecast.io itsnotawebappitsanappyouinstallfromtheweb/[3] https://github.com/ftlabs/fastclick[4] http://blog.flurry.com/bid/109749/AppsSolidifyLeadershipSixYearsintotheMobileRevolution[5]https://www.facebook.com/notes/facebookengineering/underthehoodrebuildingfacebookforios/10151036091753920[6]http://www.techtimetea.com/trendsenterprisemobility2014/
W R I T T E N B Y
Mitch PronschinskeMitch Pronschinske is the Head Analyst for DZones Research division. He has been writing, curating, and editing content for an audience of IT professionals for over four years. In that time he has learned the complexity that software producers deal with on a daily basis, and he strives to make their world easier to understand and digest.
The choIce BeTWeeN NATIve,
WeB, oR hyBRID IS DepeNDeNT
oN A NumBeR oF FAcToRS,
INcluDINg BuSINeSS
NeeDS, App RequIRemeNTS,
DevelopeR SKIll, AND
DevelopmeNT TImelINeS.
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
13dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
The forces pushing enterprises to mobile
are so well documented and talked about
that they dont really bear repeating.
The business case has been made. The
organization has spoken, and the response
from IT is quite varied.
The early adopters listened to public
examples, like Facebook, and decided that
native was the way they had to go even if
their app bore no resemblance to the public
use case. What they unfortunately ran into
was a big bag of hurt. The fundamentally
splintered approach of hand-coded, cross-
device native mobile app development
crushed many of these projects after the
first test app.
Others went down the path of trying to
cram a desktop browser app onto a four-
inch screen, often with disastrous results.
These early wounds
developed into scar tissue
that still leaves some IT
shops hesitant to engage.
The many that are pushing
(or being pushed) past that
fear are understandably
cautious and curious:
What are my options? Which path should I choose (pros and
cons)?
What first app gives the biggest bang for my buck?
HOW DO I GET STARTED QUICKLY?
Much has changed since the time of these
first painful forays, as is always the case
with technology. The state-of-the-art has
advanced to a point where enterprises can
meet the high demands of their customers,
partners, and employees with amazingly rich
UX that weaves data, process, and practice
cohesively inside apps that run beautifully on
any form factor they are used on.
For more information, go to http://bit.ly/m-
dzone
painless Move to MoBile
The STATe-oF-The-ART FoR moBIle hAS ADvANceD To A poINT WheRe eNTeRpRISeS cAN meeT hIgh
DemANDS ... WITh AmAZINgly RIch uX ThAT WeAveS DATA, pRoceSS, AND pRAcTIce coheSIvely.
W R I T T e N B y
Sean AllenDirector of Product Marketing, OutSystems
TARgeTS
STReNgThS
cuSTomeR SucceSS SToRy
NoTABle cuSTomeRS
DeScRIpTIoN
FRee TRIAl Free version for individual users, no ALM or staging capabilities
uSeS Enterprise Apps (for internal use)
TWITTeR @outsystems phoNe (404) 719-5100
Create once for all devices utilizing responsive web design
True no lock-in: customers can detach on to industry-standard application stacks with open Java or C# code; no proprietary runtime
Can use flexible deployment scenarios from on-premises to public, private , or hybrid cloud
Allows creation of more complex systems, including those using large volumes of data and non-trivial workflows
Not just for building single-function apps
OutSystems provides an open, high-productivity PaaS that allows users to create, deploy, and manage enterprise mobile and web apps with integration into existing systems. OutSystems includes Continuous Delivery facilities to deploy and manage those apps after release, including lifecycle governance and integrated UX monitoring.
Liberty Seguros is a leading insurance company and part of the Boston-based Liberty Mutual Group - a global insurer and sixth largest property and casualty company in the United States. Libertys vision was to connect every single department and external partner through an end-to-end solution that placed the customer at the core of operations and analytics. The single information system would streamline collaboration with external partners such as agents, repair shops, customers, and more. Liberty is a great example of what long-term use of OutSystems Platform can produce. Fast forward 10 years and Liberty Connect is a mature collaborative platform with customers at its core. It allows every area of the company, including external partners, to interact in real time, and that has made it possible for Liberty to completely sustain its business without losing the ability to offer customer-centric services.
Liberty Insurance
PlayRight
FICO
Bacardi
Warner Brothers
Charles River Laboratories
OutSystems Platform BY OUTSYSTEMSOutSystems Platform empowers developers to create, deploy, and manage amazing mobile and web applications more efficiently with current skills.
Full pRoFIle lINK
dzone.com/r/ gmRlAdditional information in the vendor profile section of the guide
cATegoRymADp
WebHybridNative
TAgS -JAvAScRIpT- -JAvA- -IDe- -veRSIoN mgmT-- -uSAge ANAlyTIcS- ReST + SoAp-- -hoSTeD-
-
14 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile
A few months back, I was asked to talk about my job in front of a class of 8th graders during a local schools career day event. To simplify things, I told the class that I build mobile applications for companies. I explained that the apps I create are like the apps that you find on the app store, except they are built for businesses. One of the students raised her hand and said that she had built an iPhone app in two weeks!
Thats right, 8th graders are now building iPhone apps, and one of them was asking me what was so tough about my job? Upon reflection, I realized that over the last 15 years of building mobile apps, we have come a long way from the time when it used to take developers months or sometimes more than a year to build one app. You would need highly skilled mobile application developers for Windows Mobile, Symbian, or Blackberry, but now even kids can build iOS and Android apps.
There does seem to be an app for everything these days, but the one area over the last decade that remains a complex and costly endeavor is integrating the mobile facing client application with enterprise systems. Integration comes with challenges that include adherence to IT security policies for Single Sign-On (SSO), integrating with one or more back-end applications, complying with data encryption policies, and other obstacles that still exist after a decade of unprecedented technological progress.
Today, there are many frameworks and tools that help mobile client developers build native, web, or hybrid mobile applications. However, there are fewer tools that make your life just as easy when integrating the client facing application with enterprise systems. I wonder what the 8th graders response would have been if I had asked her to authenticate her application via SSO and integrate it with an enterprise application for data?
ENTERPRISE INTEGRATION MAkES MOBIlE HARDERCreating mobile applications continues to create new challenges for the IT team. Even talented programmers find that they might not have the specific expertise required for exposing back-end services so they can be readily and securely consumed by mobile applications. Not only is IT struggling to provide the required skill sets for a mobile world, they
are finding it difficult to meet new expectations for project timelines.
Additionally, it is rare for customers to say that they need a mobile app in the next 12 to 18 months. Most customers expect applications to be delivered in a few days or weeks. Customers and even development professionals often underestimate how difficult it is to build, connect, secure, deploy, and manage a mobile app.
The reason for this is because writing a standalone client app and posting it to the app store isnt the difficult part. The difficult part, especially for the enterprise, is making that application talk effectively to back-end enterprise systems. It is also about securing the data accessed by the app as it connects to the back-end systems. To do that, developers must devise ways to extract critical information from back-end applications and data repositories, while also delivering output optimized for mobile devices.
HARD DECISIONSMobile development also forces hard decisions about what features to include from the backend. Mobile is not about putting wheels on the system of record (SOR) and calling it mobile. Mobile apps must be designed with context in mind and with the supporting data source(s) to deliver the context. In the past, mobile applications were mostly integrated to one on-premise back-end application. Today, enterprises are beginning to deploy a distributed application environment with the core applications remaining on-premise and others being moved to the cloud (sales, HCM, etc.). In addition, there are other public cloud services, such as geolocation, payment, social networking, collaboration, and messaging, that drive additional context for the user when integrated with mobile applications.
These mashups deliver a final challenge to IT, which is that these applications must scale reliably with enterprise-grade performance. Many enterprises have not faced this challenge because they have only dealt with the tactical deployment of one or two mobile apps.
However, as the user volume grows from a predictable B2E volume to an unpredictable B2C volume, the ability of the infrastructure to scale and perform at an enterprise-grade becomes critical to providing an excellent quality of experience (QoE). A slow response for data from the backend will have end-users abandoning an application despite the best user interface, which will cripple the overall user experience.
Back-end inteGration: a major headache for enterprise mobility
by suhas uliyar
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
15dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
SOA AND MOBIlEWasnt the promise of Service-Oriented Architecture (SOA) to provide a high-performing and reliable services layer that integrates the back-end applications and abstracts them from the consumers of data (i.e. the multichannel clients)? So, why do you need a mobile enterprise application platform (MEAP) or Mobile Application Development Platform (MADP) in order to develop mobile enterprise applications?
The truth is you dont. MEAPs and MADPs came into existence to solve both the clientside development challenges as well as the back-end integration challenges. They do this by providing a consistent way to integrate with back-end systems and provide additional mobile services such as bidirectional sync for offline applications, push notifications, application provisioning, and version control.
SOA vendors were being used primarily for web applications or application-to-application integration. They were not focused on solving the mobile integration problems, such as providing a lightweight protocol for delivering output optimized for a mobile device. This led to fragmented, duplicated, and siloed architectures, one for mobile and one for the rest of the applications.
FUlFIllING THE PROMISE OF SOAThe middleware infrastructure designed for web-based applications can now support mobile clients by exposing existing services or reshaping existing services as RESTful APIs, which are the preferred mechanism to integrate services for mobile applications. Those features, which used to be unique to MADP vendor platforms (e.g. push messaging, sync, caching), are now often available as features of the middleware technology stack.
As data gets distributed and fragmented, orchestrating data between these back-end systems becomes a requirement. With user identity distributed, it becomes a critical requirement to have a federated identity with integration to SSO that supports different authentication protocols (such as OAuth 2.0 and SAML) along with traditional enterprise user stores (LDAP, AD). It is critical to have a middleware architecture that brings together an integrated identity management solution and an integration architecture that exposes services
that can be consumed by multiple channels. In addition, this infrastructure must have built-in reliability, scalability, and performance that can handle a growing and potentially unpredictable volume of traffic above your existing web traffic. This is what is going to make an enterprise successful in delivering effective multi-channel applications.With the move towards the cloud, Mobile-Backend-as-a-Service (MBaaS) provides a standard approach to deal with complex server-side programming. It provides a set of rich RESTFul interfaces for all the operations required by the mobile app and abstracts the backend from the mobile developer. MBaaS comes with built-in mobile-specific SDKs/APIs and services, custom and third party APIs, containers to build and orchestrate services, integrated security, analytics, monitoring, and management. With all these features, client developers can focus more on front-end applications by using their choice of mobile client development tools for native, web, or hybrid apps. This enables developers to simplify development by integrating with mobile-ready APIs exposed in the cloud.
The promise of SOA is being fulfilled, so now what? You might not need a MEAP or MADP that solves a niche problem. Mobile is no longer tactical; it is critical to business success. Businesses are looking for an enterprise-wide mobile-first strategy for B2E and B2C applications that leverages and complies with their back-end infrastructure for security and integration. Enterprises are looking to reduce cost of ownership and deliver to their business by reusing common components. They are always looking for ways to simplify enterprise mobility. After a decade of mainly front-end innovations, were finally starting to see solutions that also simplify back-end concerns.
W R I T T E N B Y
Suhas UliyarMr. Suhas Uliyar is a 19-year mobile industry veteran, known as a strategist and technology evangelist responsible for designing and developing enterprise mobile applications, middleware, and tools. Suhas is responsible for driving Oracles mobile strategy and vision. He is a seasoned executive with years of technical and business management experience in enterprise software. He has a successful track record as both an entrepreneur in small start-ups and as an executive with major industry leaders. Suhas has held leadership positions with SAP, Motorola Solutions, Spring Wireless, Dexterra (Antenna Software), and Micromuse (IBM).
moBIle DevelopmeNT FoRceS hARD
DecISIoNS ABouT WhAT FeATuReS To INcluDe FRom The BAcKeND.
moBIle IS NoT ABouT puTTINg WheelS oN The SySTem oF RecoRD AND
cAllINg IT moBIle.
WASNT The pRomISe
oF SeRvIce-oRIeNTeD
ARchITecTuRe (SoA) To
pRovIDe A hIgh-peRFoRmINg
AND RelIABle SeRvIceS
lAyeR ThAT INTegRATeS The
BAcK-eND ApplIcATIoNS AND
ABSTRAcTS Them FRom The
coNSumeRS oF DATA (I.e. The
mulTI-chANNel clIeNTS)?
-
www.bridgeit.mobi
A Different Kind
of HybridHTML5 Development
Access Native Features
Cross-platform Support
No Native Code
No App Store Submissions
No New Tools
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
17dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
Hybrids deliver native features using
web-based development techniques.
Conventional hybrids bundle the web
app into a native app, but BridgeIt
eliminates this requirement and opens new
possibilities.
hTml5: yeS, BuT...Hybrids use HTML5/CSS3/
JavaScript, but are typically
bundled with an embedded
browser into platform-specific
native apps. These apps are
installed through app stores
and run locally on the device.
BridgeIt apps are pure web
apps. The BridgeIt utility
augments the standard mobile
browser with native features
accessible directly from the
web app. Web deployment
eliminates external approvals,
and the BridgeIt utility is automatically
installed when required.
DevelopmeNT eASeBundling conventional hybrids requires
additional tooling and reduces developer
efficiency. Furthermore, the capabilities of
embedded browsers have lagged behind
best-in-class mobile
browsers like Safari and
Chrome. Developers
must use only the lowest
common capabilities of
the embedded browsers,
setting aside the
powerful new features of
HTML5/CSS3.
No bundling is required
with BridgeIt, and the
web app leverages
best-in-class browser
capabilities. The BridgeIt
utility augments the standard browser with
native features and is automatically installed
when required.
SImple DISTRIBuTIoNConventional hybrids are native apps
and are typically published to platform-
specific app stores. External approval and
publication processes are onerous and time
consuming, which increases support costs.
As web apps, BridgeIt hybrids leverage
server-based distribution. They are not
subject to app store submission processes or
approvals, and support costs are reduced.
bridgeit: NoT All hyBRIDS ARe cReATeD equAl
W R I T T e N B y
Steve MarykaCTO, ICEsoft Technologies
coNveNTIoNAl hyBRIDS BuNDle The WeB App INTo
A NATIve App, BuT BRIDgeIT
elImINATeS ThIS RequIRemeNT
AND opeNS NeW poSSIBIlITIeS.
TARgeTS
STReNgThS
cuSTomeR SucceSS SToRy
NoTABle cuSTomeRS
DeScRIpTIoN
FRee TRIAl Open source version available
uSeS Enterprise Apps (for internal use)
TWITTeR @icefaces phoNe (403) 663-3322
Automated device theming enables a single web application to adopt the look of the native mobile device it is viewed from
Extends the ICEfaces Ajax Push capabilities with Cloud Push, leveraging native platform push capabilities to deliver notifications even when the application is not active
Extends the ICEfaces framework with a suite of mobile controls for UI development
ICEmobile is a framework for developing cross-platform mobile web applications with Java EE and JSF. ICEmobile supports hybrid application development with the ICEmobile containers and integrates with the BridgeIt utility application.
A large parcel delivery company had a legacy application running on Java EE infrastructure, and was accessed by employees using desktop browsers. Evolving business demands required the functionality be extended to include external users/customers accessing the application via tablets and smart phones. Development and support costs associated with native mobile development were unacceptable, and app store publication was undesirable. ICEmobile enabled them to leverage legacy software investments and easily extend their existing desktop application into the mobile space. ICEmobiles suite of mobile JSF components simplified the application design, and minimized development and support costs. Additionally, ICEmobiles push and hybrid capabilities future proofed their product roadmap.
Aetna
FedEx
U.S. Steel
BNSF
Thermo Fisher Scientific
US Government
ICEmobile BY ICESOFTICEmobile is an easy and costeffective way to mobilize Java EE web applications. Go beyond HTML5.
Full pRoFIle lINK
dzone.com/r/ hkyXAdditional information in the vendor profile section of the guide
cATegoRymADp
WebHybridNative
TAgS -JAvAScRIpT- -JAvA- \-oN-pRemISe- -moBIle mIDDleWARe-- -IDe-
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
21dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
Data is critical to an organization, but
thats not news to anybody. Its not just
a by-product of doing business, it is the
business. Being able to access and digest
that data is a competitive edge. For many
years, it sat behind large CRT monitors and
enterprise grade firewalls. The data stayed
safe and sound in the data center. Laptops
were the first to challenge the system. VPN
connections arose to answer the outcry and
help keep data safely at home.
Then mobile showed up and knocked on the
door. Mobile devices with their silky smooth
designs and futuristic form factors that let
you access your email, approve workflows,
and close a sale.
KeepINg IT SAFeBuilding mobile apps is not the same as
developing desktop and web apps. Our
standardized tools buy us little to nothing
when it comes to mobile devices. So the
question becomes, how do I let my data
leave the nest, but make sure that it stays
safe and protected?
The TRADITIoNAl SeRvIceS lAyeRServices are the key
to securely unlocking
enterprise data on
mobile devices. We
used to call them web
services but now they
are known as APIs.
One of the difficult
things about services
is that they present
architectural challenges that are not easily
answered until you implement them. While
the services layer is a necessary abstraction,
its also an added level of complexity and
maintenance.
pAAS AND pRe-BuIlT coNNecTIvITyThe future of productivity in building
connected mobile apps is not in creating
more services and acquiring
more technical debt. The future
is in leveraging the productivity
features that PaaS offers, such as
pre-built connectors, to securely
expose enterprise data, thereby
allowing development teams to
concentrate on building world-
class applications.
For more information, please
visit: www.telerik.com/platform
moBIlITy and leAvINg The NeST
hoW Do I leT my DATA leAve The NeST, BuT mAKe
SuRe ThAT IT STAyS SAFe AND
pRoTecTeD?
W R I T T e N B y
Burke HollandProduct Manager, Telerik
TARgeTS
STReNgThS
cuSTomeR SucceSS SToRy
NoTABle cuSTomeRS
DeScRIpTIoN
FRee TRIAl 30-day free trial
uSeS Consumer AppsEnterprise Apps (for internal use)
TWITTeR @telerik phoNe (888) 365-2779
Includes a comprehensive mobile UI library
Supports all three development approaches: web, hybrid, and native
Integrates with Apache Cordova
Addresses the entire lifecycle of the project (from design to deployment)
Modular platform that can be integrated with other tools and services
Telerik Platform is a cross-platform solution that includes UI libraries for web, hybrid, and native development as well as a suite of integrated cloud services. It addresses the entire lifecycle of the app, and integrates with any development environment.
With a focus on technology and service, Paylocity is constantly striving to offer the latest tools and solutions to make payroll and HR processes easier. With the shift to a mobile-focused world, the company recognized the need for a mobile app that would enable their ESS users to view and make changes to their accounts via any mobile device. With Telerik Platform, Paylocity was able to create a secure cross-platform mobile app to serve its client-base of over 7000 organizations in less than 6 months.
Paylocity
Verizon
Ernst and Young
Symantec
HP
Microsoft
Telerik Platform BY TELERIKA modular platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native apps.
Full pRoFIle lINK
dzone.com/r/ plmaAdditional information in the vendor profile section of the guide
cATegoRymADp
WebHybridNative
TAgS -hoSTeD- -moBIle mIDDleWARe- -IDe- -veRSIoN mgmT-- -uSAge ANAlyTIcS-
-
22 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile
moBIle uX refining perceived performanceby andreW trice
Performance is critical when you are building apps for mobile devices. When using a device that is built for accomplishing tasks quickly and on the go, like a smartphone, performance is an even bigger concern than on desktops. Being users ourselves, we all understand this, but we also understand that users cant see an apps network timelines or latency scores. The users perception of application performance depends upon aesthetic design, feedback to the user, speed of information, and much more. All they see is the user experience you have crafted for them, so even if your performance metrics are great, your apps can still feel slow if you dont employ the right techniques in your code. In many ways, perceived performance is more important than actual performance. In this article, were going to focus on the users perception of performance.
Lets first examine two major use cases for mobile apps: accessing
information on the go, and entertainment. If you are accessing
information on the go, there is a good chance you are in a hurry
or youre on a limited-speed connection. You need the app to
give you the information you need as fast as possible. In the
case of entertainment, you just need the app to provide fluid
interaction. In this case, performance is part of the entertainment
factor. In both of these cases, the apps performance is not simply
characterized by how fast the app is processing information
behind the scenes. Rather, this extends into the apps design and
system architecture.
INSTANT FEEDBACkThe most immediate factor of an apps performance actually
has nothing to do with raw processing power. User feedback, or
some sort of response to user input, is probably the most critical
factor to having an app that seems to perform well. If you touch a
button, that button should immediately provide feedback to the
user. If you swipe across the screen to drag an object, that object
should follow the users touch immediately.
Most native components will handle user feedback (ie: button
states) for you. However, if you are building a mobile web or
hybrid application, it is extremely important that you build in
some sort of user feedback to inform your users that their input
has been received and you are performing some sort of action.
The button press case is extremely basic, but if you have a user
interface that doesnt acknowledge the user input, then there is
no way for the user to know that the input has been received.
Regardless of whether or not this app is actually slow, the user
will perceive the app as being slow or buggy simply because
there is nothing to let the user know that their input has been
received and that the app is preparing a response.
lOADING ANIMATIONSAfter youve tapped a button, does your app let the user know
that something is happening, or does the UI simply lock up until
the next piece of data is ready? If its possible (and in most cases,
it is), you should never lock up the user interface thread while
you are requesting data from a remote source. This is a major red
flag and users will immediately notice when the entire application
locks up and becomes unresponsive.
A better way of handling this would be to request data in a
background thread (so it does not lock up the UI) and present
the user with some sort of visual cue that an action is being
performed. By handling data in a background thread, the app
stays responsive and never feels like its freezing up. If youre
building a hybrid or mobile web app, dont worry; the browsers
XMLHttpRequest wont lock up your webviews UI, so this is less
of an issue.
Rather than just making your user wait until data is available
before changing views, you can change the user perception
and trick them into feeling that the app is faster by providing
some sort of feedback. It could be as simple as a spinner or a
progress bar, however, these have also been known to draw the
users attention to the fact that they are waiting. Alternatively,
you could create a loading view animation that slowly removes
the previous pages data or shows pieces of the new data as it is
loaded. Overall, you want to have some way of entertaining and
distracting the user while they wait. By engaging the user with
animation, you are changing the perceived performance and user
experience of the application, even if the loading time does not
actually change.
FAMIlIAR NATIvE PHYSICS AND GESTURESButtons and animations are great for any form factor, but the
features that make mobile so convenient and elegant to use
have always been the touch controls. There is a common set of
interface physics and gestures that all popular mobile platforms
share, including momentum scrolling, side swipes, pull-to-refresh,
and multi-touch zooming controls.
Its important for app designers to harness these mobile-specific
controls wherever they can, and they need to be snappy.
Natively built apps dont have too many issues with these built-in
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
23dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
controls, but web and hybrid apps can have issues recreating this
functionality. Luckily, there are tools and CSS controls that can help.
For implementing momentum scrolling, you can use the overflow-
scrolling: touch property on the container and then write some
JavaScript that only applies that class if the container is visible. The
JavaScript is necessary because that CSS property disables the
tap-the-top feature of mobile browsers that commonly sends you
back to the top of the page. For implementing gestures like pull-to-
refresh and zooming controls, there are plenty of great JavaScript
libraries that can help, such as Hook.js and Hammer.js.
HARNESS THE GPU In many cases, youll use animations in your mobile apps, especially
in the loading instances mentioned above, but how do you make
sure those animations are fluid and snappy? Obviously, stuttering
or choppy animations can be very problematic. They give the
user the feeling that the app is slow and buggy. This is one of the
major issues that people often complain about with HTML-based
applications. In native applications, this is less of an issue unless
you are doing something extremely complicated. Generally, native
animations are fast and smooth.
In HTML applications there are ways to make the app feel faster and
make animations smoother. Avoiding computationally-expensive
browser reflow operations is critical for making fluid animations.
Browser reflow operations occur when your contents size changes,
or the position of your content changes, causing it to impact the
layout of neighboring DOM elements. If you change width, height,
or top/bottom/left/right styles of a DOM element, this will trigger
browser reflow operations.
If you want to animate your content in HTML, you can use CSS
transitions or animations with the transform:translate3d (x,y,z)
style. This style forces rendering of your DOM content on the GPU
and can also be used to move or animate your content without
triggering those expensive browser reflow operations. This
technique can be used to achieve solid 50-60 frames per second
animations in mobile web experiences. However, it is also important
to make sure that the DOM elements you are animating dont
exceed the GPU maximum texture size. Otherwise, you could end
up with an annoying flicker in your animations, which completely
ruins the user experience.
PREEMPTIvE PERFORMANCEAnother technique that you can use to make your application feel
extremely fast is to preempt user actions before the user performs
them. For example, lets say you capture an image with your app.
You start uploading that image before the user has actually said
theyd like to upload the image. The user then enters a name and
description, and by the time the user hits the upload button the
image is already uploaded. Then, when the user does hit upload,
they will be amazed at how quickly the upload took place. This
is exactly what Instagram does in their app, and it is part of what
set Instagram apart from their competition early on. Preemption
doesnt work in every scenario. You dont want to aggressively load
data that may never be necessary, but it can work extremely well in
the cases where it does fit.
All DECISIONS MUST CONSIDER UXIn a nutshell, perceived performance is really all about
understanding how the user experiences UI performance, not the
actual performance metrics. You need to consider how the end
user is going to be impacted by every technical and architectural
decision that you make. If there is ever a situation where the user
needs to wait, then give them feedback to let them know that the
app is still working. Request data during an animation sequence,
or play animations while the app is doing something else in the
background. Preempt data loading if you can. If you cant, then
you might want to consider lazy-loading your data. If youre
building a web app, let the GPU handle the UI in any way possible.
Regardless of the interaction, it is critical to develop your apps in a
fashion that tailors the experience to the users delight.transitions or animations with the transform:translate3d (x,y,z) style. This style forces rendering of your DOM content on the GPU and can also be used to move or animate your content without triggering those expensive browser reflow operations. This technique can be used to achieve solid 5060 frames per second animations in mobile web experiences. However, it is also important to make sure that the DOM elements you are animating dont exceed the GPU maximum texture size. Otherwise, you could end up with an annoying flicker in your animations, which completely ruins the user experience.
W R I T T E N B Y
Andrew TriceAndrew Trice is a Technical Evangelist with Adobe Systems. He has more than a decade of experience designing, implementing, and delivering rich applications for the web, desktop, and mobile devices. He is an experienced architect, team leader, accomplished speaker, and published author, specializing in object-oriented principles, mobile development, real-time data systems, GIS, and data visualization.
Another technique that you can use to make your application feel extremely fast is to preempt user actions before the user performs them. This is exactly what Instagram does in their app, and it is part of what set
Instagram apart from their competition early on.
-
24 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile
the step-by-stepmoBIle ApplIcATIoN DevelopmeNT checKlIST
geNeRAl App plANNINg
F Write a statement of purpose or elevator pitch for your application.
F Gather expected user requirements (a survey of potential users could be helpful).
F Gather business requirements for the application.
F Examine the potential competition for your app (business model, strengths, weaknesses).
F Determine the IT resources required to support this application.
F Create a list of the core functionality for version 1.0 (Minimum Viable Product).
F Make a whiteboard drawing of the architecture.
F Decide if your app will be a native, web, or hybrid app (or if you will build multiple types).
F If your app is native or hybrid, determine the platforms for distribution.
F Determine if you will build a different app for different form factors (phone, tablet, TV, etc.).
F Decide on the development sourcing strategy (insourcing, outsourcing, or co-sourcing).
F Identify the team members and stakeholders for this project along with their responsibilities.
F Determine who will support the app when its finished.
F Collaborate with team members to build a structured and repeatable project calendar.
F Construct a marketing strategy in parallel with app development. Execute pre-release marketing.
eNTeRpRISe App plANNINg
F Ask employees what they would like to have in a mobile app.
F Identify processes that could be handled more efficiently with a mobile app.
F Identify data that could be monitored more often with a mobile app.
F Find out which systems mobile workers need to access frequently (e.g. internal web portals).
F Ensure your enterprise mobile systems have fast data access using authorized methods.
DeSIgN AND DevelopmeNT
F Harness design and development tools that will make your team as efficient and effective as possible.
F Compile a list of objects and actions for the application and their relation to each other.
F Reduce screen elements down to the bare essentials.
F Build wireframes for each screen in the app along with a navigation map.
F Build a functioning prototype with MVP features.
F Do usability tests on the prototype, covering every item on your user and business requirements lists.
SecuRITy
F Decide if your app will use custom tokens or security standards (e.g. SAML, OAuth).
F Determine if your app needs SSO for logging into multiple apps.
TeSTINg
F Prepare an appropriate on-device, real-time testing and debugging strategy.
F Determine which devices you need to acquire, then integrate them into the teams testing workflow.
F Have a plan for reacting quickly to issues on untested devices.
F Harness user simulation scripts and load testing tools to test user and business requirements in high traffic conditions.
F Log and visualize all appropriate data for easy pinpointing of problematic code.
F Ensure that your app meets the requirements for any target app stores.
F Conduct private beta testing with all of your employees (not just IT).
F Conduct beta tests with real-world users. Try giving out gift cards at a coffee shop to recruit testers.
lAuNch
F Determine a build and deployment process that lets you deploy updates early and often.
F Complete the tasks necessary for deployment to your target app stores.
F For non-app store distribution, prepare an app server for wireless distribution.
F Follow any platform requirements for non-app store distribution.
F Execute your marketing plans for launch.
F Monitor app performance and track new software bugs.
F Collect data on real-world usage and monitor feedback from customers.
F Continue to improve the app according to a roadmap based on customer behavior.
-
2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
25dzone.com/research/mobile | dzone.com | [email protected] | (919) 678-0300
In this section of the guide you will find profiles of the most
promising mobile development platforms and frameworks
to help you develop mobile apps more efficiently.
To view an extended profile of any product, you can use
the short-code link found at the bottom of each profile, or
simply go to dzone.com/research/mobile and enter in the
shortcode at the end of the link.
The SoluTIoNS DIRecToRy
Get easy access to full product profiles with this URL
m A D p
TAgS -JAvAScRIpT- -JAvA- -oBJecTIve-c- -c#-- -moBIle mIDDleWARe-
TARgeTS
SySTemS
uSeS cATegoRy MADP TWITTeR @phonegap
FRee TRIAl Open source solution
Allows developers to remotely build apps in the cloud using PhoneGap Build
Can instantly update apps without recompiling
Features an App Store for building apps without installing separate SDKs
Hundreds of plugins are available for accessing native device APIs
Cordova/PhonegapAndroidiOSWindows PhoneBlackBerry
Consumer Apps
Enterprise Apps (for internal use)
STReNgThS
PhoneGap lets you create native apps using HTML, CSS, and JavaScript for iOS, Android, Windows Phone, and more.
Adobe Phonegap BY ADOBE
Full pRoFIle lINK
dzone.com/r/ vq6x
WebHybrid
Native
TAgS -JAvAScRIpT- -oN-pRemISe- -hoSTeD- -moBIle mIDDleWARe-- -IDe-
TARgeTS
SySTemS
uSeS cATegoRy MADP TWITTeR @alphaSWcorp
FRee TRIAl 30-day free trial
Focus on front-end to back-end and prototype-to-production development for online and offline enterprise applications
Uses a single code base across all platforms, and integrates with several existing databases and web services
Offers a coding-optional approach to improve developer productivity
Responsive application design for both mobile and desktop
Cordova/Phonegap
Enterprise Apps (for internal use)
STReNgThS
Alpha Anywhere is a prototypetoproduction environment to develop and deploy enterpriselevel, crossplatform mobile and web business apps.
Alpha Anywhere BY ALPHA SOFTWARE
Full pRoFIle lINK
dzone.com/r/ xkyW
WebHybridNative
TAgS -JAvAScRIpT- -moBIle mIDDleWARe- -ReST + SoAp- -IDe-- -oAuTh2-
TARgeTS
SySTemS
uSeS cATegoRy MADP TWITTeR @appcelerator
FRee TRIAl Open source solution
Create rich native iOS, Android, hybrid, and mobile web apps from a single JavaScript-based SDK
Integrates with other Appcelerator tools such as Studio, Alloy, and Cloud Services to simplify the development process
Efficient code modules to reduce development time by allowing users to write less code
Built to create apps that scale with business needs
AndroidiOSWindows PhoneBlackberry
Consumer Apps
Enterprise Apps (for internal use)
STReNgThS
Build, test, package, and publish mobile apps using JavaScript and a single code base, without managing multiple toolkits or languages.
Appcelerator Titanium BY APPCELERATOR
Full pRoFIle lINK
dzone.com/r/ ysX9
WebHybridNative
-
26 2 0 1 4 G U I D E T O M O B I L E D E V E L O P M E N T
dzone.com/research/mobile m A D p
TAgS -JAvAScRIpT- -hoSTeD- -oN-pRemISe- -moBIle mIDDleWARe-- -IDe-
TARgeTS
SySTemS
uSeS cATegoRy MADP TWITTeR @apperyio
FRee TRIAl Full-featured free version
Visual, drag-and-drop UI builder for creating HTML5, jQuery Mobile, and PhoneGap apps
Integrated backend services (database, push, server code)
Connect to 3rd party APIs with visual data binding editor
Integration with enterprise data via APIs, Web Services, LDAP, or other custom data sourcesCordova/Phonegap
AndroidiOSWindows Phone
B2B Enterprise Apps
STReNgThS
Accelerate enterprise mobile app development with Appery.io, the cloudbased platform with visual development tools and integrated mBaaS.
Appery.io BY EXADEL
Full pRoFIle lINK
dzone.com/r/ 7quh
WebHybrid
Native
TAgS -JAvAScRIpT- -hoSTeD- -moBIle mIDDleWARe- -IDe-- -uSAge ANAlyTIcS-
TARgeTS
SySTemS
uSeScATegoRy MADP TWITTeR @appmachine
FRee TRIAl Free to use, but cannot publish apps without a license
Designer uses a drag-and-drop building block paradigm
Web design effort results in completely native code output
Extensible via JavaScript and custom web service integration
Built in CMS, analytics, and push notifications
Web crawler allows users to use existing materials and plugins from their site in their AppMachine app
AndroidiOS
Consumer Apps
Enterprise Apps (for internal use)
STReNgThS
AppMachine offers AppsasaService, a new codefree or codelite way to create custom mobile apps, both native and web.
AppMachine BY APPMACHINE
Full pRoFIle lINK
dzone.com/r/ jpgR
WebHybrid
Native
TAgS -JAvAScRIpT- -oN-pRemISe- -oAuTh2- -DRAg-N-DRop--
TARgeTS
SySTemS
uSeS cATegoRy MADP TWITTeR @BlackBerryDev
FRee TRIAl Open source solution
Built on open source Apache Cordova to provide cross-platform capabilities
Allows developers to reuse current JavaScript libraries or any public javascript libraries
Large network of supported developer tools, making it easier for developers to migrate to developing native BlackBerry apps
Allows developers to reuse many existing web assets when porting to systems such as iOS and Android
Cordova/PhonegapBlackberry
Consumer Apps
Enterprise Apps