Essentially, the main difference lies in the development speed vs. application performance.
When I say application performance, it refers both to properties as speed and latency, but also to the technology’s capability to integrate and utilize native features. (Camera, GPS, notifications, phone etc.)
As you might already have figured out, the native technologies (Android & Swift) have the best performance because they are designed specifically to their respective OS (Operating System). However, these native technologies also require more time developing, since one app will be required for each OS.
If you on the other hand want to accelerate the development speed, and don’t see an issue by lowering the applications performance a bit, I suggest you take a look at this article to determine if there is another relevant technology out there.
Development technologies can be compared in many ways, and in order to remain objective and get an overview of the different technologies, I decided to base the comparison on 12 different properties.
Some properties are focused on technical features, while others are focused on the economy and long-term stability of the technology.
Initially I will split the different technologies into the three categories: Native, Hybrid, and Webview.
Native will be given to the technologies, which are build for the OS originally.
Webview will be given to the technologies, which essentially loads a web page within a smartphone-app-wrapper.
Finally, Hybrid will be given to the technologies which falls somewhere in between. This might be because the app is written as a web application, but when compiled, it converts to native code.
The cost of development is based on how much code needs to be written or special customizations required in order to integrated with native APIs.
Which programming language is used to facilitate this technology?
If you are already developing your own app, it might be worth knowing whether a new technology supports page-by-page adoption. This way you could change between writing Native code on one page and switch to something reusable for iOS on a second page.
It should be noted that page-by-page adopting relies on one of the technologies being native code, since it is likely a question of whether the new technology can be implemented as part of a native project.
Which companies support the technology? The sad reality is that the best technology does not always win on the long run. Sometimes it is about who provides financial support and promotes the technology.
Therefore, I believe that it is highly relevant to look at the supporters to determine whether this technology stands a chance on the global market.
It would be a shame to invest time and resources into a technology, which will be dead in a few years.
Is the technology open source? I believe that this is relevant, since it allows a project to quickly mature, if multiple large companies start contributing to the project.
Additionally, it also relates well to the previous point of “supporters”, since many major IT companies will not support a technology, if the source code is not publicly available.
Does the technology have fully access and integrability with the native APIs? (Camera, GPS, notifications, phone etc.)
How well does the technology perform when put to the test?
Before you start developing your application, it is relevant to know if the technology of your choice suits the purpose in terms of performance.
When it comes to smartphone applications, this is not something to take lightly, since some of these technologies might not even be possible to publish in the app store (iOS), if its performance is too bad.
Users know their phone’s UI (User Interface), and how it works. Is the “OK”-button on an alert on the left or right side of the dialog box, and do they expect a return button integrated into the app?
If the technology does not support OS consistent UI it will likely lead to some frustrations from the users. In some scenarios it might even cause the app to be blocked off from the app store.
Alternatively, if you decide to handle these UI inconsistencies yourself, it requires additional time and effort, which neither is an attractive solution. It would therefore be valuable to know if the technology facilitated UI consistency.
Nothing takes more time for a developer than to wait for a project to compile. It is therefore highly relevant to know if the technology supports hot reload in order to minimize the compilation time and maximize the time available for development.
If hot reload is not supported, it will instead be determined if other utilities such as live reload (stateless reload) is available or if the technology does not provide any “compilation-productivity” tools.
Does the technology require native SDK (Software Development Kit) to work with and how is it incorporated into the workflow of the technology?
Which IDE (Integrated Development Environment – e.g. IntelliJ, Android Studio, Visual Studio Code, Atom) can you use to work with the technology? Are you forced into a new environment or will you be given the freedom to pick and choose yourself?
In this article we are going to go through all the pros and cons of the NativeScript technology for the purposes of application development. The categories which we are going to use for comparison are the same categories used for the Mobile App Development page.
In this article we are going to go through all the pros and cons of the React Native technology for the purposes of application development. The categories which we are going to use for comparison are the same categories used for the Mobile App Development page.
My name is Daniel H. Jacobsen and I’m a dedicated and highly motivated software developer with a masters engineering degree within the field of ICT.
I have through many years of constantly learning and adapting to new challenges, gained a well-rounded understanding of what it takes to stay up to date with new technologies, tools and utilities.
The purpose of this blog is to share both my learnings and knowledge with other likeminded developers as well as illustrating how these topics can be taught in a different and alternative manner.
If you like the idea of that, I would encourage you to sign up for the newsletter.