Вы должны попробовать модуль node-java npm, который является хорошо написанной оболочкой над JNI.
node-jave, кажется, (пока) не получил широкого распространения, ноиграя с ним, я был впечатлен тем, насколько он прост и надежен.
Это так просто, как:
var list = java.newInstanceSync("java.util.ArrayList");
list.addSync("item1");
list.addSync("item2");
console.log(list.getSync(1)); // prints "item2"
Вы можете делать практически все с помощью встроенной JVM - создаватьобъекты, методы вызова, поля доступа и т. д.
Существует небольшое несоответствие импеданса между Node и Java, поэтому, если вы собираетесь взаимодействовать с чем-то сложным, я бы рекомендовал написать большинство ваших взаимодействий на Java ипредоставление более простого интерфейса через барьер Node / Java.Это просто облегчает отладку таким способом.
--- Dave
ps, RealWorldUseCase (tm): я работал в месте, где между протоколом был довольно сложный (и кодировался спагетти)несколько клиентов браузера и сервис на основе Java.Я написал довольно приятный тестовый набор, который использовал jsdom для размещения N имитированных браузеров и использовал node-java в качестве оболочки для кода сервиса Java.Было тривиально отключить транспортные интерфейсы, как в JS для клиентов, так и в Java для службы, поэтому, когда какая-либо из этих вещей отправляет сообщение, я собираю его и помещаю в очередь для вероятностной доставки намеченной цели.(т.е. я виртуализировал сеть).Таким образом, я мог бы выполнить полное моделирование нескольких клиентов, взаимодействующих с Java-сервисом и через него, и запустить все это в одном процессе без какой-либо проводной связи.А потом я мог делать забавные вещи, такие как преднамеренное изменение порядка доставки сообщений, чтобы убедиться, что код устойчив к ошибкам синхронизации.И когда была обнаружена ошибка, я зарегистрировал порядок сообщений и смог воспроизвести их, чтобы воспроизвести ошибку.О, и все это настроено и запускает довольно сложный сценарий с несколькими тысячами строк регистрации и заканчивается менее чем за 1 секунду за цикл.2 недели хорошо провели.Прикольные вещи.
Вариант использования RealWorld # 2: selenium-inproc - модуль, который упаковывает JAR-файл SeleniumRC, предоставляя интерфейс узла для тестирования автоматизации браузера без Selenium запустить еще один сервис localhost.