【问题标题】:Reference Java DLL in C# Assembly?在 C# 程序集中引用 Java DLL?
【发布时间】:2009-07-07 16:47:10
【问题描述】:

有使用 SimMetrics 库创建 C# 程序集的说明 here。他们提供给这个库的链接是SourceForge。看起来最新版本的 SimMetrics 库是用 Java 创建的。是否可以编译 java 代码,然后在 C# 中引用它以用作 SQL Server 2008 中的程序集?

【问题讨论】:

  • 什么是 Java DLL?我从来没有听说过那些。我听说过 Java JAR 文件,但是 DLL?我认为它们不存在。

标签: c# java dll reference assemblies


【解决方案1】:

你能做的最好的就是

  1. 将 java 编译为 J#(现在已过时且在很大程度上不受支持),代码更改最少。
    • 这在很大程度上取决于使用了多少库。
  2. 将代码转换为 c#(惯用或其他方式)
    • 这有时在高度数学化的代码上相当容易。作为一个优势,java 代码也可能假设为 16 位 unicode。
  3. 使用 IKVM 之类的东西在 CLR 中托管 java 字节码
    • 这对于 sql server 托管的运行时来说可能是完全不可能的,当然我认为性能会很差(因为您必须在每次调用时“快速”跨越托管障碍。

SF 页面 strongly implies 同时有 java 和 .net 版本。
这是最新的.net releasedocumentation

但是基于其中的自述文件

这是原始 .NET 实现的更新版本,而不是最新 Java 代码的转换。

.Net 实现主要是 c#,因此您可以区分 java 实现中的最新更改,然后尝试在 .Net 代码中重新创建它们。由于转换为 c# 似乎主要是直接复制,只考虑了惯用的 c#(驼峰式大小写、属性和参数名称),因此您很有可能做到这一点。

如果您确实考虑将更改作为补丁提交,这将使您有机会让其他人验证您的更改,并且可能会立即启动项目的 .Net 端以在未来保持更紧密的同步。

【讨论】:

  • 最后一个 .NET 版本是 2006 年 9 月 24 日,最后一个 Java 版本是 2007 年 2 月 7 日。
  • src 暗示它是作为平台不可知论者提供的。从源代码构建可能会为您提供 .Net 中的最新版本。
  • 啊不 - 显然它是作为分叉完成的,添加了关于如何处理的建议
  • 太棒了,感谢您的帮助!我将深入研究一些 Java,看看是否可以将剩余的 Java 代码转换为 .Net
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
相关资源
最近更新 更多