This week continues to reflect on the changes at the front end.

I talked about some of the changes in the front end, but the truth is that over the past few years the front end has changed dramatically not just in its own technology direction, but in an attempt to attack all of them and displace its dominant technology. So what’s all this about? What’s the status quo?

This is the fourth in a series on the Evolution of the front End: Advancing the Front End.

  1. Change of the front end (I) : change and invariance of technology

  2. Front end change (2) : “unchanged” front end

  3. Front end change (3) : change and breakthrough

All-round attack

If we review the development process of technology over the past few years, we will find that the change of the front end not just reflected in front the one direction itself, with the core language front-end JavaScript not only gave birth to change and breakthrough in the field of web programming, more interesting is it to the other direction to breakthrough and development, and try to capture this does not belong to his field

Backend development -NodeJS

In my memory, I was still working as an architect and NodeJS was very popular at the time when I was using Java for back-end development.

I didn’t know much about the technology at the time, but I simply knew that you could use the JavaScript language for back-end development, which is what Java does today. There was even a time when NodeJS was embraced by the industry as a whole.

Could it be that its event loop mechanism is far more efficient than traditional that-blocking Java, or could it be that it doesn’t need a back-end Java programmer, just a front-end engineer? Or maybe it was something else that I don’t know about, but it was very well accepted at that time, including by some of the major Internet companies.

There was a sense that it could really replace Java.

React Native mobile development

It’s not just the back end, the front end extends its reach into mobile development.

In our technology space, there is always a conflict between native development and cross-platform development. Wherever there is more than one native development, there will be technologies that attempt cross-platform development.

This is especially true on mobile. Because we’re still mobile-first, people will never stop experimenting with mobile technology.

In the field of mobile terminal cross-platform development technology, the front end once again launched an attack. Based on Its React, Facebook integrated a React Navite technology, using JavaScript + React to build a cross-platform development solution for mobile terminal development.

This time, JavaScript is attacking mobile development.

Desktop development — Nw.js with Electron

As I mentioned earlier, wherever there is native development, there will be cross-platform development technologies.

The same phenomenon applies to desktop development.

In the past, because Windows was so dominant, desktop development only had to worry about it, so there wasn’t much need for cross-platform.

But with the rise of iOS and the rise and popularity of Mac OS in specialized industries such as programming and design, the Linux desktop has slowly grown. In this context, and with the evolving capabilities of JavaScript itself, it has developed a cross-platform desktop development technology.

Hence the emergence of cross-platform desktop development technologies nw.js and Electron.

This time, front-end technology is attacking desktop development.

Breakthroughs and Setbacks

If we look at the technology as a whole, we will find that no one technology can compare to this kind of all-around attack in the front end, and no other technology can do it.

Obviously, all this is a breakthrough, we have to admit that it brings a new technical scheme, although the front-end development situation is different in every direction, even some direction encountered setbacks, but it is a breakthrough is still worthy of awe, and above all the direction of the front end to provide solution until now still is feasible.

NodeJS – No substitute for Java

Java is still the perennial language, and NodeJS has failed to replace it.

In the backend world, Java is still the dominant choice, and NodeJS offers a niche solution. There are some backend projects or products that use NodeJS, but they are not comparable to Java. For large-scale complex architectures, Java is almost the only option, and NodeJS is completely out of the question.

React Native — In a difficult situation

Although I haven’t really used React Native, I used React Native development for iOS and Android in the past. Meanwhile, I have read the official documents of React Native for many times, so I still have a certain understanding of its concept and technical implementation.

React Navite tries to get front-end people to do mobile development, but it has two fatal drawbacks:

  • Unlike a cross-platform solution like Java, it does not have a single JVM middle layer that shields different operating systems from one another to provide a unified API or experience, but rather translates into native implementations of different operating systems. This approach brings up a lot of details. With React Native, it’s hard to ignore the Native. However, there is obvious dislocation and weakness between front-end personnel and mobile terminal native technology.
  • There is always a performance gap between it and true native, like a chasm that cannot be crossed. This drawback of React Native is magnified when apps need to consider experience and performance.

Almost every once in a while, a company drops RN and goes back to Native news, and the recent development of Flutter technology takes a completely different tack from React Native by providing an “intermediate layer” that, like the JVM, tries to block Native entirely.

The current situation of React Native can be described as follows: It is difficult to move forward, but there are troops chasing after it

Nw.js and Electron — A cost-effective solution

Nw.js is in a much better position than Electron.

Unlike NodeJS, it does not face the same mainstream competitors as Java, and there is no better alternative for desktop cross-platform development in terms of cost performance.

Also, unlike React Native, you almost never have to think about Native systems. It’s built on Chromium.

Unless you have high performance requirements, most programs use them well enough. They are the most cost-effective solution.

You may not realize it, but a lot of popular software is built around this solution

  • Front-end staff development tool: Visual Studio Code – divine presence, which represents the best that can be done based on this solution.
  • The early Nail client was also built based on this solution
  • IDE for wechat applets
  • Thunderbolt X

There are a lot of other things that you download that have tens of megabytes or hundreds of megabytes, that are cross-platform, and basically you can think about that, and it’s probably based on this solution.

The PCX I did in 2000 is the solution based on Electron. I even compiled some versions of domestic Linux system for it, especially one version on loongson CPU, which impressed me very much. This shows how powerful it is across platforms.

Of course, under this kind of program, can do well, will depend on the level and strength. Many based on this scheme to make the product completely a shell web application, this is a relatively low performance. I’ve actually encountered a lot of this.

There is an essential difference in thinking between Web apps and native apps:

Web data is almost always fully loaded, with data being loaded from scratch on each entry, whereas native applications are almost always incrementally loaded, with incremental refreshes on each entry. Applications need to cache as much data as possible locally

This is a standard by which you can determine whether you are making a shell web app or a native like app.

How did this happen

The development of the front end is amazing, not just the front end itself, but in fact in all areas, there are now front ends, they are attacking all technological directions.

In the beginning, the front end was an adjunct to back-end development, where the pages needed to be implemented by front-end people. In fact, back then, many backend programmers worked part-time. Contrast today before the end, not the same day can be language.

The front end technology has become a very important part of our industry.

So, we have to ask the soul question:

Who, exactly, made this change to the front end?

The Change at the front (5) : The Return of the King


Visit the official website taoofcode.cc – Spreading the taoof coding with our little power