2008-10-03 148 views
5

我將一個Java庫移植到C#中。我使用的是Visual Studio 2008,因此我沒有停用的Microsoft Java語言轉換助理程序(JLCA)。我應該如何將Java代碼轉換爲C#代碼?

我的方法是創建一個類似的項目結構的新的解決方案,以Java庫,並隨後將Java代碼複製到C#文件,並將其行由行轉換爲有效的C#。考慮到我發現Java容易閱讀,兩種語言的細微差別讓我感到驚訝。有些東西很容易移植(命名空間,繼承等),但有些東西意想不到,比如嵌套類中的私有成員的可見性,重寫虛擬方法和內置類型的行爲。我不完全理解這些事情,我相信還有很多我還沒有看到的其他差異。

我還有很長的路要走,在這個項目上。我可以在此轉換過程中應用哪些經驗法則來正確管理語言差異?

+0

看到這裏的自動Java到C#轉換建議:HTTP://計算器.com/questions/443010 /哪裏可以找到一個java-to-c-sharp-converter – 2012-11-06 18:02:49

回答

3

你的唯一明智的方法做它,你可以...最大的幫助將這個文件從敢於奧巴桑喬列出兩種語言之間的差異:

http://www.25hoursaday.com/CsharpVsJava.html

BTW,更改所有的getter並將setter方法轉換爲屬性......除非您需要完美的界面兼容性,否則不需要使C#庫函數與java庫相同。

+0

感謝您的鏈接 - 這是我正在做的很棒的參考資料。 – Lee 2008-10-05 13:36:32

+0

「將所有吸氣和吸氣方法改爲屬性」 - 再好好考慮一下。如果改爲屬性[如MSDN指南中所述](https://msdn.microsoft.com/en-us/library/ms229054(v = vs.100).aspx),則更爲正確。我只需要將一堆「屬性」還原回1)沒有獲取的方法2)非確定性3)返回的構建數組......其他人也這樣做了。盲目轉換屬性而不考慮屬性應該像域一樣行爲並不是一個好策略。如果有疑問,請保留一個方法。 – NightOwl888 2017-02-04 04:10:25

0

我不知道這是否真的是由線到線的代碼轉換,特別是如果障礙物變得勢不可擋的最佳途徑。當然,Java代碼爲您提供了一個指導方針和基本結構,但最後我認爲最重要的是庫提供的功能與它在Java中的功能相同。

0

我聽說過一些其他的日子有關Java的.NET版本。如果這樣的怪物可用,你是否能夠將Java源代碼編譯成.net中間庫?

+0

它真的存在嗎?如果是這樣,你從哪裏聽說的? – 2012-11-06 18:03:45

+0

對不起,現在找不到它。我相信這是對某些產品的補充(不是免費的語言),但我應該抓住參考。無論如何,這已經是4年前的事 - 如果它是一款產品,現在幾乎可以肯定沒有了! :( – 2012-11-10 23:41:03

1

如果你有少量代碼然後一行行的轉換可能是最有效的。

如果你有大量的代碼,我會考慮:

  1. 尋找,做談話爲你的產品。
  2. 編寫腳本(紅寶石或Perl可能是一個很好的候選人)做轉換爲你 - 至少是單調的東西!它可能是一個簡單的搜索/替換關鍵字區別和重命名文件。給你更多的時間/手指專注於更難的東西。
  3. 值得注意
3

幾個其他選項:

  • J#是微軟的Java語言 實現.NET上。您可以通過 訪問Java庫(最高版本爲 1.4 *,反正)。 *實際上Java 1.1.4爲java.io/lang, 和1.2爲java.util +請記住,J#2的結尾爲 〜2015-2017。0 redist

  • Mono's IKVM還在 CLR上運行Java,可以訪問其他.NET 程序。

  • 微軟的Visual Studio 2005提供 有 「Java語言轉換 助手」 是的Java程序 轉換成C#程序 自動爲您。

1

一個更加快速和骯髒的想法:你可以使用IKVM到Java的jar轉換爲.NET程序集,然後使用ReflectorFileDisassembler --combined附加到拆解成Visual C#項目。

(順便說一句,我還沒有實際使用IKVM - 任何人都關心擔保,這個過程會工作?)