繁体   English   中英

从Java或Groovy运行node-js

[英]Run node-js from Java or Groovy

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

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

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

谢谢

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

您可能会在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支持

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM