* Node.js
Node.js is server-side platform(Not framework!) built on Google Chrome's JavaScript Engine(V8 Engine).
The definition of Node.js by official site is..
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
Node.js is an open-source and support cross-platform environment for developing a diverse variety of server tools and application. Also, it provides a various JavaScript library which simplifies the development of web applications. Node.js are asynchronous and non-blocking library.
- Advantage of Node.js
1. Speed : Node.js is executed on Google Chrome's V8 JavaScript Engine. This engine compile directly JavaScript code into machine code. So, execution speed is fast and efficient. In addition to, the runtime environment increases significantly the execution speed by supporting non-blocking I/O operations.
2. Using a single programming language : Since Node.js consist of JavaScript language and provide JavaScript libraries, developers are able to use only one language between server-side and client-side. It brings easy and efficient development environment to deploy application. For example, developer can choose express.js or meteor.js as a backend part and backbone.js or React.js as a frontend part.
3. npm : npm makes it easy for JavaScript developers to share and reuse code as a package. Also, it make easy to update the package. Numerous kind of package are involved in npm and it is still growing.
4. Facilitates Real-Time Application Development : Node.js is used to build real-time and multi-user applications like chats. It manages multi-user requirements through event loop. It uses websockets simplify and speedup bi-directional communication between the server and the client.
- Disadvantage of Node.js
1. Unstable Application Programming Interface : In contrast with C++ or Java, Node.js keeps changing at frequent intervals. So, sometimes, backwards-incompatible changes are occurred and made developers to change the existing code.
2. Scalability - Node.js does not provide ability to scale in order to take advantage of the multiple cores which is commonly in today's server-class hardware.
3. Node.js is not able to support CPU-intensive tasks. It is only for I/O operation.