Unit - II EMAD
Unit - II EMAD
Therefore, the increases in the number of mobile devices demand the need for mobile applications to
operate and perform functions smoothly.
Types of Mobile Application Development Frameworks:
While exploring the programming languages, frameworks, and a suitable platform for mobile application
development, you also have to explore the front-end development environment. If we look from the
coding perspective, you can choose to create your app in these three types of mobile apps;
For instance, in iOS, we have the iOS Software Development Kit (SDK) usually used with Xcode, an
IDE, and for native Android app development, Android SDK is used with Android Studio.
While he didn’t dismiss HTML5 entirely, it was pretty clear that he believes that, for now, the Facebook
iOS and Android native apps are superior. In response, the folks at Sencha cloned the native Facebook
app within their HTML5 mobile app framework. They then posted a video showing them side-by-side,
pointing out how in many ways the HTML5 app running inside the mobile browser outperformed the
native app, and was equally (if not more) usable. And this was all done nearly a year ago.
Therefore, if done right, it is possible to build great experiences that live within a mobile web browser.
Web-based apps are completely platform-agnostic, and the HTML5/CSS3/Javascript codebase is one that
is accessible by many developers and offers a very streamlined approach to app development.
These languages have been in the market for the past many years and have become standard languages
for mobile application development companies.
Kotlin:
Google announced in 2017 that it would support Kotlin as the alternative for Android programming.
Kotlin is a comparatively young native Android language that has the potential to replace Java. It has so
many features that Java doesn’t have and is considered as a perfect language to create Android apps. It
resolves many problems that Java has. Kotlin is one of the fastest-growing languages. Kotlin is 96%
used for new projects, and only 38% use it for pre-existing projects. More than a third of developers are
migrating their existing projects to Kotlin.
Swift:
Swift is now considered as the next generation iOS language. It was introduced by Apple in 2014 and
was available for mobile app development in 2015.
This language is outpacing Objective-C because it offers a more concise and clearer code. Currently,
Swift usage is 2.1 million developers globally. Swift is considered as an easier, simpler, and more
compact language for iOS app development. It’s really easy for Objective-C developers to move over
Swift. In Swift, you require fewer lines of code than to complete the same task in Objective-C. Swift’s
memory management system enables developers to focus on the logic rather than bothering about the
memory of each object.
If someone is looking for an iOS-specific development platform, then turn to Swift because Apple is
going to continue with it. So it’s going to be a must-know programming language for iOS developers.
React Native is famous for crafting a cross-platform mobile app. This platform uses ReactJS and
Javascript. React Native is a javascript framework built upon the React library. Facebook created both of
these.
React Native enables developers to deliver iOS and Android apps with the same code base. It uses native
components of Android and iOS internally.
A lot of entrepreneurs are using React Native for their business to make world-class applications. It’s
used by Facebook, Instagram, Bloomberg, Pinterest, Skype, Uber, Tesla, Walmart, Vogue, Wix, and many
others.
According to Stackoverflow, 66.7% of developers use Javascript in their work. This indicated that React
native is going to stay with us in 2020 as one of the most preferred cross-platform app development
languages.
Flutter is a free and open-source platform based on Dart language that enables continuous cross-platform
app development. The tech giant Google supports Flutter. It uses Dart, a simple and responsive, Object-
Oriented Programming Language, which is easy to learn.
Flutter is the only framework that provides reactive styles without using any Javascript bridge. This
framework is considered best for developing high-quality native interfaces for iOS and Android app in
minimal time.
Flutter is amongst the top preference of the Top mobile app development companies in India and
developers around the world.
Microsoft acquired Xamarin, and since then, it is an open-source framework. It’s a cross-platform
framework that enables developers to program in C# language. It’s a versatile platform that is used by
over 1.6 million developers from around the globe. Xamarin’s performance is excellent in comparison to
native mobile applications. This makes it a go-to option for many developers for the development of a
high-performance app with the native look and feel.
Thick / Thin Clients
The thickness of a client refers to how much processing is done and how much data is stored on the cli-
ent device versus the servers it interacts with. The more data and processing done, the thicker the client
becomes. For example, take two different calendar applications.
The first is a calendar “app” that lives on a smart phone. Most all the functions of the application, like
the interface, the search functions and the storage of events are all performed by the device itself. Only
occasionally does it go and check with the server to sync the data up. If the phone loses its Internet con-
nection, the app soldiers on. This is a thick client.
Our second calendar application is a web app. Most of the functions of the application are actually re-
quests made by the client, but performed on the server. Search, editing an event, sending an email re-
minder, these are all done in the cloud somewhere, and the results are sent to the device. The device
itself only handles a few key elements like displaying the interface and sending instructions. It works
fine with slow phones because the speed of the server is what matters most, but if the phone loses the
Internet, it’s game over. This is a thin client.
The most popular applications are often those that integrate with device hardware features such as GPS,
cameras, accelerometers, gyroscopes, sensors, and other fun bells and whistles. Generally speaking, mo-
bile devices will only grant use of these features to applications that live on the device. Given this, one
would think the inertia is swinging in the direction of mobile thick clients, and the explosion in app
popularity would seem to support that premise.
Enter HTML 5. It offers interoperability among browsers without using plug-ins like Microsoft Silver-
light or Adobe Flash. Among its many capabilities are some specific to mobile devices, such as:
• Geo-location support
• Client-side database storage
• Native support for audio and video (no more Flash)
• Offline application caching
These features will offer thin client mobile applications the ability to act more like thick client apps. Most
smartphone operating systems have native Webkit-based browsers with strong support for HTML 5. Mi-
crosoft just recently announced support for HTML 5 in the upcoming version of IE 9 Mobile, so support
for the as yet unfinished standard is on the rise. However, the W3C announced only last month that
the HTML 5 standard won’t be ready until 2014, so we may be a few more years away from thin clients
dominating the mobile landscape.
Here are some things to consider when devising your own plan for going mobile:
Thin Client
• Multi-platform-compatible
• Uses standard web technologies
• More cost-effective to develop (see previous point)
Thick Client
So, when building your own mobile or web-based app, ask yourself these questions:
If the answer to any of the above questions is no, start thinking about contingency plans for situations
wherein the mobile user’s experience may be less than optimal or they don’t have the hardware neces-
sary to run your app. No one likes an app—thick or thin—with usability and performance issues.
The difference between a good app and a bad app is usually the quality of its user experience (UX). A
good UX is what separates successful apps from unsuccessful ones. Today, mobile users expect a lot
from an app: fast loading time, ease of use and delight during interaction. If you want your app to be
successful, you must consider UX to be not just a minor aspect of design, but an essential component of
product strategy. There are many things to consider when designing for mobile.
Minimize Cognitive Load
Cognitive load refers here to the amount of brain power required to use the app. The human brain has a
limited amount of processing power, and when an app provides too much information at once, it might
overwhelm the user and make them abandon the task.
Decluttering
Cutting out the clutter is one of the major recommendations. Clutter is one of the worst enemies of good
design. By cluttering your interface, you overload users with too much information: Every added button,
image and icon makes the screen more complicated.
Clutter is terrible on desktop, but it’s far worse on mobile (simply because we don’t have as much real
estate on mobile devices as we do on desktops and laptops). It’s essential to get rid of anything in a
mobile design that isn’t absolutely necessary because reducing clutter will improve comprehension.
• Keep content to a minimum (present the user with only what they need to know).
• Keep interface elements to a minimum. A simple design will keep the user at ease with the prod-
uct.
• Use the technique of progressive disclosure to show more options.
Offload Tasks
Look for anything in the design that requires user effort (this might be entering data, making a decision,
etc.), and look for alternatives. For example, in some cases you can reuse previously entered data instead
of asking the user to type more or use already available information to set a smart default.
If a task contains a lot of steps and actions required from the user’s side, it’s better to divide such tasks
into a number of subtasks. This principle is extremely important in mobile design because you don’t want
to create too much complexity for the user at one time. One good example is a step-by-step checkout
flow in an e-commerce app, where the designer breaks down a complex checkout task into bite-sized
chunks, each requiring user action.
Chunking can also help to connect two different activities (such as browsing and purchasing). When a
flow is presented as a number of steps logically connected to each other, the user can more easily proceed
through it.
Familiar screens are screens that users see in many apps. Screens such as “Gettings started,” “What’s
new” and “Search results” have become de facto standards for mobile apps. They don’t require additional
explanation because users are already familiar with them. This allows users to use prior experience to
interact with the app, with no learning curve.
Minimize User Input
Typing on a small mobile screen isn’t the most comfortable experience. In fact, it’s often error-prone.
And the most common case of user input is filling out a form. Here are a few practical recommendations
to make this process easy:
• Keep forms as short as possible by removing any unnecessary fields. The app should ask for only
the bare minimum of information from the user.
• Provide input masks. Field masking is a technique that helps users format inputted text. A mask
appears once a user focuses on a field, and it formats the text automatically as the field is being
filled out, helping users to focus on the required data and to more easily notice errors.
• Use smart features such as autocomplete. For example, filling out an address field is often the
most problematic part of any registration form. Using tools like Place Autocomplete Address
Form (which uses both geo-location and address prefilling to provide accurate suggestions based
on the user’s exact location) enables users to enter their address with fewer keystrokes than they
would have to with a regular input field.
• Dynamically validate field values. It’s frustrating when, after submitting data, you have to go
back and correct mistakes. Whenever possible, check field values immediately after entry so that
users can correct them right away.
• Customize the keyboard for the type of query. Display a numeric keyboard when asking for phone
number and include the @ button when asking for an email address. Ensure that this feature is
implemented consistently throughout the app, rather than only for certain forms.
Proactively look for steps in the user journey where users might need help. For example, the screenshot
below shows a part where users need to provide specific information.
The most important element on the screen should have the most visual weight. Adding more weight to
an element is possible with font weight, size and color.
Avoid Jargon
Clear communication should always be a top priority in any mobile app. Use what you know about your
target audience to determine whether certain words or phrases are appropriate.
• Visual consistency
Typefaces, buttons and labels need to be consistent across the app.
• Functional consistency
Interactive elements should work similarly in all parts of your app.
• External consistency
Design should be consistent across multiple products. This way, the user can apply prior
knowledge when using another product.
Predictability is a fundamental principle of UX design. When things work in the way users predict, they
feel a stronger sense of control. Unlike on desktop, where users can use hover effects to understand
whether something is interactive or not, on mobile, users can check interactivity only by tapping on an
element. That’s why, with buttons and other interactive elements, it’s essential to think about how the
design communicates affordance. How do users understand an element as a button? Form should follow
function: The way an object looks tells users how to use it. Visual elements that look like buttons but
aren’t clickable will easily confuse users.
An improperly created “back” button can cause a lot of problems for users. Prevent situations when
tapping the “back” button in a multi-step process would take users all the way back to the home screen.
A good design makes it easier for users to go back and make corrections. When users know that they can
take a second look at data they’ve provided or options they’ve selected, this allows them to proceed with
ease.
To err is human. Errors occur when people engage with apps. Sometimes, they happen because the user
makes a mistake. Sometimes, they happen because the app fails. Whatever the cause, these errors and
how they are handled have a huge impact on the UX. Bad error handling paired with useless error mes-
sages can fill users with frustration and could be the reason why users abandon your app.
Take an error-state screen from Spotify as an example. It doesn’t help users understand the context and
doesn’t help them find the answer to the question, “What can I do about it?”
Don’t assume users are tech-savvy enough to figure things out. Always tell people what’s wrong in plain
language. Each error message should tell users:
Accessible design allows users of all abilities to use products successfully. Consider how users with
vision loss, hearing loss and other disabilities can interact with your app.
Be Aware Of Color-Blindness
4.5% of the global population experience color-blindness (that’s 1 in 12 men and 1 in 200 women), 4%
suffer from low vision (1 in 30 people), and 0.6% are blind (1 in 188 people). It’s easy to forget that
we’re designing for this group of users because most designers don’t experience such problems.
Let me give you a simple example. Success and error messages in mobile forms are often colored green
and red, respectively. But red and green are the colors most affected by color-vision deficiency (these
colors can be difficult to distinguish for people with deuteranopia or protanopia). Most probably you’ve
seen the following error message when filling out a form: “The fields marked in red are required”? While
it might not seem like a big thing, this error message combined with the form in the example below can
be an extremely frustrating experience for people who have color-vision deficiency.
As the W3C’s guidelines state, color shouldn’t be used as the only visual means of conveying information,
indicating an action, prompting a response or distinguishing a visual element. It’s important to use other
visual signifiers to ensure that users will be able to interact with an interface.
The use of icons and labels to show which fields are invalid better communicates the information to a
color-blind user.
Users who suffer from motion sickness often turn off the animated effects in their OS settings. When the
option to reduce motion is enabled in accessibility preferences, your app should minimize or eliminate
its own animations.
Helping users navigate should be a high priority for every app. All the cool features and compelling
content that your app has won’t matter if people can’t find them; also, if it takes too much time or effort
to discover how to navigate your product, chances are you’re just going to lose users. Users should be
able to explore the app intuitively and to complete all primary tasks without any explanation.
It’s better to use standard navigation patterns, such as the tab bar (for iOS) and the navigation drawer
(for Android). The majority of users are familiar with both navigation patterns and will intuitively know
how to get around your app.
Prioritize navigation based on the way users interact with your app. Assign different priority levels (high,
medium, low) to common user tasks. Give prominence in the UI to paths and destinations with high
priority levels and frequent use. Use those paths to define your navigation. Organize your information
structure in a way that requires a minimum number of taps, swipes and screens.
When you choose a primary navigation pattern for your app, use it consistently. There shouldn’t be a
situation in which part of your app has a tab bar, while another part has a side drawer.
Make Navigation Visible
As Jakob Nielsen says, recognizing something is easier than remembering it. Minimize the user’s
memory load by making actions and options visible. Navigation should be available at all times, not just
when we anticipate that the user needs it.
Failing to indicate the current location is a very common problem of many mobile app menus. “Where
am I?” is one of the fundamental question’s users need to answer in order to successfully navigate. People
should know where they are in your app at any moment.
Animation is the best tool to describe state transitions. It helps users comprehend a state change in the
page’s layout, what has triggered the change and how to initiate the change again when needed.
Using gestures in interaction design can be tempting. But in most cases, it’s better to avoid this tempta-
tion. When gestures are used as a primary navigation option, they can cause a terrible UX. Why? Because
gestures are hidden controls.
As Thomas Joos points out in his article “Beyond the Button: Embracing the Gesture-Driven Interface,”
the biggest downside of using gestures in a user interface is the learning curve. Every time a visible
control is replaced with a gesture, the app’s learning curve goes up. This happens because gestures have
lower discoverability — they are always hidden, and people need to be able to identify these options in
order to use them. That’s why it’s essential to use only widely accepted gestures (the ones that users
expect in your app).
Load just enough content to fill the screen when a page opens. Content available on scroll should continue
to load in the background. The benefit of this approach is that users will be engaged in reading the initial
content and, in some cases, won’t even notice that content is still loading.
Make It Clear When Loading Is Occuring
A blank or static screen that users see when content is loading can make it seem like your app is frozen,
resulting in confusion and frustration, and potentially causing people to leave your app. At a minimum,
show a loading spinner that makes it clear that something is happening. For a longer wait time (more
than 10 seconds), it’s essential to display a progress bar so that the user can gauge how long they’ll be
waiting.
If an app gives users something interesting to look at while waiting, users will pay less attention to the
wait itself. Thus, to ensure people don’t get bored while waiting for something to happen, offer them a
distraction. A fine animated waiting indicator can retain users’ attention while they wait.
Skeleton Screens
Skeleton screens (i.e. temporary information containers) are essentially a blank version of a page into
which information is gradually loaded. A skeleton screen would appear the moment your app starts load-
ing data, giving users the impression that your app is fast and responsive. Unlike a loading indicator,
which just conveys that something is happening, a skeleton screen focuses on actual progress.
Content plays a significant role in design. In most cases, the primary reason why people use an app is the
content it provides. But it’s not enough just to have clear, well-crafted content. The content has to be
easy to digest.
The key to mobile typography is readability and legibility. If users can’t read your content, there’s no
point in offering content in the first place.
• Font size
Generally, anything smaller than 16 pixels (or 11 points) is challenging to read on any screen.
• Font family
Most users prefer a clear, easy-to-read font. A safe bet is the system’s default typeface (Apple
iOS uses the San Francisco font; Google Android uses Roboto).
• Contrast
Light-colored text (such as light gray) might look aesthetically appealing, but users will have a
hard time reading it, especially against a light background. Make sure there is plenty of contrast
between the font and the background for easy readability.
The rise of devices with high-resolution screens sets a bar for the quality of images. Images shouldn’t
appear pixelated on HD screens.
Images should always appear in the right aspect ratio, so that they don’t look distorted. Images that are
stretched too wide or too long just to fit in a space will look unappealing and out of place.
The latest challenge many mobile designers face is optimizing the UX for the iPhone X. Designing for
the iPhone X requires a different size of artboard that any other iPhone (you’ll need 375 x 812-point
resolution images at 3x).
(Image credit: Apple)
Design For Touch
Designing for touch has a goal of reducing the number of incorrect inputs and making interaction with
an app more comfortable.
When you’re designing actionable elements in a mobile interface, it’s vital to make targets big enough
so that they’re easy for users to tap. Mistaken taps often happen due to small touch controls.
Source: https://www.smashingmagazine.com/2018/02/comprehensive-guide-to-mobile-app-design/
What is Client Server Application?
The client server application is a form of computing. The client server application is software available
on the clients’ computer that generates requests to a remote server. Client server application divides tasks
and workload between servers and clients, which are either found in the same system or they communi-
cate through a computer network over the internet. The client is dependent on sending a request to other
programs, for accessing a service made by the server.
The clients from their respective devices request a file or an application from the remote server, the server
then further hears the request made by the client and verifies the credentials, if everything is accepted
then the request requested file or application is served to the client. The communication between the
client and the user is two-way communication. The server can connect with the client to ensure that the
client has the necessary update or when the client required anything. Once the server has done its job it
loses the connection with the client to save the bond with the space on the network.
The client-server communications are usually permitted by the TCP/IP protocol. The requests made by
the client are organized and prioritized in a scheduling format, which in turn helps in coping with receiv-
ing requests. Popular client server applications are email, the worldwide web, and network printing. In
client server application data can be accessed efficiently even with the client server not being within
proximity.
The web application is also known as a web app. It is an application software that runs on a web server.
The web application is accessed by the client via a web browser with an active internet connection to
perform tasks. The web application allows businesses a cost-effective way of communication to ex-
change information. It makes transactions fast, safe, and secure.
The web application needs a web server to handle the requests made by the client. It often saves the
required information requested by the client to perform the task efficiently. The user requests for a par-
ticular data or information to the web server over the internet, the web server then further forwards the
request to the required web application server.
The web application then performs the requested tasks and generates the result of the requested task and
serves the task results to the web server. The web server then communicates back with the client and
displays the information.
The web application includes a variety of things such as online forms, shopping carts, file scanning, file
conversion, etc. web application can run on several platforms until the browser is suitable. All the clients
have a similar version. The communication in a web application is accessible from anywhere.
Parameter of
Client Server Application Web Application
Comparison
Mobile application development poses many challenges such as usability, security, integration, connec-
tivity and speed. Rapid development of these complex applications, if not carefully executed, can quickly
lead into major support issues.
Various platform options are available for developing applications targeted for iOS, Android and Win-
dows mobile devices. Mobile applications are classified into different types based on the mobile devel-
opment architecture employed to create them.
best option for mobile app development. There a number of factors to consider including:
• Target audience – who will be using the app?
• Target platforms – what devices will be targeted?
• App features and functionality – what features will be in the app? What hardware features (mic,
camera, compass, gps, etc.) will be used
• Timeline and budget – how fast do you need an app and how much are you willing to pay?
• Developer skills – what languages and platforms do your developers already know how to use?
The client architecture options can be broken down into a couple different areas,
Native Apps
Native apps are binary executable applications that are stored on and run locally on the device. Native
apps usually work just like any other built-in app (mail or web browser, for example) and have full access
to the device APIs and features, as provided by the vendor. Native apps are usually obtained via an app
store (i.e. the iOS App Store or Android Marketplace), though can also be obtained via enterprise or ad-
hoc deployment depending upon the platform. Native apps are also usually updated via an app store (or
similar) and there can be a lead time and approval process involved before updates can be deployed to
end users.
Native apps are usually developed in the default language of their respective mobile platform, for exam-
ple – Objective-C on iOS, Java on Android, and C# on Windows Phone 7. As native apps are usually
written using a programming language, framework, and tools specific to a single mobile platform – they
cannot be used on other mobile platforms. So, perhaps an obvious example – but Android apps can’t run
on iOS and vice-versa.
Mobile web applications run inside and are (usually) accessed via visiting a URL in the web browser on
a mobile device. Depending on the platform, mobile web apps can also usually be launched via an icon
from the home screen if the user chooses to “install” or bookmark the web app, similar to how a native
app is launched. Mobile web apps are built using HTML, JavaScript, and CSS – and they may or may
not make use of HTML5 (for advanced interactions) or a javascript framework that eases mobile web
development, such as jQuery Mobile or Sencha Touch. Mobile web apps can usually mimic the look and
feel of a native app, though they have less access to device features and APIs than a native app, as the
app is constrained by running within the web browser. As the code for a mobile web app is run on a web
server and not distributed via any app store, the code can be freely updated and redeployed without any
submission process or approval from an app store vendor.
“Hybrid” mobile apps cover a couple different, similar architecture options – the common thread between
them is that they are largely based on web technology (i.e. HTML/CSS/JavaScript) running within a
native app, mimicking the look and feel of a native app. All native app frameworks include capabilities
for displaying web-based content within an app (i.e. the UIWebView in iOS), and hybrid apps make use
of this functionality to display web content within a native app wrapper. The web content (images,
HTML, JavaScript, etc.) making up the app can either be packaged up and stored locally within the app,
or it can be accessed from a web server. The native part of the application is able to fully access device-
specific APIs and hardware features that a web application doesn’t normally have access to. The most
common way to build a hybrid app is to put web content within a native “wrapper” app – app screens
can then either be completely web-based or a combination of both web and native screens. As hybrid
apps are written within a native app shell – they can also be distributed via the app stores. The Facebook
app on most platforms is a good example of a hybrid app – combining web views with native views in
order to display dynamic content, like the news feed.
Deployment
Native and hybrid apps can be downloaded and installed directly from an “app store” on most modern
platforms, which provides a potential marketing boost and an easy way for potential users to discover
and download apps. The vendor’s app store is then also responsible for alerting users and deploying
updates to apps. However, one issue with app stores is the inevitable lead time involved in waiting for
approval of new apps and app updates, which can take a week or more depending on the time of year. If
delayed updates or approvals would be an issue for your app, you may want to consider a mobile web
app instead.
Native and hybrid apps can also be deployed to internal corporate users via “enterprise deployment”, by
a mobile device management (MDM) solution or an internal “app store”.
Cost and Timeline
Cost and timeline are usually the most important factors in most software projects. Native applications
have to be completely re-written between platforms and thus have the highest cost if you plan on building
an app on multiple platforms. In a perfect world where mobile web app code works perfectly across all
platforms, mobile web apps would theoretically be the lowest cost option for cross-platform develop-
ment. Unfortunately, a significant amount of time is often spent at the end of a mobile web app project
ironing out inconsistencies and performance across different platforms usually increasing the cost beyond
that of building a native app on a single platform. Nonetheless, developing a single codebase will always
be less costly than developing three separate codebases. For hybrid apps, only the native portion of the
app must be re-written between platforms, placing the cost of building cross-platform hybrid apps some-
where in the middle between native apps (highest cost) and mobile web apps (lowest cost).
Architecture Selection
Each architecture option works best for different kinds of applications. Native applications currently
work best for:
• Performance-intensive apps
• Apps with offline or disconnected requirements
• Games or apps with rich visuals
• Apps that require background processing
• Apps requiring heavy interaction with local data or device hardware
Native apps also work well for marquee applications that can’t compromise on user experience or per-
formance, where cost savings and productivity gains from cross-platform code sharing is not a goal.
Native apps also make sense if only a single platform or device is being targeted, where there is no reason
to re-use code on other platforms.
Hybrid and Mobile Web applications work well for business and content applications, and apps with
more basic user interface and functionality requirements. They both also work well for apps targeting
multiple platforms. Hybrid apps work well for adding native functionality to existing mobile web apps,
or simply creating a native wrapper around a mobile web site. Mobile web apps also work well for cre-
ating a simple mobile-optimized version of an existing web site.
Performance
The JavaScript code used in a mobile web or hybrid app is being interpreted by the web browser on the
device, and thus runs slower than compiled, native code used in a native app in most cases – though
JavaScript performance has seen massive gains in recent years, and will probably continue to improve.
Processing done with native code in a native app will execute faster than the same processing in JavaS-
cript in a mobile web or hybrid app. Though, hybrid apps have an advantage here in that they can make
use of both native and web-based code – processing can be offloaded to native code if required.