I’ll preface this article with saying that I have nothing personally against Java. And honestly, I don’t think it’s a bad language to build apps in.
Now that is out of the way, I’ll explain why Node will end up winning over Java, at least for corporate web application development. To clarify and stress, Java generally has good performance if your programmers know what they’re doing, is easy to learn, and can scale as needed with proper implementations.
However, Node.js generally has these things going for it as well. And although different stress tests could avail different statistics of each platform, the great thing about Node.js in terms of building web applications is the asynchronous architecture of its run-time environment.
Although Node.js has threads for I/O operations, the runtime environment is architected as an event loop rather than some complicated system of managing threads. It does manage threads, but it’s as simple as having the event loop running – that’s it. As applications become more intensive on I/O operations, companies will need better performance in this area, and this is where Node.js shines. Why? To reiterate, if your web application is just responding to requests and performing general I/O then all of these requests can be handled asynchronously by Node.js by it’s very nature. You don’t have to do anything extra. You don’t have to include libraries to make this magic happen for you. The system itself is built to highly optimize these types of operations.
How long this evolution will take is hard to say. I’m a realist, so I’m not saying this is an overnight event, or a ten year transition. This could take thirty years, and probably will take closer to one hundred years. I think Java is the next COBOL, by and large companies aren’t selecting COBOL as their language/platform of choice when a web application is in mind. But, COBOL has been around because it is performant and was highly used for a number of years. The same will be true of Java.
So to try and make my prophecy more specific I will leave on this note. The argument could be made about any language given enough time. However, it seems to me that if trends continue the way I believe they will, Node.js will grow as a platform and community at a rate consistent and parallel to the rate of growth Java is abandoned at least for a substantial period of time.