Node.js: The Right Language at the Right Time

Divertica utilizes Node.js which allows easy support for Mobile and Multiplatform.

Share This Post

Share on facebook
Share on linkedin
Share on twitter
Share on email

Since its launch in 2009, Node.js has rapidly become one of the most popular languages amongst developers.  Given the timing of its launch, it fit a clear need in the market for a language that leveraged the growth of Javascript but offered greater performance for Server Side applications and outstanding Mobile and Multi-Platform support.

Programming Language Performance Tradeoffs

Some of the key variables that impact the optimal programming language for a given task include:

  • Performance Requirements
  • Utility of Available Libraries associated with programming language
  • Type of Application
  • Application Complexity

In some cases, it is best to use multiple languages for different parts of the application – server side vs client side, etc.

The following chart shows different types of options and impact on performance:

Option

Performance

Complexity

Comments

ASIC

Very High

Extremely High

·Requires extremely skilled hardware and software capabilities

·Requires 18+ months

·Requires large scale

·Example – Cryptocurrency algorithms

Assembly Code

Very High

Very High

·Requires extremely skilled software capabilities with knowledge of processor architecture

·Allows for high performance or lightweight without scale and complexity of ASIC

Fully Compiled

High

High

·  Program is complied in native assembly code

·  Provides greater control over resource allocation

·  Examples: C, C++

Dynamically Compiled Frameworks

Medium/High

Medium

·  Typically have an extensive set of pre-written libraries for particularly types of projects/tasks

·  Dynamic compiling allows for multi-platform support without the full performance hit of interpreted

·  Examples: Node.JS

Interpreted

Low/Medium

Low/Medium

·  Lower performance as program is dynamically interpreted and executed

·  Common approach for scripting where each line is a large task

·  Examples: Python, Javascript

Node.js Advantages

Node.js is a dynamically complied language that allows the use of Javascript on server-side applications.  It was developed in 2009 and gained a high level of traction in the last decade.  It has an extensive set of libraries available to accelerate tasks.  It allows for the use of a single language on both server-side and client-side web applications.  In addition, there is a very large number of open source libraries available to developers using Node.js to accelerate development.  The chart below from a Stackoverflow survey of developers shows just how popular Node.js currently is among developers:

The key drivers of Node.js popularity include:

  • Easy to Learn – It leverages the enormous popularity of Javascript to minimize learning time.
  • Scalability – It is designed with network scalability in mind and can handle many simultaneous sessions.
  • Performance – Node.js uses Google’s V8 Javascript Engine which does just in time compiling to the native machine language.
  • Multi-Platform Support – Since Node.js is not pre-compiled, it can provide straightforward multiplatform support from Google’s V8 Javascript Engine.
  • Multithreading Sort Of – Javascript is inherently not a multithreaded programming language. However, Node.js has a number of workarounds including worker threads that allow for a level of multithreading make it more useful for server-side applications.

Performance Tradeoff

There is a performance tradeoff versus using a fully compiled lower level language such as C++.  However, for web applications that do not have extreme performance requirements, Node.JS significantly reduces development times, particularly for those programmers who are familiar with the wide range of libraries available in Node.JS.  In addition, overall project management becomes easier as Node.JS allows for Javascript to be used across the project.

The chart below shows some examples of performance tradeoffs on very specific test scenarios between C++ and Node.JS.

Divertica’s Perspective

Divertica’s technical team has been using Node.js for almost a decade.  In the hands of a highly experienced programmer it can eliminate a significant amount of programming by:

  • Allowing easy support for Mobile and Multiplatform
  • Leverage existing libraries which can provide over 70% of the code for an application
  • Provide outstanding application performance in a networked web environment

Divertica utilizes Node.js extensively for a variety of application development.  We leverage both widely available open source libraries as well as libraries we have built over the last decade across over 50 projects.

More to explore

Case study

AWS to Azure: Migration Made Easy

Divertica has inventoried almost every AWS to Azure non-proprietary scenario and has built tools and a methodology that allow for rapid migration to Azure as well as maintenance of the Azure environment. 

About us

Democratize the cloud

Divertica’s mission is to make even the most advanced cloud technologies usable for programmers of all skill levels.

Curious yet?

Speak with us to learn more about our services.