【问题标题】:Run node-js from Java or Groovy从 Java 或 Groovy 运行 node-js
【发布时间】:2012-02-02 20:04:08
【问题描述】:

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

groovy command.execute() 能做到吗?如果是这样,那么它在不同的操作系统中的行为是否相同。

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

谢谢

编辑:基本上我想要这个,这样我就可以使用 node.js 模块,一个客户端框架(coffee-script,jade,stylus 等。这是捆绑在早午餐中的),作为一个 Grails 插件。这样插件是自包含的,没有系统依赖。

【问题讨论】:

  • 我不明白为什么人们想从 java、.net 运行 nodejs?首先阅读 nodejs 做了什么和解决了什么。
  • 我不知道你指的还有哪些人,但在这种情况下,Jor 希望在多个平台上保持一致的 node.js。我从阅读他的问题中猜到了这一点。
  • 假设你有一个大的 Grails 应用程序和一个大的 nodejs 库,你需要 - 两者都需要多年的工作来实现各种 API。然后你需要从java运行nodejs。

标签: java grails node.js groovy


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 2023-02-18
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      相关资源
      最近更新 更多