【发布时间】:2011-10-20 20:30:13
【问题描述】:
我想开发一个通过 COM公开其功能的 Java 应用程序,因为旧版 VB 应用程序需要与之通信。
有几个库可以使用 COM 组件;但是其中一些是否同时支持公开 COM?
我还想创建一个用 C# 编写的代理,然后通过 protobuf 与 Java-App 通信。
有什么想法吗?
【问题讨论】:
我想开发一个通过 COM公开其功能的 Java 应用程序,因为旧版 VB 应用程序需要与之通信。
有几个库可以使用 COM 组件;但是其中一些是否同时支持公开 COM?
我还想创建一个用 C# 编写的代理,然后通过 protobuf 与 Java-App 通信。
有什么想法吗?
【问题讨论】:
Windows 平台上的 Java 与 an ActiveX packager 捆绑在一起。使用此打包器,您可以将 JavaBeans 发布为 COM 对象。唉,打包程序是为 Visual JavaBeans(即作为小部件公开的 UI 组件)设计的,我不确定它处理非可视组件的效果如何。
【讨论】:
如果这是一个独立的应用程序或服务器进程,即使使用 protobuf,您也需要一种与 Java 代码通信的方法。您是否考虑过编写公开 HTTP 端点所必需的 Java?您可以通过这种方式公开 API,让 VB 直接访问 Java,而不是通过代理。我已经做到了。
如果 Java 只是一个库,我建议使用托管 C++。您可以对 Java 进行 JNI 调用。您可以在 C++ 中创建 COM 对象,然后使用 JNI 映射到 Java 以进行实际工作。这个我还没有做...但是你问的想法!
【讨论】:
您总是可以通过 JNI 和 C/C++ 来实现。只需从中运行 JVM。
还有另一种选择——您可以使用纯C to create a .dll 并直接从VB 调用它。在这里你可以通过 JNI 或使用 GCJ 从 java 代码构建原生库。
或者您可以将 java 应用程序公开为 WebService 或类似的。
【讨论】: