事件循环作为语言结构公开的其他语言(框架)?

在http://nodejs.org/#about它说以下内容:

“Node在devise上类似于Ruby的事件机器或者Python的Twisted系统,并且受到其影响。Node将事件模型进一步提升 – 它将事件循环呈现为一种语言结构,而不是一个库。

还有其他的框架或语言同样暴露事件循环?

Tcl一直有这个能力(过去的二十年)。 见http://www.tcl.tk/about/netserver.html

这并不是说Tcl会 – 或者应该做的 – Javascript和/或node.js所做的一切。 但是对于“其他框架或语言……同样暴露事件循环”这个问题,这是一个有效的答案。

说实话,我认为目前还没有与Node.js相媲美的东西。

为什么? 基本上,因为JavaScript从一开始就是单线程的,所以这使得语言的发展如今已经成为一种非常适合asynchronous编程的语言,就像你在Node.js中做的那样。

作为第一类对象的function,以及闭包function,如果你想要类似节点的体验,也是必须的 。 例如,你可以在事件库中包装纯C,并使用它。 但是会有多less乐趣呢? 即使扭曲了,你也不会接近Node.js的体验。

第二点是Node.js除了fs模块的同步函数外没有阻塞函数,所以虽然你可以在Python中做这种编程风格,但你永远不知道库函数是不是会阻止你的整个程序。 并杀死你的服务器的吞吐量。

而且节点很快,就像真的很快。 V8肯定领先于Python和Ruby,是的,你可以为它们编写C-Extensions,但是你也可以为Node.js编写。 另一个使用V8的优点是,谷歌正在投入大量的时间/资金到该引擎,另一个高达2倍的改进已经在与曲轴的方式。

Node.js有更多的优点,它是一个完整的框架(而Twisted主要是asynchronousnetworking),它是JavaScript。

后者可能听起来很愚蠢,但是能够重用代码而不必做上下文切换,并且能够使用成熟的DOM操作框架(当然,只要jsom进入更稳定的状态)是另一个杀手锏。

如果您尚未完成,我build议您观看我们的标记Wiki上列出的几个会谈。
特别是YUI,展示了在不久的将来有什么可能等待着我们。

所以总结一下:
虽然有很多框架有一个事件循环,但是循环本身不会给你像Node.js一样的体验,所以当你用C或者Java做东西的时候,你不应该期望有相似的经验。

对于java平台,我猜你可以将netty与node.js进行比较