用最简单的方式从C#调用Java?

3
我们有一大部分Java代码在桌面上运行,我们希望在MS.NET用户界面(桌面而非Web)中重用它。如果有任何要注意的事项,请告诉我们。

迁移这段代码的成本太高了(金钱、时间等)?我看到的一个大问题是,客户端系统需要安装 .NET 运行时和 JVM,而我宁愿避免这种情况。 - Abel Morelos
是的,迁移将排在列表的较低位置。关于2个运行时的观点已经被接受 - 似乎翻译器是避免这种情况的方法。 - Chris Chedgey - Structure101
复制。https://dev59.com/AkXRa4cB1Zd3GeqPrmok - finnw
你也可以用Java编写UI,这样就不会将你的产品锁定在单一操作系统上。 - NVRAM
5个回答

8
你可以看一下IKVM,它是在.NET框架之上实现Java虚拟机的工具。其中有一些部分专门处理.NET和Java世界之间的互操作性,因此你可以(或多或少地)无缝地在两者之间使用。

谢谢Johannes,IKVN已经在我们的列表上了 - 如果您使用过它,您是否发现将字节码转换为CLR可靠? - Chris Chedgey - Structure101
很遗憾,我还没有使用过它。将其放在我的个人待办事项列表中以便尝试。但显然,即使是对于较大的Java项目,他们也取得了一些成功,因此它似乎已经非常成熟,尽管目前缺乏AWT / Swing支持和安全性。 - Joey

6

我建议为现有的Java代码创建Web服务,作为一个包装器,并从.NET应用程序(桌面或Web)中调用它们。


2
如果你有足够的钱,可以尝试使用mainsoft。它可以将你的Java代码转换成C#,或者反过来,具体取决于你的喜好。
Eric Sink在他的博客中也提到了这个工具about this

谢谢Ngu,我们会把它加入列表中 - 我不介意为能够完成工作的东西支付合理的$$$。 - Chris Chedgey - Structure101

1

另一个可能的解决方案可以采用j-interop的形式。

我已经成功地使用它来从Java调用DCOM,并且它声称能够进行双向通信,因此理论上应该可以将Java进程注册为DCOM服务器。

您需要在Java端做一些工作,因为它不能自动使其正常工作。


1

我同意“2009MIPS”建议的Web服务方法。它提供了最干净和最易于调试的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接