Apps: Hybrid, Native, Progressive, and Confusing
We know that when deciding to develop an application, there are many terms, technologies, and platforms available. It is difficult to make the decision of which are the appropriate technologies, because we will always be faced with opinions about the possibility of a better option.
Therefore, we want to explain the different types of applications; for when the time comes to choose, they can do so in an informed way.
¿What are the types of mobile applications that exist?
Native applications are those that have been developed in a particular language and specifically for a certain operating system. Specifically, for Android, iOS, and recently Huawei.
Until a few years ago, there were 3 operating systems, which divided the smartphone market worldwide. We are talking about Android, iOS and Windows Phone.
To give us an idea, the market share of operating systems is as follows. For mobile it is almost 90% for Android and a little more than 10% for iOS.
To develop an application on Android, the Kotlin programming language is used (although we can continue to use Java). Applications for Huawei use the same Android source development.
On the other hand, to develop a native iOS app it is necessary to know the Swift language.
Once the development in native language is finished, it must be uploaded to the app stores to be validated by the Android, Huawei, iOS team. After the evaluation, our applications can be found in their respective stores (Google Play, Huawei Store, and App Store).
Web Apps or Progressive Web Apps (PWAs)
Web apps or Progressive Web Apps are applications that are halfway between a web application and a native application. That is, they are web applications that run on a web browser, but, through service workers and other technologies, are capable of behaving like mobile applications.
You can even access functionalities in the background or the use of push notifications. In fact, you can add them to the home screen of your Smartphone, exactly as if they were native applications.
Hybrid application development is done through the web programming language. When the development team has finished cutting all the source code, they are compiled and converted to the specific programming language of an operating system. That is, we would have the same result as with native applications.
The frameworks (work environments) that are used for the development of these applications have advanced a lot since the first versions. Today they reach some features that have nothing to envy to native apps. For this reason, we want to bet on the use of hybrid applications through arguments.
Frameworks for developing hybrid applications
There are different frameworks for developing hybrid applications. Their functionalities, capabilities, and performance change each time a new version of them is released.
Today we want to compare the most used.
It can be programmed with different Frameworks, such as: Angular, Vue, React.
It is modern and designed to work with the latest trends, with a clean and neat design.
You can create, build, and compile apps on any platform, all with a single command.
It is made to be fast, when designing and implementing.
Basically it allows to create the Interfaces without having to add code, that is to say to create the easy graphical part without touching the code at all.
It does not have all the functionalities that a native app can have, since it does not have all the necessary plugins for all the requirements and it may take more time to develop new plugins separately.
It is not recommended for projects that consume very high graphic resources such as (games or those that represent many 3D models).
Some components may be programmed specifically for iOS.
The React Native framework implements a selection of native UI components. The apps will look like native apps.
Many third-party services have created APIs and plugins for React Native applications. There is third-party support for maps, payment systems, charts, and more.
Great community and ecosystem. There is a substantial community around React Native, which is an open source platform. A good community is an advantage because it means that developers are less likely to get stuck, as there is always someone to turn to for help. There is also a greater field of resources to employ.
It is made to be fast, when designing and implementing.
Because cross-platform applications are not completely aligned with device hardware, their performance is slightly lower than native applications.
It has some limitations that make it necessary to involve native developers.
React Native is not completely a cross-platform tool. To use some features like the camera or accelerometer, you must use native components, so there will be separate code for Android and iOS.
Xamarin was released in 2011 as a standalone cross-application development framework, but was later acquired by Microsoft in 2016, giving it more credibility than before. It is an open source framework that was released to solve the problem of mobile application development for more than one platform. They were very different platforms and it took a lot of resources to create a mobile app.
It has a large community between collaborators and companies that specialize in its development.
It has a good yield, close to the native one.
A single technology stack for faster development.
Carries company licensing costs. Xamarin is a framework that is free for individuals and startups. However, companies must purchase a Visual Studio license from Microsoft.
Xamarin is not recommended for graphics-intensive applications because each platform has a different method of visually designing displays. It is recommended to implement a complex application in UX / UI natively.
It also offers limited access to certain important libraries that application developers need for mobile application development.
It is a framework for developing multi-platform applications developed and maintained by Google. This development kit provides a large number of libraries for standard Android and iOS user interface elements, but is also suitable for developing desktop web applications. Applications developed with Flutter have the normal appearance of applications on each system and behave as expected on all of them without the programmers having to pay attention to the particularities of each system.
A single code base for all major target platforms.
Powerful execution of native applications on smartphones.
Extensive libraries with pre-built GUI elements, making development faster.
Simple implementation of data flows to provide current information to all users.
It is an ideal framework for the development of MVP (Minimum Viable Product). Instead of spending money and extra time on two separate apps, you can quickly create a Flutter mobile app that looks native on both Android and iOS.
It has a full set of widgets in Google's Material Design and in the Apple style with the Cupertino package.
The modules are permanently integrated into the program, you also have to compile the program and install it on the devices.
There is limited TV support with apps built on the Flutter framework, that is, Flutter does not offer support for Android TV and Apple TV.
Since Flutter-enabled applications use built-in widgets and not platform widgets, the size of the application is usually larger. Currently, the smallest possible application created with Flutter can be no less than 4MB.
It is still a new and little extended language, it has a small community but every day more people move to Flutter.