=Paper= {{Paper |id=Vol-2832/paper09 |storemode=property |title=Cross platform development vs native development |pdfUrl=https://ceur-ws.org/Vol-2832/paper09.pdf |volume=Vol-2832 |authors=Nikita A. Shevtsiv,Andrii M. Striuk }} ==Cross platform development vs native development== https://ceur-ws.org/Vol-2832/paper09.pdf
Cross platform development vs native development
Nikita A. Shevtsiv, Andrii M. Striuk
Kryvyi Rih National University, 11 Vitalii Matusevych Str., Kryvyi Rih, 50027, Ukraine


                                      Abstract
                                      The paper analyzes the advantages and disadvantages of cross-platform and native mobile application
                                      development. The conditions are highlighted in which native and cross-platform development reveal
                                      their advantages. These conditions include the project size, work comfort, popularity, relevance. It
                                      was concluded that a beginner developer should start learning from native development, and then try
                                      cross-platform.

                                      Keywords
                                      native development, cross-platform development, React Native, Java, Kotlin, Flutter




1. Introduction
In 2010, in the world of mobile development, the main questions were: which to choose Android
or iOS? What to learn: Java or Objective-C? Over the course of 10 years, these topics have
gradually lost their relevance in the circles of the IT community, because alternatives to these
languages have appeared. As Kotlin for Android and Swift for iOS. Parallel to this, a new branch
was developing – cross-platform technologies.
   In 2020, you can often hear controversy and speculation about which side will take the main
part of the mobile app development market: native or cross-platform. Native development in-
volves technologies that are focused on a specific platform. For example, the Java programming
language is aimed at developing applications for Android, the brainchild of Apple – Swift for
iOS.
   For cross-platform development, technologies aimed at both platforms are used. Among
them, two of the most promising can be identified: React Native (based on js) from Facebook
and Flutter (based on Dart) from Google.
   You can ask a mobile developer who has at least a year of experience working with cross-
platform technologies and native development (it doesn’t matter if it is an Android or iOS
developer), he would answer: neither side will ever supplant the other.
   But under certain conditions, these parties have clear advantages over each other.




CS&SE@SW 2020: 3rd Workshop for Young Scientists in Computer Science & Software Engineering, November 27,
2020, Kryvyi Rih, Ukraine
" nikita0503ua@gmail.com (N.A. Shevtsiv); andrey.n.stryuk@gmail.com (A.M. Striuk)
~ http://mpz.knu.edu.ua/pro-kafedru/vikladachi/224-andrii-striuk (A.M. Striuk)
 0000-0001-9240-1976 (A.M. Striuk)
                                    © 2020 Copyright for this paper by its authors.
                                    Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
 CEUR
 Workshop
 Proceedings
               http://ceur-ws.org
               ISSN 1613-0073       CEUR Workshop Proceedings (CEUR-WS.org)
2. Comparative analysis of cross-platform and native
   development
2.1. Project sizes
Quite often, IT companies with up to 10 employees choose cross-platform. Typically, devel-
opment teams take on small and medium-sized projects, where development time can take on
average from 3 months to a year. As a rule, such projects do not require high technological
needs from programmers. Therefore, in these cases cross-platform technologies can be used.
   It will be beneficial for both the customer and the company.
   The number of application developers can be reduced; most often it will be only one person.
On the part of the customer, it will be more comfortable to communicate with one person,
rather than explaining to two developers at once how this or that screen should work. In fact,
not all people think the same way. And they can understand both the design part and the
technical part in different ways, for example, the rules for loading and displaying elements
on the screen. Accordingly, the appearance will be not similar on different platforms, and the
speed of work will also differ. It will take more time to come to a similar result.
   For a small company, being cross-platform has some advantages. Since fewer developers
were required, it means that the costs for the application will be less.
   It makes no sense to consider the option when one developer first makes an application for
one platform, and then for a second one. Since it is obvious that this will take a lot of time and
money, so it is not very profitable for both parties.
   Will this affect the quality? Applications that do not require a lot of resources from smart-
phones, for example, simple social network or an online shop, is unlikely to require interven-
tion in low-level processes (Although, in React Native, it is possible to write native modules).
So the answer is no. This will not affect the quality and performance of simple applications in
any way.
   For clients who start their own business and already have a working website, as a project
development, cross-platform application development will be cheaper and faster than native.
   But this applies to small projects that will not need support, and even more so in further
development. If we talk about projects with long development times, constant improvement
and expansion of functionality, cross-platform is seriously inferior to native development.
   In large projects, a lot of attention is paid to design, and quite often to animation of objects.
Despite the fact that, according to the development ideology, this item is noted as a plus, prac-
tice shows that the implementation of a non-trivial design for two operating systems gives
many bugs. This increases the time to eliminate errors. The UI is displayed differently and the
time to adapt is also increased. The most noticeable problems occur with animations, clicks
and scrolling – the application may freeze. The user interface is developed in HTML, but you
will have to spend months to achieve native platform performance. The native development
languages for Android and iOS would be better tools in this case than the cross-platform tech-
nology APIs.
   You need to develop an interface that is intuitive for both iOS and Android users. Otherwise,
an application built according to the IOS Human Interface OS Guidelines will be inconvenient
for Android users. Ultimately, you will spend more time improving the user experience.



                                                76
   Long-term projects are not designed to save resources. In this case, customers are looking
for performance, quality and reliability. Native development in large-scale projects will be the
best solution. For a high-quality application, the project will need developers with serious
experience and deep knowledge in the areas of development for Android (Java or Kotlin) and
iOS (Objective-C and Swift). Compared to cross-platform technologies, there are 2 times more
developers, plus the work of good specialists is more expensive, in other words, the project
costs increase. But, it is worth recalling again, large projects involve serious costs, as a result
of which, as a rule, this is justified.
   Application speed – the compiled project code is optimal for the native platform. The appli-
cation gets full hardware support for the device and uses multithreading for complex tasks.
   With the release of updates to the programming language or hardware functionality, new
features will be available immediately. That is, there will be no need to wait for the implemen-
tation and adaptation of these updates in cross-platform development technology.
   And the most important advantage of native development is the absence of restrictions, and
this, in turn, is the main condition for the development of huge projects. An indisputable
advantage is that it uses all the functions of the system software as flexibly as possible, such
as a camera, microphone, geolocator, accelerometer, calendar, media, at the same time, the
application sparingly consumes memory and device battery.

2.2. Work comfort
In addition to the fact that the technology must meet the requirements of the project, it is worth
considering a number of factors that are associated with the developer.
   The first thing to look out for is the ease of learning. The more popular the technology,
the more courses, lessons and articles related to this tool can be found on the Internet. Native
development has an advantage in this regard. For example, it is worth considering the Kotlin
programming language, it is the official language for developing applications for the Android
platform.
   Why Google loved Kotlin? On the official website, Android developers write that they have
watched the rise of Kotlin in recent years. Google is not shy about describing the language as
impressive and concise, more powerful and enjoyable to work with. It has increased perfor-
mance: the program code on it is, on average, 40% shorter than in other languages, and Kotlin
also allows you to avoid some errors in the code. One of the determining factors in Kotlin’s
popularity with Google is that it is compatible with Java, which is already used in developing
applications for Android.
   In the future, more libraries and tools will be developed for the language, more teaching
materials, it will be easier to find solutions to possible problems.
   In other words, the company actively promotes and popularizes the language. Considering
that Google is the giant of the IT industry, many companies follow the trend and release a
number of courses and other training materials on Kotlin on their own. More and more arti-
cles related to the language appear on Habr, on Stack Overflow they solve a huge number of
problems using this technology. Thus, the popularity of Kotlin is growing rapidly. It can be
concluded that for beginners the entry threshold is greatly reduced and it becomes easier to
learn, since there are a lot of materials.



                                                77
   On the other hand, there is the brainchild of the same corporation – Flutter. An incredibly
promising technology that Google is promoting in the world of cross-platform development.
Flutter, takes a different approach than React Native and Xamarin. It does not turn the source
code into native code, which is executed by the platform, but in fact draws a window on the
smartphone screen and renders all the elements itself. The language used is Dart, which Google
created as an improved version of JavaScript. But as of 2020, the technology is still a bit dry.
Due to the fact that Flutter is quite young, the amount of training materials is not as much as
we would like, in addition, there are still few additional libraries.
   The second point is the threshold of knowledge of entering technology. In other words: the
required amount of effort and time that needs to be spent on learning technology so that the
knowledge gained is enough to implement a simple project.
   From this side, cross-platform comes out a little ahead. Take a Facebook product as an ex-
ample.
   React Native is a JavaScript framework for building natively rendered Android and iOS apps.
It is based on Facebook’s React JS library for creating user interfaces. If a programmer has
experience in web development, especially in ReactJS, then he can become a developer of ap-
plications for mobile devices in no time. Since ReactJS and React Native have 80% similarity in
the code base, you can write a business card application for phones almost immediately.
   In addition, there is a platform that makes it much easier for beginners to work with React
Native.
   Expo is a set of tools with which you can write a React Native app in minutes. It includes out-
of-the-box tools like Android Studio and XCode configurations, Apple and Google certificate
management, push notifications. The Expo development team has developed a wonderful tool
called Snack that allows you to write and test code right in the browser, without any pre-
installation or setup of development environments. Accordingly, the “threshold of entry” into
React Native becomes very low. And thanks to good documentation from Facebook, going from
web development to mobile development becomes a breeze. Especially, it is worth noting that
this documentation provides materials for those who have experience with native development
and recommends working with the React Native CLI. And for those who are new to mobile
development, it suggests using the aforementioned Expo CLI [1].
   It is worth considering the issue of the popularity and relevance of both sides in more detail.

2.3. Popularity
Google Trends [2] service will be used to research popularity.
   Consider the popularity of cross-platform development technologies – React Native and Flut-
ter – with the programming language for the Androd platform – Kotlin.
   React Native is blue, Flutter is red, Kotlin is yellow (figure 1).
   Judging by the graph, React Native has been leading in popularity in Ukraine over the past
two years, but Flutter is gaining popularity and even bypasses RN in search statistics at some
intervals.
   Figure 2 clearly shows how Flutter is gaining popularity every month, more and more. React
Native and Kotlin have consistently maintained their popularity in 2019 and 2020.




                                               78
Figure 1: Search statistics for technology names in Ukraine for 2019-2020




Figure 2: Search statistics for technology names worldwide for 2019-2020




Figure 3: Search statistics for technology names in Ukraine, over the last 5 years


   Figure 3 shows the popularity of Google searches for the current list of technologies over the
past 5 years in Ukraine. React Native and Kotlin were significantly more popular than Flutter
until 2019. But starting in June 2020, Flutter came out on top in the search volume ranking.
   The fourth figure shows that over the course of 5 years, React Native has been more popular
than the rest of the technologies on the list (despite 2020).
   But making a choice, judging only by the number of searches for a programming language
on Google, would be the wrong decision. First, the list does not include the Swift program-
ming language for iOS. The fact is that Google Trends under the string “Swift” means not only
technology for development, but also as an international interbank system for transferring in-
formation and making payments. Secondly, the very popular Java language was not included
in the comparison, because it is used not only for developing Android applications, but also
for other platforms (web, desktop, etc.). Accordingly, in this comparison, he would have left



                                                  79
Figure 4: Search statistics for technology names worldwide, over the past 5 years




Figure 5: Job statistics at work.ua


no chance for his opponents. In other words, relying on Google Trends is not a good idea.
   But after analyzing many reviews and articles [3, 4] among developers, native development
is very popular. Basically, cross-platform development is treated as a tool that only experienced
developers use on small projects.

2.4. Relevance
The second factor, which is one of the most important in choosing a technology, is its relevance.
   Consider the number of vacancies on the following sites: work.ua [5], rabota.ua [6], DOU
[7], grc.ua [8].
   On the graphs, the number of vacancies that are provided for working in the office is marked
in blue, and on a remote basis, in red.
   Statistics from these sites show that native development in offices is in demand more than
cross-platform. But on a remote basis, all technologies have roughly the same number of va-




                                                 80
Table 1
Statistics of vacancies at work.ua
                                     OS / technology     office   remote
                                     Android              49        5
                                     iOS                  32        7
                                     React Native         14        5
                                     Flutter              3         0




Figure 6: Job statistics on rabota.ua


Table 2
Statistics of vacancies at rabota.ua
                                     OS / technology     office   remote
                                     Android              61        3
                                     iOS                  74        5
                                     React Native         17        1
                                     Flutter              7         1


cancies.


3. Conclusion
In conclusion, it is worth concluding: there is an application of any technology in the labor
market, since there are a huge number of ideas from startups to huge and complex projects.
It is impossible to give a clear answer which is better: native or cross-platform development.




                                                    81
Figure 7: Statistics of vacancies on DOU


Table 3
Statistics of vacancies at DOU
                                    OS / technology     office   remote
                                    Android              105       27
                                    iOS                   97       27
                                    React Native          63       32
                                    Flutter               36       12


Table 4
Statistics of vacancies at grc.ua
                                    OS / technology     office   remote
                                    Android              103       35
                                    iOS                   86       36
                                    React Native          29       14
                                    Flutter               9        3


Each project has its own technology requirements and is unique. Also, each developer has their
own skills and preferences. But, if you are a beginner developer, then you should start learning
from native development, then try cross-platform.


References
[1] Introduction to Expo, 2020. URL: https://docs.expo.io.



                                                   82
Figure 8: Job statistics on grc.ua


[2] Google Trends, 2020. URL: https://trends.google.com/trends/?geo=US.
[3] A. Polomodov, Mobile development: native, cross-platform, hybrid, web ..., 2020. URL:
    https://apolomodov.medium.com/%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%
    D0%BD%D0%B0%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%
    D1%82%D0%BA%D0%B0-native-cross-platform-hybrid-web-178c355c174.
[4] N. Priyatselyuk, Native or cross-platform - what should a novice mobile developer choose?
    experts answer, 2019. URL: https://tproger.ru/experts/native-or-crossplatform/.
[5] Work.ua, Work.ua is Ukraine’s #1 job search site, 2021. URL: https://www.work.ua/en/
    ?setlp=en.
[6] robota.ua, Work in Ukraine. Employment and job search on robota.ua, 2020. URL: https:
    //rabota.ua.
[7] DOU.ua, Community of programmers, 2021. URL: https://dou.ua.
[8] HeadHunter Group of Companies, Work in Ukraine, personnel search and job posting -
    grc.ua, 2021. URL: https://grc.ua.




                                             83