The native has died. Long live the native!
1. Instead of a foreword
“The king is dead. Long live the king!" - we all heard this French phrase, which, as it were, shares the era of the rule of the monarchs. All! - it seems to us, - the old is over, now everything will be in a new way, in a different way. But is it?
In this article, I will touch on the topic of native applications, or rather, their extinction ... or maybe just their transformation? Only you decide. Yes, yes, I know that I risk looking like a retrograde, taking an unpopular point of view. Nevertheless, I would like to find at least a few like-minded people who agree with my reasoning, and, of course, get reasonable criticism.
So, native or, as they are also called, desktop applications are special programs that have been developed for a specific OS (operating system) and have such a property as “compatibility”. I admit right away: yes, I am a developer of such applications. However, the specifics of my activity (developing CMS for online stores) also requires excellent knowledge and web technologies.
As for me, a significant part of the programmer’s working time can be divided into two ones that remain: the search for a solution and the search for a tool. I think many people have noticed and know that the better the tool is suitable for performing a task, the less universal it is for solving a wide range of tasks. That is, there is no perfect language, technology, etc., and therefore, like many of you, I have to periodically be distracted from pressing projects; to study what new tools appeared on the market; make a strategic decision about what I will study tomorrow. For example, after all, maybe a long time ago no one uses a screwdriver to tighten screws, but uses a screwdriver, or even switched to a new dowel-nail technology.
This is my personal dilemma:it seems like it's time to switch to full-fledged HTML development, but, alas, no, I still have one foot firmly on the native . Indecisive? Or maybe I'm just not so young as to recklessly rush into the embrasure of difficulties? Checked - with age, a person becomes more pragmatic. So I don’t give a damn about what’s just fashionable, I don’t give a damn about the mainstream, I never want to do anything “because many people do it”, success to them, but if they didn’t bring sensible beliefs, then the quantity factor is simply leveled by me.
As a programmer and entrepreneur, I want to complete my task, and I want to do it efficiently, quickly and practically. However, so many companies want me to do this with their tool. This is a business, nothing personal, I myself am like this: I want the sites to be made on my CMS, and you probably want only yours. Pay attention to the essence: the idea of promoting your brand as a means of achieving the goal is very interesting and profitable. Such companies, developers of technology standards, receive a "carte blanche" - the right to successful and unsuccessful decisions, errors no longer kill the entire technology or software package overnight, but allow you to save the development team until better times. As for the current miscalculations, they can be compensated for by their regular customers: well, you think, the new screwdriver is heavy,
In general, I will end this thought by summing up: very few of us write in machine code, so reconcile, we are all controlled, and have been manipulating us for a long time (if self-esteem is affected, then read: they are fighting for us, we are being lured). I mean, so that you do not have illusions like “I write in the most correct language or use the most optimal technology”. And as in any market, the usual rules apply: the one who has the best combination wins - product features + seller’s persuasiveness. However, unlike the ordinary consumer who buys a tablet or a car, we will suffer very significant losses if you make a mistake (non-optimal choice) - years of life, and years of life in programming are very expensive! That’s why it’s crucial to separate these two factors in order to confidently follow your course, rather than hanging out,
2. The dilemma
So, before me there was a task: to create a CMS for managing an online store. I decided to soberly compile a list of all the pros and cons of native and web applications, which I submit for your consideration. The only thing before that is to correctly state what I specifically mean by “native” and “web application”.
- A binary, compiled application written in a high-level language that was developed for a specific OS.
- Uses interface objects of the OS to interact with the user.
- Encapsulates the capabilities of other native applications running under this OS.
- The application is a client application, that is, it does only part of the work, exchanging data with another application on another OS via the Internet.
- Example development languages: C ++, Java, C #, Delphi, Visual Basic
- Interpreted code that is executed on the fly by a binary, compiled application (written in a high-level language that was developed for a specific OS). This application is called a browser.
- Uses browser interface objects for user interaction.
- Has access to special browser features that provide dynamic page operation.
- The application is client-side, that is, it does only part of the work, exchanging data with another application on another OS via the Internet.
|Indicator||Native application||Web application|
|Versatility||Not universal. Not suitable for a mass product that should be used on as many devices as possible running under different operating systems.||Universally (relatively). Although browsers have their own characteristics, in most cases, the application will run on most devices running various OSs.|
|Interface||Standardized. It is based on OS objects (button, input field, tree, table, etc.) that have been used for decades and are familiar to the user.||Not standardized. There are similar objects (button, input field, etc.), but these are not OS objects, but similar browser objects and they are much smaller. Most of the objects are implemented by the developer independently.|
|Performance (interface)||The maximum. Compiled code operating with OS objects. The application gets access to all OS resources, can use high-performance library modules developed in low-level languages.||Medium or low. The application is interpreted and works in a browser - an add-on in the OS, therefore it has access only to browser resources. A key indicator when choosing a browser is still its speed, which confirms the relevance of the issue.|
|Performance (data)||High to low - implementation dependent. If the application is small and operates with a small amount of data, then the speed of operation becomes indistinguishable from a web application. However, if the amount of data is large, then batch work with data is implemented. For this, OS resources are used to organize a local database. A correctly designed application more than compensates for the time it takes to download even an excessive amount of data due to more rare communication sessions with the server.||Medium or low. The application is designed to work with a minimum amount of data, so as not to overload the browser resources. This implies the need for frequent work with data (reception / transmission). This leads to increased requirements for the communication channel: speed and stability of the connection. If the speed of the modern Internet is high, then the stability of the channel, plus the loss of connection time (before sending each data packet) remains, as before, at an average, and in regions at a low level.|
Now look how interesting it turns out: the development of server-side scripts responsible for data preparation is essentially no different for both native applications and web applications. After all, as I already mentioned in the table, the general tendency is this: to take the HTML code out of the scope of the scripts and transmit / receive data in XML or JSON format. Thus, the task of client applications is to receive data, visualize it, receive new data and transfer it to the server. And here I would like to share my observations with you. Since I freely develop both types of applications, I saw a certain analogy. Take a close look at the few files below:
|Native application (form description file)||Web application (page description file)|
|Native application (file with the program)||Web application (program file)|
Comparing them, you will see that a modern web application is nothing but a good old native, and in this case the web browser acts as an OS. There is a joke on this subject that is well known among Windows users (and maybe not a joke): “The latest version of Google Chrome browser will be updated to Google Chrome OS”. That is why I called the article “Nativ died. Long live the native! ” As it turns out everything is new, it is a well-forgotten old. The only thing that the old is well known to me and has a number of advantages, so why should I unconditionally believe in the new?
3. The remainder
What follows from all this? If you are developing a mass application for mass consumption, then of course you are better off using a web application. Just do not forget to build his work so that at the same time the work is carried out with a fairly small portion of the data. This will allow your application to work fast enough.
If you are developing a specialized application (for example, like me - CMS for an online store), then think about it, perhaps a native application will be a more effective solution. Firstly, you write a specialized product, which means that to work with it the user will have to adapt in any case: a productive PC, a good monitor, the right OS and, of course, a productive program. And he is ready to do it without problems, because he understands that he is investing in technology to get ahead of competitors. Secondly, the interface is still quite familiar and will speed up the process of getting to know the application. Thirdly, you as a developer have more options. OSs such as * nix, Windows, MacOS have been around for a long time, and a lot of programmers have developed and perfected their software products - separate libraries.
Therefore, for today, I emphasize, for today, I see that I and you have much more opportunities when implementing a native application. Yes, of course, we should not forget about the prospect, but personally I am not ready to spend my time to promote raw technologies, or, in any case, I should be well paid for this. If you (your company) have an investor, and he said that he heard a “voice from above”, and you need to work on that and that, then yes, why should he argue? But if you are doing a project, investing your money and your time in a project that should be completed as quickly as possible and aimed at maximum competitiveness, then think about it!
So I came to that moment to discuss what, in my opinion, will be fair and honest with me as a developer. Although I write quite harshly about web applications here, however, I do not reject them . And this is very important, I would like to focus on this. These are not just words, I use web applications in my products, combining them with native ones, but this is the topic of a separate article. Now I want to dwell on what prevents me from confidently taking the path of web application technologies:
- First of all, the browser is not an OS. That richness of library applications that can run under the OS, browsers do not realize for a long time, a very long time. Of course, it is possible that some of these programs will die over time as unnecessary, but, on the other hand, there are such software tools as the DBMS that have been developed and improved for more than a decade and continue to develop rapidly. Yes, of course, all possible applets help expand the functions of the browser, but they are simply not comparable in their capabilities and stability. Until now, many leading IT companies, including the pronounced Internet companies Yandex, Google, which have and promote their own browsers, are developing native applications that use a local DBMS to speed up work with a large amount of data. Strange somehow
4. A bit of philosophy
There is such a law of nature, a kind of “self-preservation instinct”: while you succeed, you are ready to break any rules, but when you succeed, you set the rules and make sure that others (losers) comply with them. Therefore, a company that has won market share through any innovative technology will do its best to monopolize it and try to make it a common standard (a law that will subordinate others). The most powerful tool in this process is marketing.
By the way, many people think that a skilled seller is a person or a company that is trying to sell you something, talking about the merits of the product. Guys, this style is the last century, and the lot of the oriental bazaar. In the modern world, sellers have evolved very much, in many cases you don’t even know who the seller is, you don’t even realize that the purchase process is taking place, the decision you make seems absolutely logical and consistent to you, and the costs associated with it are simply inevitable.
Thus, in the IT sector, to control the situation, it is best to use your own platform with native applications, which thereby promote the platform itself. "Stop. But what about HTML? After all, everyone is trying to support and develop it! ”, You say. HTML is a "world through the teeth" for large IT companies and a great business incubator for start-up companies. Compare the costs of developing web and native applications, these are the very risks. Thus, a small company may try to implement its idea, but large companies are ready to develop a browser that supports your web application for free.
But, as soon as any idea turns out to be promising, then funds are immediately invested in it to develop a powerful native application. And so powerful that it just starts to be associated with the OS itself, and the OS, in turn, with the brand. For example - geocards, developed first for the web, and then appearing as native applications for each device based on MacOs, Windows, Android. These applications, as well as several others (email clients, instant messengers, markets) are quite important for mobile devices, being their "calling card". Think for yourself: when choosing a device (mobile phone, tablet, laptop, workstation), you ask yourself a question about how well this device works with HTML, or still what applications can I put on it and how well will they work?