Why Node.js?
Update: The Node.JS event loop is key to what makes Node so great.
Be sure to check out this explanation before deciding if NodeJS is right for you.
Node.js has quickly become one of the most popular platforms for application development. It's fast, easy to understand, and has one of the most explosive communities today. Whether you are a beginner or advanced engineer, you can't deny the benefits of choosing Node.js for app development.
Node.js has an easier learning curve.
Almost every developer has had some experience with JavaScript. It's been around since 1995 and remains a cornerstone of web development. Unlike Java, which is compiled and statically typed, JavaScript is interpreted and dynamically typed. This makes the language a lot easier to pick up, as new developers don't need get stuck in the weeds with memory allocation or data types.
This easier syntax is especially advantageous when it can be applied to the whole stack. Unlike other development platforms, Node.js uses the same language at every level of development. With JSON based databases like CouchDB and MongoDB, even back end data requests can be written with JavaScript. This makes it easier for even a novice to control every facet of the development process.
The ubiquity provided by JavaScript & JSON allow developers to write code that can be applied to both client/server operations. While many Java based frameworks have proved sufficient in delivering data to a JavaScript rich client, developers still have to write back end services that parse and deliver data to client side (JavaScript) code. With Node, the same block of code can be used everywhere. An example could be the creation of a class. A developer may create a User class to parse a JSON response from a database. This same class can then be used on the client to display user information, without having to rewrite the same class in a different language.
Similarly, Node's build process is written in JavaScript, providing an additional advantage not shared by popular Java build tools like Ant & Maven. While these build tools have made Java based web development much more managable, they are written in XML (not Java). Node uses JSON to define and include dependencies, keeping things consistent everywhere for developers.
Ubiquity comes into play even at the database level. Other platforms may have sophisticated ORM libraries for reading/writing objects to a database, but they still require SQL written queries. These can get cumbersome to the point that many companies hire full time SQL developers. With Node, database queries can be written in JSON. Database engines like MongoDB and CouchDB even store records as JSON objects, completely blurring the line between the front/back end.
Node.js is fast.
While a great debate exists as to whether Node.js is faster than Java, everyone can agree (at a minimum) that nothing is lost, performance wise, with Node.js. Its ability to handle asynchronous requests is arguably superior to other environments. Bottom line, performance is not a reason to NOT use node.
Node has an explosive online community.
Everyone in the development community can agree that Node has a tremendous amount of momentum behind it. Just check Module Counts to see how explosive Node's growth has been in the past few years. Compared to its competitors (Ruby Gems, Maven, PyPI), NPM has had 150,000+ new modules added to it's registry (vs less than 50,000 for some competitors) in 2016.
Arguments against Node.js?
Despite Node's explosive growth in the past few years, it still lacks in some areas. Unlike Java's Eclipse or IntelliJ, Node doesn't have a dominant IDE. Although IDE's like Webstorm and Node-Red are taking nice stabs at it, there still exists a void here. Additionally, Node hasn't been around for as long as some competitors, namely Java. The JVM has been around for years. It's been rigorously tested and provides a level of sophistication that Node has yet to supersede. This is especially important from a security standpoint, as many enterprise level developers still flock to Java for its more established reputation and tested frameworks.
Conclusion
It may be a few years before Node is as trusted as Java. Despite its shortcomings, both Node's ubiquity and momentum are making it a highly recommended choice for developers in today's world.