从Java或Groovy运行node-js

Jor*_*Jor 8 java grails groovy node.js

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

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

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

谢谢

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

Nic*_*las 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支持


Joe*_*man 5

是的,你可以直接 command.execute()

一种更优雅的方法可能是构建一个仅接受来自本地主机的请求的小型 node.js 服务器。但是这个 groovy 有效:

    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}" 
Run Code Online (Sandbox Code Playgroud)