Как запустить Java из процесса C? - PullRequest
1 голос
/ 21 апреля 2009

Я хочу добавить некоторые обработчики событий на основе Java (на самом деле Clojure ) в ОГРОМНОЕ унаследованное приложение C. Какой самый простой и удобный способ сделать это? Я хотел бы, чтобы классы Java работали в том же процессе, что и код на Си. Это вообще возможно?

Ответы [ 4 ]

5 голосов
/ 21 апреля 2009

Кстати, это легко заставить "казаться" правильным, но гораздо труднее на самом деле сделать правильно. Почему вы хотите, чтобы они работали в одном и том же процессе? Почему не та же нить?

Вы могли бы рассмотреть возможность создания моста через TCP / IP между вашим кодом C и процессом Java. Это было бы намного лучше, потому что это позволило бы избежать сюрпризов обслуживания.

Вы думаете "сюрпризы по обслуживанию, какие сюрпризы?" Ах! Сегодня вы хотите позвонить из C в Java, но завтра кто-то захочет вернуться в другую сторону. Вот где твоя проблема становится НАСТОЯЩЕЙ болезненной.

Я был здесь раньше. Примите мой совет: сделать мост TCP / IP. Это предотвратит сбой вашей Java. -Stosh

5 голосов
/ 21 апреля 2009

Казалось бы, собственный интерфейс Java предназначен для этого. В частности, этот раздел спецификации кажется актуальным.

4 голосов
/ 21 апреля 2009

Доступен исходный код команды java. Это хороший пример того, как создать Sun JVM в программе на Си.

Java 6 (и готовящаяся к выпуску JDK 7) версия доступна на OpenJDK. Вы можете загрузить исходный код для Java 5 под двумя разными лицензиями.

0 голосов
/ 26 октября 2009

Вы могли бы сделать это таким образом, но, учитывая, что вы действительно хотите написать сценарий для большого приложения на C, вы рассматривали GUILE или Lua? Они оба сделали именно для этой цели.

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