Big time support for Node.js
Microsoft is backing Node.js as a development language on the company's Windows Azure cloud platform. The company offers its Windows Azure SDK for Node.js. "Over the next couple of weeks, you're going to see basically us round out all of the features of Azure to have integrated Node.js libraries," says Microsoft vice president Scott Guthrie.
Node.js also is catching on at lesser-known companies such as GroupDock, which provides a business application platform for HTML5 applications that can work on computers and mobile devices.
Node.js is no panacea
Node.js creator Dahl acknowledges Dziuba's concerns, but says they are not mainstream: "This person makes complaints about how CPU-bound tasks can block a process, which is true. Most servers we see are I/O-bound, not calculating numbers in a tight loop, so they do not hit this problem."
"If there is a CPU-bound part of a server, we provide a number of methods for running it in parallel, which [Dziuba] does not consider (for example, a child_process.fork). It certainly is not a scalability disaster waiting to happen." Dahl cites the smartphone application builder Voxer, which runs hundreds of Node processes to do VoIP, processing thousands of parallel processes.
Whereas Dahl sees Node.js as a Java replacement on servers, others disagree. "The short answer is no, we don't see Node.js displacing PHP or Java," says Solomon Hykes, CEO of DotCloud, which offers a cloud computing platform that supports Node.js. "But we're seeing two very important trends: First, the landscape of server-side languages and frameworks is increasingly fragmented and applications increasingly need to combine several of them to be successful. So we're going to see more of Java and Node.js, more of PHP plus Node.js, for example, all working together in the same application."
Where Node.js is headed
A formal 1.0 version should arrive this summer, Dahl says. Among features planned for Node.js, although not necessarily in the 1.0 release, are binary modules, which allow developers to interface with system libraries written in C. "For example, if you needed to connect to Oracle, you would want a binary module to interface with the database driver," he says. Also eyed is a versioning scheme for APIs, in which internal APIs would be labelled with a stability level.