2009-04-20 3 views
1

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

+0

Какую ОС вы нацеливаете? – CookieOfFortune

ответ

4

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

Версия Java 6 (и предстоящая версия JDK 7) доступна на OpenJDK.You может download source code для Java 5 под двумя различными лицензиями.

5

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

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

Вы думаете, что «сюрпризы обслуживания, какое обслуживание удивляет?» Ах! Сегодня вы хотите позвонить с C на Java, но завтра кто-то захочет вернуться в другую сторону. Вот где твоя проблема становится РЕАЛЬНО болезненной.

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

+0

Я бы переложил много раз, если бы это было разрешено. Ничто не так просто, как должно быть, когда Java взаимодействует с чем-либо еще. У меня ужасная история, но в этом поле нет места ;-) – RBerteig

+0

johnstosh, не могли бы вы уточнить «мост TCP/IP». –

0

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

+0

Цель состоит в том, чтобы написать обработчики событий в clojure, которые будут называться формой программы C, когда что-то произойдет. –