Как открыть Java через COM / native DLL?

#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-приложение как веб-сервис или аналогичный.