Skip to main content

Introduction to NodeJS




NodeJS is know as a  highly scalable, data intensive and  a real time back-end service. NodeJS is an open source, cross platform runtime environment for server-side and networking applications. To build a back-end services there are other tools and framework such as rails, Django, asp.net etc.. Node is not a programming language not a framework. There are few characteristics that make Node more popular.

Characteristics of NodeJS.


  • Easy to get started.
  • Can be used for prototyping and agile development.
  • It is good to build super fast and highly scalable services.
         Eg -: Paypal, Uber, Netflix, Walmart
  • It use JavaScript.
  • Source code will be cleaner and more consistence.
  • Large Eco-system of open source library.

Node is a runtime environment for executing JavaScript code.

Runtime environment of NodeJs. 

In JavaScript the application runs inside the browser . Browser has a JavaScript engine taht convert the code to machine code.
e => ChakraFirefox => SpidermonkeyChrome => V8  

Browser provide the runtime environment. NodeJs is created as a C++ program that is embedded in V8. Similar to a browser Node is a runtime environment for JavaScript.

Node is a program that includes V8 JvaScript engine and additional modules that give the capabilities that are not available in a browser.


Event loop.

Uses event-driven, non-blocking I/O model which makes NodeJS lightweight and efficient. Node handles multiple requests using a single thread asynchronously.  Frameworks such as asp.net, rails are synchronous/Blocking.

Single thread to handle multiple requests.
In synchronous/blocking thread is allocated to each and every request. If in a scenario where all the threads are allocated to requests the new client (request) must wait until a thread is released or if we do not need the clients to wait then we must allocate more hardware which will not be utilized well.


Event loop.
When a request arrives the thread handles the request. As an example while the database executes the query, that same thread is used to serve another client. When the database response with the result it will pit to the event loop. Node continuously monitors the event loop in the background. When an event is found in the event loop , take it out and process. Using this technique it helps to serve more clients without throwing more hardware makes Node more scalable.


Advantages and Disadvantages of NodeJS.



Advantages of NodeJS.

  • Ability to use single programming language from one end of the application to the other end.
  • NodeJS applications are easy to scale both horizontally and vertically.
  • Delivers improved performance since V8 engine compile the JavaScript code into machine code directly.
  • Performance increased via caching modules into memory after the first use.
  • Easily extensible.
  • Support for common tools like unit testing.
  • Well build ‘npm’ package manager and it’s large number of reusable modules.

Disadvantages of NodeJS.

  • Even though there are number of libraries available, the actual number of robust libraries is comparatively low.
  • Not suitable for computationally intensive tasks.
  • Asynchronous programming model is complex than synchronous model.



Comments

Popular posts from this blog

Spring MVC Overview

Spring MVC is a java framework that is used to build web applications. It uses  Model-View-Control design pattern and implements basic features of core spring framework such as Inversion of Control, Dependency Injection How Spring MVC works. When the client sends a request the request is captured by the Dispatcher Servlet which act as the front Controller of the system. With the help of helpers( Handler Mappings, Controller, View Resolver, View) front controller will responds the client with HTML and data. When the Dispatcher Servlet gets the request from the client, the request is immediately sent to Handler Mappings. Handler Mapping will scan the URL and will respond to the Dispatcher Servlet with address of the class that can generate data for the web page which the end user has requested.  With the respond of the Handler Mapping Dispatcher Servlet will forward the request to the Controller, so that the data will be prepared and creates a java objec...

Overview on Struts2.

Struts2 is a popular and mature web application framework based on MVC design pattern. Struts2 is not just a new version of Struts1 but it is a complete re-write of Struts architecture. The webwork framework initially started with Struts framework as the basis and it's goal was to offer an enhance and improved framework built on Struts to make the web development easier for the developers. Architecture of Struts2 Framework. FilterDispatcher routes all the requests of the framework by acting as the "front controller" . With the use of the configured interceptors the request will be processed( pre-processing) before it is routed to the Action class. Action will take control of the request and plays the role of the "model" component..Once all the interceptors are invoked    Action class takes the responsibility to execute the business logic and returns the result that is needed to be invoked.(Action class will communicate with different classes...

Basic concepts on ReactJS

Props and State. Props and state are the two basic ways to handle data in ReactJS.  Props are used to pass data and behaviors from container components to child components. Props are read only. State is used to keep data which can be updated. State is read write enabled. State. State is basically available through  'this.state', which is by default is null. Whenever the state changes on a component the component will  automatically re-render and update DOM (Document Object Model) if there are any changes else the DOM will not get touched at all. Using state. To change the state setState() method can be used. Since setTimeOut() method is used in the bellow example after a second (1000ms)  'Will'   will be changed to  'Bob'.   Changing the state using  'setState()' If the component has an internal value that does not effect the application state is appropriate. A side from that props can be used. Props. Pro...