2013-11-26 49 views
-1

我需要在java中開發一個應用程序,我可以解析.net應用程序代碼並生成相應的Java代碼。 我聽說很容易爲.net代碼實現抽象語法樹(AST),後來我可以在我的Java應用程序中使用該AST來生成相應的Java類。 注意:不要以任何代價觸摸我的.NET應用程序代碼。 所以我的目標是我必須開發一個Java應用程序,它解析.net代碼並構建AST。後來,我可以使用這個AST並可以生成相應的Java類。 我需要啓動基本的「hello world」程序。.Net to Java代碼轉換器

+0

請參閱http://stackoverflow.com/questions/3455456/what-kinds-of-patterns-could-i-enforce-on-the-code-to-make-it-easier-to-translat/3460977# 3460977 –

回答

1

我聽說,這是容易實現的抽象語法樹(AST)的.NET代碼

易是主觀的。即使你使用Roslyn這樣的工具作爲出發點,你提出的建議也是非常複雜的。還要記住許多.NET概念甚至不映射到Java(代理,事件,動態,LINQ,真正的泛型(而不是類型擦除),自定義值類型等)。有些工具可以做這種事情,例如IKVM和JNBridge。 IKVM通過在CLI內託管Java字節碼作爲IL工作;我不完全確定JNBridge的功能,但它似乎可以在兩個方向上工作(與IKVM不同) - 但請注意:這些是而非代碼翻譯器

1

雖然不是不可能,但你試圖實現的是太寬泛,需要大量的編碼,耐心和時間。你必須解決的第一個問題是.Net不是一種編程語言,而是一個框架和現成的代碼,許多編程語言,如C#,VB,VC++和更多使用.Net Framework的。因此,你必須先決定你使用哪種編程語言想要瞄準。

.Net庫非常龐大,包含數千個類和函數,如果函數的總數量在100,000,我不會感到驚訝。

找到每個.Net函數和Java函數之間的映射並不那麼容易。你可能根本找不到等同的方法。不僅僅是方法,但是一些概念在Java中也沒有等價的實現。

Hello world程序很簡單,因爲其中使用的方法數量有限且代碼行數很少。但除此之外,這不是一個你可以在短時間內實現的簡單解決方案。