从Java或Groovy运行node-js

任何人试验如何运行node.js模块或从Java或Groovy的脚本?

可以groovy command.execute()做到这一点? 如果是这样,那么它将在不同的操作系统中performance相同。

值得注意的是,理想情况下,我希望node.js不会依赖于系统和节点命令的安装,而是通过./configure和make打包,以便它可以用作库。

谢谢

编辑:基本上我想这样做,我可以使用node.js模块,客户端框架(咖啡脚本,玉,手写笔等,这是在早午餐bundeled),作为一个Grails插件。 所以这个插件是独立的,没有系统依赖。

您可能会在vert.x中find您要查找的内容 。

来自网站:

什么是vert.x?

下一代polyglotasynchronous应用程序框架。 (以前称为node.x)

  • 在JVM上运行。
  • 包含像node.js这样的事件驱动框架的优点,然后添加一些更加抽象的位。
  • 一切都是非阻塞的。
  • 通晓多国语言。 vert.x可用于多种语言:Ruby,Groovy,Java,JavaScript,Python,Clojure,Scala。 目前我们支持Java和Ruby,并有部分Groovy支持。 用您select的语言编写您的代码。 利用该语言的vert.x的强大function。
  • 随着Java 7中InvokeDynamic的最新发展,JVM上的投注将成为dynamic语言的未来首要运行时。
  • 使您能够轻松创buildnetworking服务器或客户端。
  • 真正的可扩展性。 与其他众所周知的事件驱动框架不同,每个进程可以有多个事件循环。 为了利用服务器上的内核,不再需要转换32个实例。
  • 令人难以置信的简单的并发模型。 把你的代码写成单线程,但是看它在多个内核之间扩展。 无需担心竞赛条件或locking。
  • 了解多种networking协议,包括:TCP,SSL,HTTP,HTTPS,Websockets。
  • 从文件系统中有效地提供静态文件绕过用户空间。
  • 基于简单的Sinatra / Express风格资源的networking路由。
  • 分布式事件总线。 多个vert.x实例可以无缝协作,提供分布式事件总线
  • SockJS支持

是的,你可以只用command.execute()

更优雅的方式可能是构build一个只接受来自本地主机的请求的node.js服务器。 但是这个时髦的作品:

def file = new File("script.js") def fileStream = file.newOutputStream() fileStream << "console.log('hello from node.js');" fileStream.close() def command = "/usr/local/bin/node " + file.absolutePath def proc = command.execute() proc.waitFor() println "return code: ${ proc.exitValue()}" println "stderr: ${proc.err.text}" println "stdout: ${proc.in.text}"