Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 18

University for Information Science and Technology

“St. Paul the Apostle”

Final Project 1:
Cross-platform vs Native App
Development

Mentor: Made by:


Research Associate Dijana C. Bogatinoska Marija Trpenoska, 853, CNS

Ohrid, 2020
Abstract

This is a project about Cross-platform vs Native App Development, and I choose this topic
because the mobile applications have become an important part of our everyday life and
one of the most important decision for mobile applications is to either develop it for a
specific platform or a cross-platform application compatible with different mobile
operating systems. For this project, I have made little research first of all about the
importance of the mobile application development and some fundamental issues that have
to be discussed before starting developing an mobile application, also what to consider in
choosing the right mobile app development approach, some advantages and disadvantages
of cross-platform and native app development and some frameworks.

Keywords:

Cross-platform, Native app, Mobile applications.


Table of Contents
Introduction......................................................................................................................................................... 1

Choosing the Right Mobile App Development Approach.................................................................2

Cross-Platform Development........................................................................................................................ 3
Cross-Platform App Frameworks................................................................................................................4
v React Native............................................................................................................................................. 5

v Ionic............................................................................................................................................................. 6

v Flutter......................................................................................................................................................... 7

v Cordova...................................................................................................................................................... 8

Native App Development................................................................................................................................. 9


v Java............................................................................................................................................................ 10

v Kotlin........................................................................................................................................................ 11

v Swift.......................................................................................................................................................... 12

Native vs. Cross-Platform Mobile App Development........................................................................ 13


Conclusion........................................................................................................................................................... 14

References........................................................................................................................................................... 15
Introduction

In the past few years mobile application development is becoming one of the most
important skills that a developer can possess and the mobile application development
is of great importance because a mobile application can reinforce brand value, catch the
attention of audience and an effectively designed and developed application can help
sustain the brand image with a lasting value. With an application, any business owner
can seamlessly and easily connect and collaborate with their target audience. Most of
the customers who are modern and catering to the changing demands of time own a
smartphone, which means building an application offers extended brand visibility. Most
mobile applications are available for all platforms thereby it assures extended scope of
marketing by helping pinpoint greater set of audience. Developing an application can
fruitfully connect you with customers on the go because a mobile stay with the
audience, where they go, a mobile goes with them. So, it is a mobile marketing channel
as well which promotes itself everywhere and for a user, a mobile application
development is of great importance.
Mobile applications send information to their customers using notification.
Therefore, when there is a new launch, a new feature added, or rewards and discounts
can be discussed and informed to audiences. Mobile devices are scaling new heights in
terms of demands. With the emergence of super speed data connection at a
considerably low tariffs and the availability of smartphone with important features
make these a very vital ingredient for continued business revenue generation. So, if you
are a business owner looking to improve revenue, designing applications that work is
very important.
Deciding to create a mobile application for your business, you will face several
fundamental issues that have to be discussed before starting. One of them and the most
important decisions to make is choosing between native or cross-platform mobile
development. The choice of going with either depends on project requirements and the
skills of the developers involved. Native applications are still the best choice when it

1
comes to user experience and performance, while they are more costly, you will be at
ease with lower defect rates and better visuals. On the other hand, cross-platform
applications are easy and quick to build, but it will take more effort to deliver an
equivalent user experience on the respective platform. And in this project, we will
explore both options and weigh the pros and cons of each.

Choosing the Right Mobile App Development Approach

Besides all the benefits of mobile application development also there are the number
of challenges specific to this activity that were not present in traditional software
development. There are just some of the aspects that engineers have to consider such
as the diversity of platforms, programming languages, and development tools, as well
as device heterogeneity as regards computation power, storage and battery life. But
also the success of the application for mobile devices in many case it depends on its
popularity and in order to achieve that it should be possible to run on different
platforms.
In the past years have been proposed various methodologies for developing mobile
applications like the native approach and several multi-platform development
approaches like web, hybrid, interpreted and cross-compilation. Where the native
requires the development of specific applications for each platform, with parallel
development projects, using specific programming languages and tools for each
platform. On the other hand, multi-platform approaches allow generating applications
that can be run in more than one platform and produced within a single development
project. But in addition to the choice of development approach, there are other
difficulties to be considered in relation to the limitations posed by mobile devices such
as battery life, computation power and storage space are non-functional requirements
that significantly affect the decision of the end users to install or keep a mobile
application in their smartphones and it is essential that developers consider a limited

2
use of storage space to attract more users. There are many challenges in developing
mobile services and applications and also there is a great variety of mobile standards,
operating systems on different devices and often unfortunately, one application can
work on one cell phone very well, while it does not work on the other.

Cross-Platform Development

In the world of mobile application development there are different device platforms
that you have to build for such as Apple and Android. The applications for each of these
platforms must be built separately because each operating system uses a different code
language not recognized by the others.

Cross-platform app development is regarded as one of the most popular software


development trends, and using this approach allows companies to save time, money,
and effort. Cross-platform application development is about building a single
application that can run on various operating systems, instead of developing different
application versions for each platform. The idea of cross-platform development is that a
software application or product should work well in more than one specific digital
habitat. Cross-platform applications can be categorized in different ways based on how
they were developed and there are four primary categories: mobile web applications,
hybrid applications, cross-compiled applications, and interpreted applications. There
are also some of the fundamental strategies for cross-platform development include
compiling different versions of the same program for different operating systems, or in
other cases, the use of sub-tree files to apply or fit the product to different operating
systems. Another major approach is to make the program abstract at certain levels in
order to accommodate different software environments. Software like this can be said
to be "platform agnostic" in that it doesn't value or support one platform over another.

3
Thanks to cross-platform mobile application development, companies now need to
invest just once to get their application developed as opposed to earlier times when
they had to spend heavily on different tools and technologies. They no longer need to
spend on developing applications for every individual platform separately. There are a
number of technologies, these days offering a cross-platform solution that makes it
easier for developers to make changes. Also instead of writing fresh codes for every
platform, developers can reuse the same code across all platforms. Increased
development speed, it is one of the best advantages of cross-platform mobile app
development which, results in the product reaching the market sooner.
Also performance is one of the most important characteristics of an application and
cross-platform applications have integration challenges with their target operating
systems. It is because of inconsistent communication between device’s native and non-
native components and also cross-platform applications have to adapt their design and
functionalities not only to specific devices but also to platforms, which have many
differences.

Cross-Platform Application Frameworks

Mobile applications are increasingly realized by using a cross-platform development


framework and those frameworks made the development process much more easier.
Using such frameworks, code is written once but the app can be deployed to multiple
platforms. Due to the large number of frameworks, in the following part, you can find
out some information about some of these well-known cross-platform frameworks
such as : React Native, Ionic, Flutter and Apache Cordova.

4
v React Native

React Native is a popular JavaScript-based mobile application framework that allows


you to build natively-rendered mobile applications for iOS and Android. The framework
lets you create an application for various platforms by using the same codebase. React
Native is mobile application development framework which has been successfully
adopted by hundreds of businesses worldwide, including Microsoft, and Facebook.

The main purpose of React Native is simple, a developer should not require the
knowledge or need to spend superfluous time in order to create a mobile application
since at least two applications need to be developed in order to support both iOS and
Android. Since different platforms have different looks, feels, and capabilities, there
cannot be an application which is homogeneous on all operating systems. However,
since it is the graphical interface that differs, the development could base on the same
language but have the graphics be rendered differently depending on the targeted
platform and be real native components.

The issues of mobile cross-platform developments can be minimized using React


Native framework because the application development itself allows the native
programming languages to overtake at any time when complex requirements need to
be implemented. The benefit of using this framework is the reuse of components which
are compiled to native within the framework itself without requiring Web View
components. This will directly increase the performance including speed, features,
native feel and look.

5
v Ionic

Another popular framework which is popular choice for mobile application


development is Ionic and by using Ionic framework, developers can create a native-
looking mobile application with web technologies languages such as HTML, CSS,
JavaScript.

Ionic users can build and upload their application to the marketplace without any cost
because Ionic is an open source. For building the application from web content, Ionic
chooses Apache Cordova to build on top which it gives Ionic abilities to simplify mobile
application development as well as improving user interface and user experiences. The
Ionic framework also built with AngularJS this widely-used and well-tested framework
allows Ionic user to create a Single Page Application, and easier to organize. Each of
mobile platform has their requirements on UI components and in order to help the user
save time with that, Ionic provides a ready-made UI for mobile components, and it
automatically applied based on the platform build. Ionic also provides JavaScript
features for developers, which is essential for building an Ionic application. Some of
these JavaScript features are Modal, Slide box, Action sheet, Sidebar, tabs, lists and so
on. As mentioned above, again, all the JavaScript are built with AngularJS.

Ionic saves businesses time and resources while building cross-platform applications
that represent most of the benefits of native alternatives and this is achieved by
platform adaptation being so convenient. Rather than having to develop a separate
codebase for iOS, Android, and the web, Ionic interconnects a single source of code. Also
there are plenty of UI component available and easy to use such as cards, buttons,
toggles, segments, modals, inputs, lists, row/column grid, etc. and lots of plugins that
allow the use of smartphone like cameras, fingerprint scanners, geolocation, sending
analytics to Firebase, push notifications, and deep links. On the other side we have as a
downside that native plugins can be a problem if there is a conflict between two plugins
or a bug in any of them. Also debugging can be challenging because sometimes an error

6
messages can be unclear, and can be difficult to figure out where the error is coming
from.

v Flutter

Flutter is another open source and free cross-platform framework for creating native
interfaces for Android as well as iOS with a single codebase. It is more of a software
development kit comprising all the tools and graphics used in application development,
and it has its own graphic engine which is called Skia and apart from developing cross-
platform applications, it also helps in modifying widgets.

Flutter renders every view components using its own high-performance rendering
engine. This nature provides possibility to build applications that are as high-
performance as native applications can be. Flutter supports stateful hot-reload while
developing, which is considered as a major factor to boost development cycle and in
Flutter, all applications are written with Dart which is a programming language that is
developed and maintained by Google and it is widely used inside of Google and it has
been proved to have the capability to develop massive web applications, such as
AdWords. Flutter framework provides a modern, reactive framework, and a rich set of
platform, layout and foundation widgets.

Some of the good sides of Flutter are that it offers hot reload functionality that allows
you for instant updates without the need for plugins, and also allows you to view
updates in real-time. So, if you face an error while running the code, the framework lets
you fix it immediately and to carry on without having to restart it. With hot reload, you
can improve your productivity and it also allows for experimentation without lengthy
delays and assists with fast iterations. Also Flutter has ready-designed and custom
widgets which are used to create an excellent app interface and its appearance. While
many approaches could be utilized by different objects like controllers, views, and

7
layout, this framework features a unified and consistent object model and every object
in this tool is a widget so we have fonts, color schemes, menus, buttons, and padding
also. By combining the widgets to form layouts, you can utilize widgets on any
customization level. The widgets of Flutter are consistent and have extensive
capabilities.
Because Flutter is a new cross-platform application development framework and many
Flutter functions are in alpha and beta testing it may not always work properly. In
addition, you cannot get the necessary functions in the current library in some cases,
because the platform is still being finalized. Also some time will be needed in order
Flutter to create the necessary tools, expand functionality and develop the community.
As another downside we have that Flutter is a Google product and then there will be
problems with support for iOS applications, because if most of the SDK functions on
Android work correctly, then there will be problems with iOS.

v Cordova

Apache Cordova is a well-known open source framework developed for supporting


hybrid mobile applications using web technologies such as HTML, CSS and JavaScript.

This framework is widely adapted by many software companies because it overcomes


the limitations of HTML and has a native feel and look and applications developed with
this framework are supported by Android, iPhone, Palm, Windows Phone, and
Blackberry. Apache Cordova helps developers developing an application by using the
properties of the native resources of a device. Then the application can access powerful
native features like a phone’s camera, accelerometer, compass, messages, contacts,
geolocation, network, notifications and media storage, also this framework it supports
multiple plugins and libraries which allow extending functionalities with JavaScript
codebase and under this framework many tools for development are supported

8
including Ionic SDK, Adobe Phone Gap, Visual Studio allowing developers to have
multiple selection of tools for developments.

Apache Cordova is also a cost-effective technology to build a mobile application in that


it leverages high quality and multiple sets of features as well as providing the tools
required to reduce development time. Once a developer built the Apache Cordova
application, then it can deploy it everywhere and submit it to all of the platforms. So,
you can save a lot of development money, efforts and time by not building the native
apps using different programming language for each platform.
Despite many benefits, this framework tends to have a slower performance compare to
native especially when many plugins are used. The graphic user interface (GUI) and
back end functionalities can be implemented similar to native but extra effort is
required to implement the graphic user interface for different mobile screen sizes.
Apache Cordova have less consumption of memory, power, and CPU, because it does
not have a dedicated user interface component.

Native App Development

As another popular software development trend we have native app development. So


Native applications are developed by using individual native languages and usually
target one specific platform. For instance, Java programming language is used to
develop Android applications while Swift based objective C is used to develop iOS
applications. Native applications are more difficult to develop and require a high level
of experience and technological knowledge than other types of applications. From the
end user perspective, native applications provide the richest user experience, the
source code is efficient, with fast performance, consistent look and feel and full access
to the underlying platform hardware and data.

9
There are several reasons why the native application is a traditional standard in the
mobile industry. First, this type of application offers a full device integration which
makes it easier to access device’s built-in features such as GPS, camera, microphone and
so on. Also, since the application is designed for one specific framework, developers can
fully utilize all the native APIs and features without any add-on. Another advantage of
the native application is its brilliant performance which can enhance user experience.
But, choosing native mobile application may not be an adequate choice for many
circumstances because of its disadvantages. The main drawback of this application type
is rooted in programming language because native languages are practically difficult to
learn which means companies need developers with high expertise.
Also, since the native mobile app is platform-specific, none of the code can be reused
which requires a separate version of the code base for the different operating system.
These difficulties result in high development cost and much bigger time consumption
than developing cross-platform applications.

v Java
Java is known as one of the most liked programming languages and it is an official
Android development object-oriented programming language.

With in-built open-source libraries readily available for users to choose from, Java is
easy to handle and offers the best documentation and community support. With Java’s
vibrant spectrum of features, you can develop the best cross-platform applications,
android apps, games, server applications, embedded space, websites, and more.
Popular for code reusability and portability Java codes can run in multiple
environments, virtual machines, browsers, and different platforms. Java applications
are supposed to be more scalable, flexible, and extensible and the rich Java library of
design patterns and other best practices help Java developers in designing flexible and
scalable Java applications. Some of its open-source components like Spring can be used
to produce more adaptable applications. The platform independent nature has made

10
Java the most popular and adaptable programming language and also the java
programmers can reuse the pre-written codes and the code can be re-used to develop
other similar featured Java applications.
One of the most significant advantages of Java is its ability to move easily from one
computer system to another. The ability to run the same program on many different
systems is crucial to World Wide Web software, and Java succeeds at this by being
platform-independent at both the source and binary levels.
On the other hand, Java takes comparatively more memory and is quite slower than
other intrinsic programming languages. Java requires a critical or significant measure
of memory space when contrasted with different dialects like C and C++. Java is
memory-consuming and significantly slower than natively compiled languages and in
Java, memory is managed through garbage collection, whenever the garbage collector
runs, it affects the performance of the application. This is because all other threads in
the have to be stopped to allow the garbage collector thread to work.

v Kotlin
Kotlin is a platform independent language which targets all platforms and its native
code runs on multiple platforms. Kotlin is a statistically typed programming language
that supports the Java virtual machine (JVM) and can also be compiled with JavaScript
source code

It has quite a concise and perceptive syntax which eventually increases the efficiency,
and the best part is that because of the clarity and ease it offers, there are much fewer
bugs to find in the code. Also Kotlin can be used almost everywhere Java is used today
for server-side development, Android apps, and much more and also works great with
all existing Java libraries and frameworks and runs with almost the same level of
performance as Java. You can use Kotlin and Java files in the same project, and they will
work nicely together. You won’t run into problems when you need to extend Java
classes in Kotlin or annotate the methods and fields of a class in a certain way. And the

11
benefit is that the systems code will be more compact, more reliable, and easier to
maintain. The big advantage of Kotlin in this environment is its seamless
interoperability with existing Java code and the only downside that developers may
face with Kotlin is that the language has limited resources of learning.

v Swift
Swift is a relatively new language and was developed by Apple. Swift is simple and
easy to use in comparison to other older languages. In addition, Swift is designed to
work across the entire Apple ecosystem. This means you can use Swift to write
programs for macOS, watchOS, tvOS, and even Linux applications.

Swift is a very good language because, in addition to being a popular open source tool,
it is very safe because the design itself encourages developers to write clean and
readable code consistently. The main advantage of Swift is speed and with its short
feedback loop, bugs and errors are easily identified and resolved. More importantly, its
robust coding and typing system helps prevent code crashes. Another factor to
consider is that this speed benefit will only improve over time as Swift becomes more
robust. Swift offers dynamic libraries which is another big benefit. Dynamic libraries
are better than static ones for several different reasons. Static libraries are locked into
the code when the program is compiled and this adds to the size of the program and
increases its load time. Another negative to static libraries is that they do not
automatically update and they are stuck in the version they were compiled.
While there are many advantages of the Swift programming language, there are also
some areas where it is lacking. Due to the regular and frequent updates, finding the
right tools can be difficult with Swift at times also Swift is limited to native libraries and
tools.

12
Native vs Cross-Platform Mobile App Development

One of the oldest debates for mobile applications is to develop it for a specific platform
or a cross-platform application compatible with different mobile operating systems. So,

the basic difference between native and cross-platform applications is that the native
applications are developed exclusively for a specific platform and these applications are
developed in a language compatible with the platform. Apple, for instance, prefers
Objective C and Swift for iOS while Google favors Java for Android. Using these
acceptable languages, developers can make better use of the innate features of these
platforms. A native application developed for Android will not function on iOS and vice
versa. On the other hand, cross-platform applications are compatible with multiple
platforms. Due to the market share of Android and iOS, most cross-platform
applications are limited to these two operating systems. These applicationss are
developed in HTML and CSS since these standard web technologies are platform
independent. There are several cross-platform application development tools that
allow developers to create these apps with little trouble.

Native apps make the best use of resources and utilize the platform’s capabilities up to
its full potential. This means native apps are high performing apps that are fast,
responsive, and less likely to crash. If the developers have enough knowledge of the
platform they are working on, they can optimize native apps to highlight the best
features and capabilities of that platform. Cross-platform apps are often plagued with
performance issues. Since they are the built-on one-app-fits-all approach, it is not
unusual for these apps to act out on certain devices.

13
Conclusion

This project presents the basic idea about the mobile application development why it is
actually so important and some of the benefits of the mobile application development
and about the platforms and other things that should be considered in mobile
application development. There is also present which of the platforms is better to use it
and some advantages and disadvantages of both cross platform application
development and also native application development. Also we can find out some more
information about frameworks which are used in the process of mobile application
development such as React Native, Ionic, Flutter, Cordova, also Java, Kotlin and Swift.
At the end I think that the process of mobile application development is exhausting, and
overwhelming also and that there are so many things that should be considered but, I
think that there are covered most of the things that are necessary to know when
creating or developing an mobile application. And I also think that nowadays all around
the world we have the explosive growth of the mobile application market which has
created a vast and complicated set of alternatives for developers because of an
increasingly important role in everyone’s life.

14
References

[1] Ramadath, S., Collins, M.: Mobile Application Development: Challenges and Best
Practices (2012)

[2] Raj, C. R., & Tolety, S. B. (2012, December). A study on approaches to build cross-
platform

[3] Mercado, I., Muniana M. & Meneely A. (2016). The Impact of Cross-Platform
Development Approaches for Mobile Applications from the User's Perspective. Proceedings
of the International Workshop on App Market Analytics - WAMA 2016.

[4] Latif, M., Lakhrissi, Y., Nfaoui, E. & Es-sbai, N. (2016). Cross platform approach for
mobile application development: a survey. 2016 International Conference on Information
Technology for Organizations Development (IT4OD).

[5] Eisenman, B. (2016). Learning React Native. 1st ed. United States of America: Rally
Media Inc

[6] Bosnic, S., Papp, I. & Novak, S. (2016). The development of hybrid mobile applications
with Apache Cordova. 2016 24th Telecommunications Forum (TELFOR).

[7] Marat Akhin, Mikhail Belyaev et al. “Kotlin language specification: Kotlin/Core”,
JetBrains / JetBrains Research, 2020

[8] Hybrid Mobile application based on ionic framework technologies. 1Bakwa D. Dunka,
2Dr. Edim A.

[9] C,Griffith. (2017) Mobile App Development with Ionic, Revised Edition Cross-Platform
Apps with Ionic, Angular and Cordova.

[10] S,Lewis, M,Dunn. (2019) Native Mobile Development: A Cross-Reference for IOS and
Android

15

You might also like