Apps are everywhere
How do you start your morning? People used to love reading a fresh newspaper at breakfast to learn about the latest news and happenings in the world, find advertisements and enjoy some funny stories. However, the bright sci-fi future has already come and newspapers have been replaced with smartphones and tablets while humor column has evolved into a standalone application.
We use apps to get the weather forecast, currency rates and news, avoid traffic jams, follow the activities of our favourite celebrities, browse calendars of upcoming events and so on. Applications have become an integral part of present day life. And a modern person often rushes to develop them. Sometimes he has no idea that there exist native applications and there are hybrid and web apps, he is unaware of what is the difference between hybrid and native ones and which type will suit the concept of his project better.
Hybrid vs native: the developer's view
Today we will talk about native and hybrid apps with Denis Altukhov, an Android developer at Anadea.
Tell us, as a professional, what is the difference between native and hybrid apps?
Well, native apps are created for a particular platform, whether it is Android, iOS or Windows. These applications are written in native languages - Java in case of Android and Objective C in case of iOS. They are downloaded exclusively from official app stores.
Essentially, it is a web application, isn't it?
Yes. And the advantage is that it is cross-platform straight away - you write for all platforms at once, Windows, Android and iPhone or anything else will open them. But it is associated with the restriction that you will not be able to reach out many technical functions requested by the client. For example, he wants active work with the camera - you can't do it in a non-native app. You can't create the design using the guides that exist for iOS and Android either.
Is it possible that a hybrid app may look inconsistent in different browsers?
It can float but globally everything will look the same. However, for example, if a person got accustomed to using Android, he will expect to see some standard Android stuff. And when the layout of a browser based app differs from what you expect, it is, to be honest, annoying.
All large scale apps are native. Why?
The absence of any restrictions is the main reason. You can fetch any functionality provided by the operating system. Such an app is more flexible and works much better with the battery thanks to the correct architecture of the native language. The OS itself looks at your app and sets up correct work with the battery, screen and so on. It would be much more difficult to, for instance, implement functionality associated with maps in a hybrid app without using native tools from Google and Apple.
Have you come across hybrid apps in your practice?
Oh my God!
All this was for just being able to see something. And even then, it was quite hard to understand what was happening there. Finally, the client came to a decision to develop two native applications for iOS and Android instead of one hybrid app.
In other words, he simply wasted his time, didn't he?
Is that exactly why non-native apps are rather often of low quality?
Yes, they crash or work incorrectly because someone came from outside. One more challenging aspect of hybrids is managing notifications. Maybe, these services somehow work there but, for example, we are currently working on a social app for exchanging photos and there the notifications are built absolutely differently in iOS and Android. It's a weighty difference. How will the notifications in web-applications look on three declared platforms (iOS, Android, Windows), where each has its own individual peculiarities... who knows?
And what about safety?
Hybrid apps fall behind here as well. You can download an apk-file only from one place - from the store. Besides, before publishing the app you have the possibility to encrypt everything with standard tools, hide the implementation and so on. In addition to the encrypting, there is such a thing as proguard - it splits links, erases names. There is nothing like that in a non-native app, which means that anyone can parse it, steal your code, download it from some other places.
So, does this mean that hybrid apps are still really really far from natives?
Certainly. They make sense if you are developing something very plain, general, if the budget is not very big and you are running out of time. Something that doesn't require all capacities of the device, when it doesn't depend on the hardware. In case you need all the functionality, native Google and Apple operating systems have a bunch of built-in methods and ways of working with camera, maps, bluetooth and others. And of course it will be better and of higher quality than a reinvented bicycle from some third-party developers.
I absolutely agree with you. Thank you for finding time to talk to me!
You are always welcome.
Let's sum up main points of native vs hybrid app development:
- If you require a high speed performance and your app will directly use the hardware of the device (camera, RAM, video chip, bluetooth, wi-fi, screen and so on) - develop a native app;
- If you are interested in a high safety level - develop a native app;
- If you are working on a really wide scale project - develop a native app;
- And if you need something very simple and all the points mentioned above are not required in your project - then you can make a hybrid app.