#java #com #native
#java #com #родной
Вопрос:
Я хочу разработать Java-приложение, которое предоставляет свои функциональные возможности через COM, поскольку устаревшее приложение VB должно взаимодействовать с ним.
Существует несколько библиотек, которые могут использовать COM-компоненты; но поддерживают ли некоторые из них в то же время раскрытие COM?
Я также подумал о создании прокси, написанного на C #, который затем взаимодействует с Java-приложением через protobuf.
Есть идеи?
Ответ №1:
Java на платформах Windows поставляется в комплекте с ActiveX packager. Используя этот упаковщик, вы можете публиковать свои JavaBeans как COM-объект. Увы, упаковщик предназначен для визуальных JavaBeans (т. Е. Компонентов пользовательского интерфейса, представленных в виде виджетов), я не уверен, насколько хорошо он справляется с невизуальными компонентами.
Ответ №2:
Если это отдельное приложение или серверный процесс, даже с protobuf вам понадобится способ взаимодействия с кодом Java. Вы думали о написании Java, необходимой для предоставления конечной точки HTTP? Вы могли бы таким образом открыть API и получить доступ к Java напрямую, а не через прокси. Это я сделал.
Если Java — это просто библиотека, я бы посоветовал обратиться к управляемому C . Вы могли бы выполнять вызовы JNI в Java. Вы можете создать COM-объект на C , а затем использовать JNI для отображения в Java для фактической работы. Этого я не сделал…но вы просили идеи!
Комментарии:
1. Что вы имеете в виду «напрямую» … через HTTP не было бы напрямую, не так ли?
Ответ №3:
Вы всегда могли сделать это через JNI с помощью C / C . Просто запустите JVM из него.
Еще один вариант — вы можете использовать чистый C для создания .dll и вызвать ее непосредственно из VB. Здесь вы можете сделать это через JNI или использовать GCJ для создания собственной библиотеки из кода Java.
Или вы могли бы предоставить Java-приложение как веб-сервис или аналогичный.