Запустите node-js из Java или Groovy - PullRequest
8 голосов
/ 03 февраля 2012

Кто-нибудь экспериментировал о том, как запустить модуль node.js или скрипт из java или groovy?

Может ли groovy command.execute () сделать это?Если это так, то он будет вести себя одинаково в разных операционных системах.

Стоит отметить, что в идеале я хотел бы, чтобы node.js не зависел от установки в системе и команде узла, а был упакован через./ configure и make, чтобы его можно было использовать как библиотеку ..

Спасибо

Редактировать: В основном я хочу это, чтобы я мог использовать модуль node.js, клиентскую платформу (кофе-сценарий, нефрит, стилус и т. д. И это в Brunch), как плагин Grails.Так что плагин является автономным без системной зависимости.

Ответы [ 2 ]

9 голосов
/ 03 февраля 2012

Вы можете найти то, что ищете в vert.x .

С сайта:

Что такое vert.x?

Платформа асинхронного приложения нового поколения полиглотов.(Ранее известный как node.x)

  • Работает на JVM.
  • Охватывает полезные биты управляемых событиями сред, таких как node.js, затем добавляет некоторые еще более сочные биты.
  • Все не блокирует.
  • Полиглот.vert.x будет использоваться на нескольких языках: Ruby, Groovy, Java, JavaScript, Python, Clojure, Scala.В настоящее время мы поддерживаем Java и Ruby и частично поддерживаем Groovy.Напишите свой код на выбранном вами языке.Используйте все возможности vert.x для этого языка.
  • В связи с последними разработками InvokeDynamic в Java 7 и ставками на JVM, которая станет будущей лучшей средой исполнения для динамических языков.
  • Позволяет вамневероятно легко создавать сетевые серверы или клиентов.
  • Истинная масштабируемость.В отличие от других хорошо известных управляемых событиями сред, вы можете иметь более одного цикла обработки событий на процесс.Больше не нужно раскручивать 32 экземпляра только для использования ядер на вашем сервере.
  • Невероятно простая модель параллелизма.Напишите свой код как однопоточный, но наблюдайте за его масштабированием по нескольким ядрам.Не нужно беспокоиться о состоянии гонки или блокировках.
  • Понимает сразу несколько сетевых протоколов, включая: TCP, SSL, HTTP, HTTPS, веб-сокеты.
  • Эффективно обслуживает статические файлы из файловой системы, минуявсего пользовательского пространства.
  • Простая веб-маршрутизация на основе ресурсов в стиле Sinatra / Express.
  • Шина распределенных событий.Несколько экземпляров vert.x беспрепятственно работают вместе для обеспечения распределенной шины событий
  • Поддержка SockJS
3 голосов
/ 29 ноября 2012

Да, вы можете просто command.execute ()

Более элегантный способ - создать небольшой сервер node.js, который принимает запросы только от localhost.Но эта заводная работа:

    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}" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...