你如何移植开源项目?

时间:2010-02-05 12:48:09

标签: c# java open-source code-conversion

我很好奇人们如何将开源项目(例如LuceneHibernate从Java移植到.NET)?使用Microsoft发布的Java Language Conversion Assistant 2.0是一件简单的事吗?

2 个答案:

答案 0 :(得分:11)

不幸的是,对于大型项目而言,通常需要付出更大的努力。一种语言中的效率可能不在另一种语言中,更重要的是,在一种语言中存在可能不在另一种语言中。例如,NHibernate花了来移植,并且他们仍在这样做(尽管像Linq一样添加功能)。

通常情况下,逐个选择并逐个移植类,在可能的情况下进行优化,在需要的地方更改结构。仿制药,别名和拳击等东西都在港口发生变化。然后,在你完成它之后,通常还有很多优化工作要做(当然这是可选的......),也许它的事件,也许是静态和扩展方法,可能是你的新语言/平台提供的任何东西旧的没有。

这样想,为什么你把它移植到.Net?我打算说你处于两种情况中的一种,一种是因为工作而被迫使用.Net(doh,抱歉!)或者你喜欢 .Net,因为它为你提供了一些优势。在第二类中,这意味着您选择 over Java,因此在移植时,您希望利用任何使您首先选择.Net的功能。

答案 1 :(得分:4)

像尼克说的那样并不那么简单。除了移植代码之外,还涉及到很多,特别是如果您要移植的应用程序的体系结构不是那么好。您希望使用所移植语言的功能,有时它们是您可能会更改的设计决策,因为它们似乎不适合您。我不打算重申尼克所说的,但是想补充以下内容。

我建议遵循Noda Time的开发,这是Jon Skeet尝试将Joda Time从Java移植到.Net。 Jon实际上是在以下博客上记录体验:

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

我建议关注博客,此项目的Google网页论坛以及Google代码项目。谷歌群组和代码页链接可以在博客上的其中一个帖子中找到。