Recently I stumbled across this pretty slick JS library called nodeJS that acts like a server side JS.
The main feature of the language being Evented I/O which gives the inherent capacity of I/O being completely non-blocking using callbacks!!!
My question is, if this kind of completely non-blocking I/O mechanism existed in the past (given event driven I/O has been around for a long time), why aren't they more popular in high level languages like C# and Java (although Java has NIO implementation that supports non-blocking I/O)?
Currently, a simple file read/write operation results in complete I/O blocking which is not the case with event driven I/O.
I'd like to gain a better understanding of event driven I/O and how it is different from what we have in Java.
Java: http://en.wikipedia.org/wiki/New_I/O
A multiplexed, non-blocking I/O facility for writing scalable servers
.NET: http://msdn.microsoft.com/en-us/library/dxkwh6zw.aspx
public IAsyncResult BeginReceive(
byte[] buffer,
int offset,
int size,
SocketFlags socketFlags,
AsyncCallback callback,
Object state
)