簡體   English   中英

我應該如何將Java代碼轉換為C#代碼?

[英]How should I convert Java code to C# code?

我正在將一個Java庫移植到C#。 我正在使用Visual Studio 2008,因此我沒有停用的Microsoft Java語言轉換助手程序(JLCA)。

我的方法是創建一個與Java庫具有類似項目結構的新解決方案,然后將java代碼復制到ac#文件中,並將其逐行轉換為有效的c#。 考慮到我發現Java易於閱讀,兩種語言的細微差別讓我感到驚訝。

有些東西很容易移植(名稱空間,繼承等),但有些東西出乎意料地不同,例如嵌套類中私有成員的可見性,覆蓋虛擬方法和內置類型的行為。 我不完全理解這些事情,我確信還有很多其他的差異,我還沒有看到。

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

你可以用唯一合理的方式做到這一點......最大的幫助就是Dare Obasanjo的這份文件,其中列出了兩種語言之間的差異:

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

順便說一句,將所有getter和setter方法更改為屬性...除非你想要完美的接口兼容性,否則不需要讓C#庫函數與java庫相同。

結合其他值得注意的選擇:

  • J#是Microsoft在.NET上的Java語言實現。 您可以訪問Java庫(最高版本為1.4 *,無論如何)。 *實際上Java 1.1.4用於java.io/lang,1.2用於java.util +請記住J#end of life是〜2015-2017對於J#2.0 redist

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

  • Microsoft Visual Studio 2005附帶了一個“Java語言轉換助手”,可以自動將Java程序轉換為C#程序。

如果您有少量代碼,那么逐行轉換可能是最有效的。

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

  1. 正在尋找能夠為您進行對話的產品。
  2. 編寫一個腳本(Ruby或Perl可能是一個很好的候選者)來為你做轉換 - 至少是單調的東西! 它可以是關鍵字差異和文件重命名的簡單搜索/替換。 讓你有更多的時間/手指專注於更難的東西。

還有一個快速而又骯臟的想法:您可以使用IKVM將Java jar轉換為.NET程序集,然后使用Reflector - 與FileDisassembler Add-in結合 - 將其反匯編為Visual C#項目。

(順便說一下,我還沒有真正使用過IKVM - 有人關心這個過程會起作用嗎?)

我不確定它是否真的是逐行轉換代碼的最佳方式,特別是如果障礙變得勢不可擋。 當然,Java代碼為您提供了指導和基本結構,但我認為最重要的是庫確實提供了與Java相同的功能。

前幾天我聽到了關於.net版Java的一些事情。 如果這樣的怪物可用,你能將java源代碼編譯成.net中間庫嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM