从Java或Groovy运行node-js

时间:2012-02-02 20:04:09

标签: java grails node.js groovy

有人试过如何从java或groovy运行node.js模块或脚本吗?

可以groovy command.execute()吗?如果是这样,那么它将在不同的操作系统中表现相同。

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

由于

编辑:基本上我想要这个,这样我就可以使用node.js模块,一个客户端框架(咖啡脚本,玉器,手写笔等等。这是Brunch中的Bundeled),作为Grails插件。这样插件就是自包含的,没有系统依赖性。

2 个答案:

答案 0 :(得分:9)

您可以在vert.x找到您要找的内容。

来自网站:

什么是vert.x?

下一代多语言异步应用程序框架。 (以前称为node.x)

  • 在JVM上运行。
  • 拥抱像node.js这样的事件驱动框架的优点,然后添加一些甚至更多的位。
  • 一切都是无阻碍的。
  • 多语种。 vert.x可以使用多种语言:Ruby,Groovy,Java,JavaScript,Python,Clojure,Scala。目前我们支持Java和Ruby,并且支持部分Groovy。用您选择的语言编写代码。利用该语言的vert.x的力量。
  • 继续使用Java 7中InvokeDynamic的最新发展,并打算将JVM作为未来动态语言的首选运行时。
  • 使您能够非常轻松地创建网络服务器或客户端。
  • 真正的可扩展性。与其他众所周知的事件驱动框架不同,每个进程可以有多个事件循环。为了利用服务器上的核心,不再需要启动32个实例。
  • 难以置信的简单并发模型。将您的代码编写为单线程,但要注意它跨多个核心进行扩展。无需担心竞争条件或锁定。
  • 了解多种网络协议,包括:TCP,SSL,HTTP,HTTPS,Websockets。
  • 从文件系统中有效地提供静态文件,完全绕过用户空间。
  • 简单的Sinatra / Express风格资源的Web路由。
  • 分布式事件总线。多个vert.x实例无缝协作以提供分布式事件总线
  • SockJS支持

答案 1 :(得分:3)

是的,您可以只执行commandcute()

更优雅的方法可能是构建一个只接受来自localhost的请求的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}"