170 похожих чатов

Привет. Я не нодер, даже не джаваскриптер, но волею судьбы

пишу плагин для VSCode, а там нода и жс ) Хочу интегрироваться с джава - библиотекой из ноды: вызывать функции с параметрами и получать результаты (типы хоть строки хоть жсон не важно). Как лучше это сделать? Каждый раз запускать дочерний процесс с запуском джарника с аргументами в командной строке - долго и неоптимально. Веб-сервер на джаве поднять и из ноды стучаться в его эндпоинты? Или есть варианты быстрые и попроще?

10 ответов

24 просмотра

Если исключить переписывание кода жавы на js - принципиально мало что можно придумать другое. Например, поднять службу/демона, который будет предоставлять api по юникс сокетам - но это звучит диковато. Поднять и держать сервак в сети и всех туда гонять - но тогда для работы плагина нужен инет

А почему диковато? Юниксовые сокеты весьма шустрые, по-моему норм решение. Для обоих языков обвязок достаточно.

Диковатость не в них, а в поднятии службы/демона Юникс сокеты надо использовать и при поднятии веб сервера

Это нормально. Для тайпскрипта тоже сервер поднимается, например.

Поднимать службу там, где можно ограничиться процессом - это диковато, и если ts так делает, то это ещё один лулз

Andrey-Ivanov Автор вопроса

Спасибо. 1. Переписывание кода джавы на жс работает сейчас - и медленно. Именно поэтому и возникла идея дергать джаву напрямую. (Идеи что на жс написано криво и неоптимально имеют право на жизнь, но на самом деле все сложнее - это чужая либа написана на кложе, можно компилировать и в жс и в джаву, так вот компилированная напрямую в жс она тормозит) 2. Апи по юникс сокетам с поднятым демоном кажется именно то что нужно, спасибо, покурю. Единственно что - юзеры плагина на винде расстроятся что у них не будет работать, а делать кроссплатформенное решение мне лень ) 3. Сервак будет не в инете, а подниматься локально, при инициализации плагина, а нода будет стучаться к нему по локалхосту. Вчера это реализовал уже, вроде норм, только бьюсь с передачей сырого текста в боди - оно мне удаляет переводы строк и лишние пробелы, а мне надо как есть

Так а зачем демон то? Почему не поднять просто обычный процесс рядом? Тогда проще будет кроссплатформенность обеспечить, разница будет только в пути к сокетам (у винды там какая-то дичь с /./pipe/...) С демоном тоже можно кроссплатформенно сделать, в Винде это называется служба. Но это запарнее

Andrey-Ivanov Автор вопроса

Честно говоря, я пока не щупал ни демоны ни процессы, поэтому и спросил про возможные варианты. Теперь покурю-погуглю что это. С веб-сервером то есть опыт, поэтому и реализовал пока на нем )

Наверное самый простой вариант - поднимай дочерний процесс, в нём запускай сервак и слушай сокет с каким-нибудь уникальным именем Нужны нодовские модули child_process и net

Что за библиотека, которая на clojure?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта