2013-11-26 55 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程序很简单,因为其中使用的方法数量有限且代码行数很少。但除此之外,这不是一个你可以在短时间内实现的简单解决方案。