GUI на Java для приложения Ocaml - PullRequest
1 голос
/ 17 октября 2011

Я разрабатываю графический интерфейс (на Java) для приложения Ocaml.Какой лучший способ общения двух приложений.

Приветствия.

Ответы [ 3 ]

5 голосов
/ 17 октября 2011

Вы не говорите, как выглядит ваша целевая среда.

Если это стандартная среда рабочего стола или сервера, вы можете использовать слабосвязанный подход, в котором графический интерфейс и приложение являются отдельными процессами, взаимодействующими любым удобным методом IPC.

Для более тесно связанного подхода я могу придумать два способа, которые могут сработать. Во-первых, вы можете скомпилировать свой OCaml и запустить его как собственный код вместе с JVM, используя собственный интерфейс Java.

Во-вторых, вы можете скомпилировать ваш OCaml в байт-коды JVM, используя OCaml-Java: http://ocamljava.x9c.fr/

Отказ от ответственности: я только читал об этих подходах, никогда не пробовал их. И, конечно, могут быть и другие способы.

1 голос
/ 02 ноября 2011

По состоянию на ноябрь 2011 года я рекомендую использовать JSON в качестве формата сериализации, а не zeromq в качестве транспорта. Применяется очевидный отказ от ответственности: «Мне нужно больше информации, чтобы дать лучший ответ».

JSON - это простой и широко поддерживаемый стандарт. Zeromq - это абстракция того, что делают сокеты, которые должны прозрачно взаимодействовать между двумя процессами, написанными на разных платформах / стеках, без необходимости иметь дело с низкоуровневыми проблемами, такими как буферизация, при работе непосредственно с сокетами.

На стороне OCaml лучше всего выглядит привязка Caravan zeromq.

https://github.com/bashi-bazouk/Caravan

На стороне java все, что рекомендуется на сайте Zeromq.

Для JSON есть хорошая библиотека JSON для Ocaml:

http://martin.jambon.free.fr/yojson.html

Но JSON настолько тривиален, что вы можете просто написать свой собственный наивный анализатор, если типы данных, которые вы будете отправлять взад и вперед, относительно малы.

JSON на стороне Java. У меня нет рекомендаций, но есть много библиотек.

Thrift, Avro или Google ProtoBuffers, вероятно, будут быстрее, чем JSON в их двоичной форме, но риск в них заключается в том, находятся ли привязки Ocaml в приличной форме (лично я понятия не имею, если они есть).

0 голосов
/ 02 октября 2013

JSON и сокеты - это решение, которое я выбрал для связи между Ocaml и Java.

Со стороны OCAML я использую atdgen Мартина Джамбона, основанного на сериализаторе / десериализаторе JSON.в библиотеке Йойсона.«atdgen» генерирует анализатор и принтер из файла определения типа .atd:

На стороне JAVA я использую библиотеку Джексона и аннотации Джексона для указания формата JSON.

Как и для сокетовЯ использую только стандартные библиотеки сокетов в Ocaml и JAVA.

И это решение прекрасно работает как на Unix, так и на ОС Windows.

Другое решение будет использовать буфер протокола Google и инструменты Ocaml piqi.Он должен быть более производительным и безопасным, поскольку файл «.proto» можно использовать для генерации как кода Java, так и кода Ocaml.Кто-нибудь пробовал это решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...