Home > Features > Dev Depot: Moving Beyond Php With Node.js • Bookmark   • Newsletters   • Register Search Options

FEATURE

Dev Depot: Moving Beyond Php With Node.js

Dev Depot: Moving Beyond Php With Node.js

November 15, 2013
Text size: 
View in Digital Mag
Get XBIZ News
XBIZ Research
Will virtual reality boost the paysite market?
Yes, it will soon
  40.56%
Yes, but in a few years
  37.06%
No
  22.38%
Out of 143 votes. Results based on votes submitted by members of XBIZ.net social network.

" Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient and perfectly suited for building data-intensive real-time applications running across distributed devices. "

According to software engineer Constantine Aaron Cois, the web is changing. “The web used to be about consumption: Viewing web pages, watching videos, looking at pictures of cats. Of course, its still about pictures of cats, but the web has become more about interaction,” Cois stated. “Users around the world want to interact with each other, and they want to do it in real time. Chat, gaming, constant social media updates, collaboration — each of these features requires real time communication between users, clients, and servers across the web.”

“What’s more,” says Cois, “this real-time communication needs to happen at massive scale, supporting hundreds, thousands, even millions of users.”

Enter Node.js (www.nodejs.org), a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications to serve the needs of today’s web user.

Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient and perfectly suited for building data-intensive real-time applications running across distributed devices. The Node development team offers a simple “hello world” web server example to show that many client connections can be handled concurrently, since each connection is only a small heap allocation.

“Node tells the operating system (through epoll, kqueue, /dev/poll, or select) that it should be notified when a new connection is made, and then it goes to sleep,” a Node rep explains. “If someone new connects, then it executes the callback.”

Contrast this to the more common concurrency model that employs OS thread-based networking, which is often relatively inefficient and very difficult to use, being plagued by process blocks. With Node, nothing blocks, so less-than-expert programmers are able to develop fast and reliable systems.

“Node will show much better memory efficiency under high-loads than systems which allocate 2mb thread stacks for each connection,” the rep clarified. “Furthermore, users of Node are free from worries of dead-locking the process — there are no locks. Almost no function in Node directly performs I/O, so the process never blocks.”

According to its developers, Node is influenced by and similar in design to systems such as Ruby’s Event Machine or Python’s Twisted, but takes the event model further by presenting the event loop as a language construct instead of as a library.

For example, while other systems may issue a blocking call to start the eventloop, defining behavior through callbacks at the beginning of a script and at the end to start a server through a blocking call such as EventMachine::run(), there is no such start-the-event-loop call in Node.

“Node simply enters the event loop after executing the input script [and] exits the event loop when there are no more callbacks to perform,” the rep reveals. “This behavior is like browser JavaScript [where] the event loop is hidden from the user.”

Other nods to the web can also be found in Node, which treats HTTP as a first class protocol, with a library that has grown out of experiences in developing and working with web servers. For example, while streaming data through web frameworks is often impossible, Node’s HTTP parser and API attempt to correct these problems, and when coupled with Node’s event driven infrastructure, it makes a solid foundation for libraries and web frameworks.

For developers concerned about multiple-processor concurrency and using threads to scale programs to multi-core computers, with Node, new processes can be started via the child_process.fork(), with these processes being scheduled in parallel. For load balancing incoming connections across multiple processes, the cluster module provides a solution.

As for why anyone would want to use JavaScript on a server-side application, Cois notes that although JavaScript has traditionally been relegated to menial tasks in the web browser, it’s actually a fully-functional, highly capable programming language.


OPINIONS & VIEWS

Boundaries of Language in Advertising

The second of two parts on Peru. The first part appeared in XBIZ World’s August issue. “While planning our trip we worried about the obvious risks — altitude sickness, food and water.... More »

Witnessing a New Dawn in Adult?

Last month I was asked by XBIZ to provide a short blurb for a magazine feature that asked the question: “What will the paysite market look like five years from now?” What I said was, “I’m... More »

See Bigger Picture, Participate and Stand United

Anyone who’s worked in the adult industry in the past five years knows the challenges we’ve faced. Some people have even questioned staying in the business. After all, between cheap content,... More »
XBIZ NEWSLETTERS
Stay informed of the latest industry developments. Get XBIZ newsletters delivered to your inbox. Subscribe today!
Enter email address:

* To manage existing subscriptions click here.






POPULAR PRODUCTS & SERVICES
Submit your press release to
multiple news outlets with 1 click.
Subscribe to RSS news feeds or
add free content to your website.
Access XBIZ news and articles
with your mobile device.
Subscribe to XBIZ World magazine, the industry's leading e-commerce trade publication, delivering in-depth coverage of the online, mobile and ancillary digital markets.

UPCOMING EVENTS

eroFame

Oct 05 - Oct 07
Hannover, Germany

EXXXOTICA Edison

Nov 04 - Nov 06
Edison, New Jersey

2016 Inked Awards

Nov 05 - Nov 05
Edison, New Jersey

XBIZ 2017

Jan 09 - Jan 13
Hollywood, CA
Everyday thousands of business professionals browse XBIZ's industry directory for quality products and services. Not listed yet? Your company could be losing potential new business. Submit your company today!
Use XBIZ RSS feeds to stay informed of the latest industry developments or as a content syndication tool for your website!