Как позвонить / использовать MRI Ruby из Java? - PullRequest
1 голос
/ 09 марта 2012

Я хочу вызывать методы Ruby из среды Java. Я пробовал эти четыре решения:

  1. Используйте JRuby . Это было бы отлично, потому что он запускает все на виртуальной машине Java. Однако у меня возникли некоторые критические (неприемлемые) проблемы с производительностью:
    • JRuby в настоящее время не работает с моими расширениями C.
    • Вызовы вилки из Ruby, не работают стабильно при работе на виртуальной машине Java.
    • Код работает в JRuby медленнее, чем в MRI Ruby.
  2. Использовать ROR . Обходите Java вместе, предоставляя веб-сервисы через Ruby on Rails. Это работает, но нарушает ИТ-политику компаний в отношении использования только веб-сервисов Java, а также заставляет ИТ-отдел (разработчиков Java и веб-сервисов) или отдел исследований и разработок (разработчиков Ruby и C) работать вне этого домена.
  3. Использовать системные вызовы Java . Мы можем вызывать автономные программы Ruby с помощью системных вызовов Java и анализировать входные и выходные данные через файлы XML. Это работает, но издержки запуска новых процессов и обработки XML-файлов являются проблемой производительности.
  4. Использовать RJB . Ruby Java Bridge позволяет мне вызывать Java из Ruby, но это не то, что мне нужно.

Существует ли метод для вызова MRI Ruby из Java без каких-либо вышеописанных проблем?

1 Ответ

1 голос
/ 09 марта 2012

Вы можете сделать # 3 более эффективным,

  • не запускать процессы, вместо этого использовать долго работающий процесс демона
  • не через файлы, а через каналы
  • с использованием чего-то более эффективного, чем XML, например, буфер протокола

Но в целом я не вижу ни одного варианта, который вы пропустили. К сожалению.

...