从Java访问.NET / DLL库/组件?

从.NET到Java有廉价或免费的网关吗? 我正在研究一些具有C / C ++和.NET驱动程序的数据采集硬件 – 我真的不想在.NET中进行任何编程。

更新:我还没有完成我原本想做的事情,但我做了类似的事情,使用JNA封装DLL中的一些函数,以便从Java控制USB硬件设备。 (DLL来自设备制造商)它非常好用。 谢谢!

您还可以尝试使用JNA访问本机库。 JNA为Java程序提供了对本机共享库(Windows上的DLL)的轻松访问,而无需编写除Java代码之外的任何内容 – 不需要JNI或本机代码。 如果他们的API相当直接,那么这可能是阻力最小的路径。

查看他们的入门指南 ,他们称之为一些本机代码(printf和GetSystemTime)。

嗯,只有谷歌搜索才有JNBridge和EZ JCom 。

您也可以使用IKVM ,这是一种略有不同的方法。

(不想学习.NET的任何理由,出于兴趣?这是一个很好的平台,C#是一种可爱的语言……)

如果他们有C ++版本的驱动程序,那么你可以使用JNI编写一个包装器,然后在Java中加载它。 JNI可能有点痛苦,但它会让你使用他们的驱动程序的C ++版本,如果你不想要的话,根本不需要处理.Net。

我偏向于建议用C#跳入深层,因为它与Java非常相似。 我这样做并使用IKVM编译我最喜欢的Java库。 到.NET程序集,你几乎可以启动所有核心java运行时类,所以如果你想找到合适的C#集合类型,你总是可以回到java.util。 (虽然没有通用的collections品。不知道为什么。)

根据您所使用的平台,您还可以选择免费的IDE。 对于Windows,您可以免费获得Visual Studio Express,但我也使用SharpDevelop 。 您还可以在Linux上获得Mono IDE(我认为有几种Unix版本?)。

如果您已经了解Java,那么C#学习曲线很浅。 由于我仍然不明白的原因,我只是在地雷上炸掉了1.5个四肢,但是很容易找到解决办法。 关于它的最糟糕的事情是由于速度太慢而使得AWFUL变得非常糟糕 。 我真的很想念JavaDoc的快感。 这些在线文档不仅速度极慢,而且某些人决定将类摘要,构造函数和方法/属性全部放在单独的页面上,因此只需要永远。 有人说要获取文档安装程序并在本地安装文档以获得略微改进的体验。 我想是个不错的主意。

我是jni4net的作者, jVM和CLR之间的开源进程间桥接。 它建立在JNI和PInvoke之上。 不需要C / C ++代码。 我希望它会对你有所帮助。

如果你有一个Java应用程序,其他人提到的JNI将是你要走的路。 你写了一些包装类,就是这样。

如果写一个包装是一个太大的任务(取决于你必须包装的方法的数量),看看SWIG 。 我认为它会自动生成包装器,但我从未实际使用它。

如果您想用Java语言编写代码,但是您不关心程序是否可以在JRE / JVM上运行,那么您也可以使用Microsoft J#。 基本上,它编写的Java-Code编译为.NET-Bytecode,可以使用驱动程序的.NET类以及现有的Java类。 使用J#,如果您的现有Java代码比Java 1.4更新,您将遇到问题,请查看有关如何解决它们的问题。

从那时起,您可以稍后在J#,C#或任何其他.NET语言中添加代码。 但是,您不会轻易回到JRE / JVM。