Saturday, October 31, 2020

Goodbye, Native Apps

Goodbye, Native Apps

Hybrid apps are taking over native apps which ran smoothly on both low-end and high-end computers

Twelve years back.. I can remember that I had a pentium III computer with just 128 megabytes of physical memory. When I stepped into programming my favorite developer tools were Visual Basic 6 IDE (Integrated Development Environment) and Notepad++ on Windows XP. Undoubtedly, both applications were amazingly fast for that much of physical memory because as we know C/C++ language(s) powered everything at that time. We didn’t classify those great software as native because there was no concept called hybrid applications at that time.

I couldn’t find a real picture of my old computer but it was something like this…

Image credits: Reddit

After some time there were popular software that were asking about several run-times such as .NET framework, JRE(Java Runtime Environment) and Adobe AIR. In fact, writing software with C/C++ was hard because developers had to work with different operating system API(Application Programming Interface). Therefore these types of run-times offered a nice abstraction level over the operating system layer for developers by providing a well structured API for writing desktop applications. Whereas 128 megabytes of physical memory was able to exhibit us the drawbacks of these run-times by slowing down these types of applications a bit. Everyone upgraded their physical memories as a solution and was able to bring everything back like we had earlier.

Few years back there were other types of applications that didn’t ask for any run-times but silently took around ten times storage than old software and a huge portion of physical memory too. Unfortunately we couldn’t identify either because our computers had increased resources unlike we had in the past. We named these applications as “hybrid” since a part of it is native and the other part is just a web application. Basically, a generic hybrid application is having the business logic and the presentation layer in a web application.

Moreover, whenever it needs to access the native functionality such as file system access etc, it uses native API somewhat similar to the previous run-time based software. Nowadays these hybrid applications are rapidly growing over native software mostly due to the easiness of development. Everything has pros and cons, similarly here we can see the hybrid application concept created a new way of developing desktop software by allowing everyone to create awesome desktop applications but on the other hand hybrid apps faked users by showing native-like appearance also by hiding lacking performance behind the modern powerful hardware.

We had a golden era and now we are missing it..

Earlier we had native application software that ran on any computer smoothly. Those applications were written in a language like C/C++ which lives closely with the hardware. Hence, there were no intermediate layers like run-times in order to execute native applications; just binary content was there. The GUI (Graphical User Interface) of these native software was rendered greatly with an amazing performance on the screen unlike faked modern native-like GUI.

Older native software used resources in a well organized manner because we had very limited amounts of physical memory, computation power and storage. Nowadays, unfortunately even the application container(native part that drives the web application) takes a huge amount of resources than the actual hybrid application logic residing in the web application.

Figure A: Visual studio code (hybrid) is taking ~1.2 gigabytes

I just checked physical memory usage of Visual studio code(hybrid) from a computer with 4 gigabytes of memory. As shown in Figure A it is taking ~1.2 gigabytes which is about ten times of my old pentium III computer’s entire memory.

Technology evolves and that’s good. But never underestimate the value of even a single bit of memory..

A meme shows the trouble with software bloat

Uprising of hybrids and bloatware

If a particular software is exceeding the expected amount of resources usage we often name those kinds of software as bloatware. Almost all of these hybrid software include a web browser for rendering the interface and a run-time for enabling the native functionality. Hence, if there is a hybrid calculator software, more than 90% of storage usage probably will be used just to drive the application. In addition, a large amount of physical memory will be allocated for hybrid application containers, specially; instances per application! Isn’t it bloatware?

This piece of writing says more about modern bloatware (Disclaimer: I am not saying Electronjs framework is bad)

Native vs Hybrid and the future..

Hybrid software is showing a rapid growth over native applications. If hybrid software came over native software we will experience following bad stuff sadly.

  • Every user will be faked by hybrids by thinking those as native and we will miss the real native applications forever.
  • Unwanted resource usage will make a critical issue. People will have to purchase high-end computers even for some simple works. Furthermore, running these hybrids will drain batteries faster than the native does.
  • Hybrid concept is not a solution for the user but a great solution for issues faced by the cross-platform application developers.

But the application developer/vendor is having these good stuff of course,

  • Development workflow will be simple. Earlier if it is a cross-platform app, developers either maintained several code-bases per each platform or they maintained a combined code-base which consist of source codes for every supported platform. Whereas the hybrid concept uses web technologies so what a simplicity!
  • GUI implementation is like a piece of cake with HTML and CSS or with front-end UI libraries. Therefore, developers are able to create any custom UI elements easily.
  • A cost-cutting solution indeed (Even web developers of a company could be used as the resources for developing develop applications)

We can clearly see developers/vendors can easily say “Goodbye, native” but can we? as users. What I did is that I kept using pure native software as much as possible by helping them to extend their lifetime. There is another hope too. There are situations where the performance is identified as the key factor regardless of how much computation power we have, such as professional video editing/animation. Native software will be protected by these situations.

Do you believe that there are even hybrid web browsers too? Not a surprise hybrids are growing..

Low-end minorities

Image credits: unsplash.com

Earlier we purchased a high-end computer when there is a special need such as gaming, 3D modelling or video editing. But nowadays seriously we need to purchase a high-end computer to run modern general purpose software. Now almost everyone is having at least 4 gigabytes of physical memory that offers enough space for simultaneous execution of several hybrid applications. It sounds like hybrid application vendors are ignoring low-end computer users as a minority?

I had a small room. But I’ve purchased extra large furniture and now I am going to extend the room. — Bloatware user

Conclusion

I wish hybrid applications shouldn’t be a replacement for native software but it definitely should be an option for developers/vendors. Someone could argue that if the hybrid concept wasn’t there we might miss some applications which made our day happy. It is undoubtedly true that the hybrid app concept brought a brand new way of thinking about cross-platform application development whereas we should understand the real value of the purely native application.

Regarding the mobile apps ecosystem, the scenario is somewhat the same. People often let modern hardware solve performance issues happening in software rather than complaining software. Don’t ever say “Goodbye, native” preserve them instead..



from Hacker News https://ift.tt/3muuFVO

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.