Date of Award

3-2016

Culminating Project Type

Starred Paper

Degree Name

Computer Science: M.S.

Department

Computer Science and Information Technology

College

School of Science and Engineering

First Advisor

Andrew A. Anda

Second Advisor

Bryant A. Julstrom

Third Advisor

Dennis Guster

Creative Commons License

Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License.

Keywords and Subject Headings

Node.js, Node.js Installation, AJAX, JavaScript, Node.js Security, Socket.io, Node.js Benchmarking, Server-side Javascript

Abstract

Node.js (also termed Node) is a platform built on Google Chrome V8 JavaScript runtime engine for easily building fast, scalable, and lightweight applications.V8 and Node are mostly implemented in C and C++ focusing on performance and low memory consumption. In this paper, we provide an overview of Node by comparing it to a conventional server-side scripting programming language, PHP. Initially, we focus on Node’s modularity, its in-built package manager labeled Node Package Manager and Node’s working architecture. The main feature of Node is its use of non-blocking event-driven I/O with an asynchronous programming model to remain lightweight and efficient in handling concurrency. These comprise the underlying features of Node which we discuss in detail. Node differs from JavaScript which we describe by emphasizing some major deficiencies in JavaScript that Node remediates. Likewise, by introducing AJAX, and its pros and cons, we show how Node surpasses AJAX in real-time application development usability. With Node.js, complex real-time applications can be built that can scale to millions of client connections. We also discuss factors supporting choosing Node and why developers should use it. We describe some of the security holes in Node with solutions to handle them. In order to clarify where Node succeeds and where it fails, we present two different benchmarks comparing Node with PHP. We conclude by highlighting some of the limitations of Node and we discuss the current developments in process to remediate Node’s deficiencies.

Comments/Acknowledgements

I would like to thank my committee members, Professor Andrew A. Anda, Professor Bryant A. Julstrom, and Professor Dennis Guster for their continuous support, feedback and guidance. My special thank goes to Professor Dennis Guster and Martin Smith for providing the test environment in BCRL (Business Computing Research Laboratory) without which one of the important section of this paper would not have been possible. Also, I would like to thank the Computer Science Department Faculty at St. Cloud State University for providing me high-tech education and technical skills required to write technical paper like this. Special thanks also go to my family for supporting me and encouraging me to do the best.

Share

COinS
 
 

To view the content in your browser, please download Adobe Reader or, alternately,
you may Download the file to your hard drive.

NOTE: The latest versions of Adobe Reader do not support viewing PDF files within Firefox on Mac OS and if you are using a modern (Intel) Mac, there is no official plugin for viewing PDF files within the browser window.