6

我很好奇人们如何将LuceneHibernate等开源项目从 Java 移植到 .NET?使用微软发布的Java语言转换助手2.0是不是一件简单的事情?

4

2 回答 2

11

不幸的是,对于这么大的项目,通常需要付出更大的努力。一种语言中有效的东西在另一种语言中可能没有,更重要的是,一种语言中存在的东西在另一种语言中可能没有。例如,NHibernate 花了数年时间才移植过来,而且他们仍在这样做(尽管一直在添加功能,比如 Linq)。

这通常是一个问题的定位和移植类,在可能的地方进行优化,在需要的地方改变结构。诸如泛型、别名和装箱之类的东西都在端口中发生了变化。然后,在你全部完成之后,通常还有很多优化需要完成(当然这是可选的......),也许是事件,也许是静态和扩展方法,可能是你的新语言/平台提供的任何东西那个旧的没有。

这样想,你为什么要把它移植到.Net?我敢打赌说您处于两种情况之一,一种是您因为工作而无法使用 .Net(哦,抱歉!),或者您喜欢.Net,因为它为您提供了一些优势。在第二类中,这意味着您选择它而不是Java,因此在移植时,您希望利用最初使您选择 .Net 的任何特性。

于 2010-02-05T12:53:13.467 回答
4

就像尼克说的,事情没那么简单。涉及的不仅仅是移植代码,特别是如果您要移植的应用程序的架构不是那么好。您想使用要移植到的语言的功能,有时它们是您可能会更改的设计决策,因为它们对您来说似乎不合适。我不打算重申尼克所说的话,但想补充以下内容。

我建议关注 Noda Time 的开发,这是 Jon Skeet 将 Joda Time 从 Java 移植到 .Net 的尝试。Jon 实际上在以下博客上记录了这段经历:

http://noda-time.blogspot.com/

我建议关注博客、该项目的 google 群组页面和 google 代码项目。可以在博客上的一篇文章中找到 google 组和代码页链接。

于 2010-02-05T13:04:18.483 回答