
Once upon a time PHP, Apache and MySQL combined with JavaScript via AJAX was the perfect match for a web developer. It seemed that this toolkit could solve any problem. However, the requirements were increasing, the source code was growing before our eyes, the load was increasing and the usual tools were no longer able to cope.
The experts
were sure that the classical “request-response” scheme was to blame. The page request made the web server pick up some script, execute it linearly, and return the result to the browser client. And only after that go to the processing of the next request.
')
In search of a way out of this situation, bright minds remembered that the server can be written in JavaScript.
Then it would give the opportunity to develop in the same language and server and client parts of the site. By the end of the 2000s, this was a simple and at the same time flexible language, allowing to write code in different paradigms: from ordinary procedural to OOP in combination with the functional style. But another key feature of JavaScript, asynchronism, played a decisive role.
Here is an example of the limitations of sequential code execution in PHP, which we borrowed
from here :
$result = $db->fetchOne('SELECT user_name FROM user_accounts WHERE id = 1'); echo ' : ' . $result . ';';
The first line contains a simple SQL query to the database to fetch the name of the user whose id = 1. At this point, the script stops and the next line will not be executed until the request is processed by the database, and the result returns to $ result variable. In our example, these are thousandths of a second, but in reality, requests are much more complicated, and the bases are often gigabytes in size, and there can be a couple of requests of these at the same time.
Asynchronous JS code execution:
db.query('SELECT user_name FROM user_accounts WHERE id = 1', function(err, res) { if (!err) sys.log(' : ' + res); }); sys.log(' ');
Here, again, a database query is created, but in addition to the SQL expression itself, the callback function is also transmitted in the query. This function will be called exactly when the response from the database comes, and up to this point the execution of the script will never stop. So, the basis of any version of server-side JavaScript is the concept of events and callbacks, that is, event handlers. Those actions that must be performed in the event of an event occurrence are described inside the event handler functions.
Similar considerations prompted JS lovers to create their own server engines.
Node.js
On September 2, the first public release of the Chromium open browser was officially presented. During the development, V8 was also created - a JavaScript interpreter for the browser. Its lead developer was Lars Buck. The main problems that had to be solved by the developers in the engine were performance and scalability.
After the success of the browser, the bright minds realized that such a fast engine could also be successfully used on the server.

Further experiments led to the emergence of the Node.js project - a completely independent platform, including, apart from the engine, an embedded server (HTTP and TCP / UDP / Unix-soket) and a basic set of libraries, as well as providing a fully asynchronous work with files and network devices.
Node.js was developed by Ryan Dahl in 2009. He came to the conclusion that instead of the traditional model of parallelism based on threads, one should turn to event-oriented systems. This model was chosen because of its simplicity, low overhead (compared with the ideology of “one stream per connection”) and speed.
To run an HTTP server that can handle thousands of connections asynchronously, you need a few lines of code:
The emergence of Node.js caused a stir among developers. Already at an early stage of development of the project, companies like Netflix, Walmart, PayPal, Dow Jones and Groupon began using it.
And they would live happily ever after, but ...
In November 2014, there was a split in the Node.js community. Some participants were unhappy with the policy of Joyent, which oversees the development of the Node.js project.
It was also alleged that Joyent ignored the opinion of the community, acted only in their own interests and concentrated control over the project only in their hands. In addition, Joyent by then gave an absolute priority to ensuring the stability of the code base, which complicated the integration of new features. No significant releases have been released since the beginning of 2013, the last actual 0.10 branch was based on the outdated version of the V8 engine.
Joyent’s branch office was supported by 5 of 7 key Node.js developers, among them Isaac Schlüter, the former project leader.
After a few months, it turned out that io.js exceeded it in terms of both performance and speed of development.
Reunion
In May 2015, a meeting of the technical committee of the io.js project was held, at which a decision was made to reunite with Node.js and further joint development under the auspices of the Node Foundation.
The curated project of the joint project was the Linux Foundation organization, which formed an effective and independent platform for the development of Node.js. Joyent continued to participate in the development, support and financing of the project, but as an ordinary member of the community. In addition to Joyent, the founders of the Node.js Foundation include companies such as IBM, Microsoft, PayPal, Fidelity, and SAP.
September 8, 2015 came Node.js v4.0.0 as a result of the merger of Node.js v0.12.7 and io.js v3.3.0
After the merger, the community drew attention to impressive statistics: in 2010-2015, developers added over 190,000 modules for Node.js (and other JavaScript libraries) to the code repository. This exceeds the entire Perl CPAN repository, which has been created for over 20 years, and bypasses Java Maven Central, despite fewer Node.js developers.
Node.js 7
At the end of September 2016, Node.js 7 beta was released. It uses the updated engine V8 5.4. In addition, it supports 98% of the ECMAScript 6 standard. Compared to 56% in Node.js 5, this is significant progress.
However, it is not only the Node.js version numbers that grow. According to Indeed.com, demand for Node.js specialists in the labor market continues to grow.

However, such statistics do not always reflect the real state of things, so we decided to talk with experts about how to use the technology, about Node.js competitors and about the prospects for the development of the project.
1. How fast do you think Node.js develops? Are you satisfied with the current pace?
2. How do you rate its demand, popularity in terms of serious development in IT companies? How justified is she? For which projects is Node.js suitable?
3. How has the Node.js developer market changed? They became less, more? How do you feel the quality of their work has changed?
4. Can you name competitors Node.js? How strong are they?
5. What are the prospects for Node.js for the next 5 years?
How fast do you think Node.js develops? Are you satisfied with the current pace?After the creation of the Node.js Foundation, everything became much better. Now everything suits me personally.
How do you assess its relevance, popularity in terms of serious development in IT companies? How justified is she? For which projects is Node.js suitable?I do not have such statistics, so I can only judge by my feelings.
Demand - defined yes. Many things are very simply done using Node.js. Popularity is hard to say. Definitely we can say that in the environment of front-end developers, it is very popular.
How justified is she? It all depends on the task. For some tasks, JavaScript is better suited, for some worse. To entrust Node.js with the frontend assembly is justified and rightly so. Trust Node.js control of the spacecraft - perhaps you can, but I would choose more reliable technologies.
How has the Node.js developer market changed? They became less, more? How do you feel the quality of their work has changedI did not notice any sharp change in demand for Node.js developers. Perhaps the possession of Node.js has become a mandatory requirement for front-end developers lately. Specialists have become much more, but their quality is difficult to assess. I do not have such statistics.
Node.js is just a tool for executing JavaScript scripts. Of course, this is one of the most popular tools for executing non-browser JavaScript.
What are the prospects for Node.js for the next 5 years?I think Node.js has a great future. Especially among front-end developers. In other areas, the benefits of javascript are not at all obvious.
Danil Skachkov , Senior Software Developer, api.ai
How fast do you think Node.js develops?It develops well, but, in my opinion, body kits develop too fast and somewhat messy. To the most node.js as to a rantaym there are no complaints.
Are you satisfied with the current pace?And why not, it is better to develop than stand still.
How do you assess its relevance, popularity in terms of serious development in IT companies?
In short, it is ambiguous. But it all depends very much on what language you use for developing under Node.js. If pure JavaScript, then you can very quickly encounter what becomes incomprehensible what is connected with your program. This is due to the fact that JS is dynamic. In the case of using TypeScript, for example, you will have type checking at compile time, and, accordingly, there will be less fuzziness in the program.
How justified is she? For which projects is Node.js suitable?It depends on the task. For microservices, in my opinion - the most it.
Can you name Node.js competitors? How strong are they?Well, here you can remember for a very long time. As far as I can imagine, any product suitable for writing a backend will be a competitor. And all products will have their strengths and weaknesses. Node.js, at the moment, is strong in its simplicity on small tasks.
For example, for writing small REST services. With a large amount of code, there may be problems with the transparency of the logic of the application, but, as I said, this is a JavaScript feature that can be easily solved using Typescript or something like that.
What are the prospects for Node.js for the next 5 years?The prospects for any technology in such a time period are quite difficult to predict. I think in the near future, popularity will grow, due to the popularity of microservices and simplicity on small tasks. Well, then we'll see.
Denis Izmailov , co-founder of Moscow Node.js Meetup, founder of the Node.js group in Telegram, is engaged in custom development in the international market:
How fast do you think Node.js develops? Are you satisfied with the current pace?
Two years ago it was possible to be dissatisfied, but we all remember that story, when in January of last year Fedor Indutny published fork - io.js, in order to force the introduction of the latest versions of V8 and make the development process more open. This led to the fact that a year ago the legendary version of Node.js 4.0.0 was released and since then, we have been seeing releases
every month .
Another question is the contents of these changes, but this is a topic for a separate discussion. The good news is that with such an active and continuous development cycle, we managed to find a middle ground, and now supporters of stability remain happy at the expense of the LTS versions, which are crucial for Production and large projects.
How do you assess its relevance, popularity in terms of serious development in IT companies? How justified is she? For which projects is Node.js suitable?For everyone, with the correct cluster configuration on Kubernetes. This is how we decided for our customers issues with the scalability and elasticity of the system. But if you look at the experience of colleagues and take into account all the nuances in the labor market, there is still a small range of specific tasks that would be safer (from a business point of view) using Python, Golang or Erlang - such as Data Mining, Data Processing and other
If we talk about demand from companies or IT departments, then it is constantly growing and there are a lot of reasons - both avoiding PHP, Ruby and Java in web development, and the possibility of isomorphic applications, which I have already talked about a lot in my reports at conferences and meetings. All this allows you to significantly reduce costs and improve the quality of products.
How has the Node.js developer market changed? They became less, more? How do you feel the quality of their work has changed?Market where exactly? Globally it has greatly increased and continues to increase. The demand for Fullstack JS on the international market exceeds supply multiple times. This contributes to the growth of startups, and the maturity of the ecosystem as a whole. Many developers leave for high salaries in the United States, Europe and Asia, or simply go to the remote form of work. In this vein, in the local market, we see even a small reduction in professional developers on the one hand, and a large influx of juniors on the other.
That is why we started holding meetings on Node.js in Moscow, where guys can communicate live with the developers of the Node.js core itself - such interesting personalities as Vladimir Kurchatkin and Nikita Skovoroda.
Can you name Node.js competitors? How strong are they?Of course there immediately begs the answer about Golang. Its market share is also growing noticeably. But most often at the expense of large business and DevOps solutions, where milliseconds are crucial. There, the service at Golang may well pay off, but that is if the budget allows the project.
What are the prospects for Node.js for the next 5 years?Some time ago, many had hope for WebAssembly. And then, if asm.js did not work out, then now it will be possible to run “byte code” exactly in the browser, which means programming in any language. But today we again see that the producers cannot agree, and this means that JavaScript has a bright future.
Now I will not say anything about multithreading, analogs of goroutine and channels or about the fact that Node.js will refuse V8 after ES6 stabilization, simply because the interaction of services has a slightly different specificity than browsers. But I’ll note quite interesting chances for Microsoft to regain its leadership in the community, and in this segment in particular, due to high-quality tools.
In the meantime, we are waiting for Node.js v7.x, which promises us to finally bring async-await.
Ilya Kantor , creator of JavaScript.ru, one of the first professional teachers of the JS language in Russia:
How fast do you think Node.js develops? Are you satisfied with the current pace?Now Node.JS is developing very fast: both Node.JS itself, and the JavaScript language and related infrastructure.
Of course, I would like to quickly introduce new features, but the situation is changing very quickly. For example, callback-style recently changed to promises + generators, and they will be replaced by async / await in the coming year. When you write code, you need to keep this in mind in order not to rewrite.
How do you assess its relevance, popularity in terms of serious development in IT companies? How justified is she? For which projects is Node.js suitable?A lot of tools. The choice depends heavily on personal preference.
Some advantages of Node.JS:
1) It is fast, in terms of performance. Of course, there are languages ​​that are faster, especially compiled with strong typing, but in general, Node.JS is quite fast. As a rule, the service on Node.JS will be faster written in PHP or Ruby.
Since its creation, Node.JS has been used for applications with a large number of simultaneous connections, between which data “flies”. With this, respectively, also no problem.
2) Development on it is also quite fast.
3) JavaScript and on the frontend, and on the backend when developing web applications allows you to use the same code and there, and there. Isomorphic applications - that's it. Yes, and developers it is more convenient to use one language. After the latest improvements, JavaScript has become much nicer.
How has the Node.js developer market changed? They became less, more? How do you feel the quality of their work has changed?Sorry, the “market” is not tracking. Good developers are always enough. In terms of Node.JS it is usually easier to grow than to find a ready one.
Can you name Node.js competitors? How strong are they?Node.JS has no serious competitors among JavaScript platforms. If we talk about other languages, the choice depends on the task, as well as the personal preferences of the developer, which is clearer and closer to him. On what people like to code, on that they will write.
What are the prospects for Node.js for the next 5 years?Now everything is developing very quickly, 5 years is a long time. If you look at current trends, Node.JS is moving forward quickly. On the other hand, the important advantage of Node.JS is that JavaScript is the only cross-browser development language, exactly at the browser level.
Perhaps in the future, the standard WebAssembly will be introduced, which will deprive it of this advantage. On the other hand, even if this happens, it will not be soon, and Node.JS will grow by that time. Perhaps this advantage for him and will not be so important.