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 and which gives the inherent capacity of I/O being completely non-blocking!!! using callbacks.
My question is if such kind of I/O mechanism which is completely non-blocking existed in the past (event driven I/O had been for a long time), why the high level and popular languages like C#, Java aren't quite popular with them (Java has NIO implementation though that supports non-blocking I/O). As we know a simple file read/write operation results in complete I/O blocking which is not the case with event driven I/O. Also I am trying to understand more about event driven I/O and how it is different from what we have in Java.