我需要在java中开发一个应用程序,我可以解析.net应用程序代码并生成相应的Java代码。 我听说很容易为.net代码实现抽象语法树(AST),后来我可以在我的java应用程序中使用该AST来生成相应的java类。 注意:不应该不惜任何代价触摸我的.NET应用程序代码。 所以我的目标是我必须开发一个解析.net代码并构造AST的java应用程序。后来,我可以使用这个AST并可以生成相应的java类。 我需要启动基本的“hello world”计划。
答案 0 :(得分:1)
我听说很容易为.net代码实现抽象语法树(AST)
容易是主观的。即使您使用像Roslyn这样的工具作为起点,您提出的建议也非常复杂。还要记住,许多.NET概念甚至不映射到Java(委托,事件,动态,LINQ,真正的泛型(而不是类型擦除),自定义值类型等)。有些工具可以像IKVM和JNBridge这样的产品。 IKVM通过在CLI中托管Java字节码作为IL来工作;我不完全确定JNBridge的作用,但它似乎在两个方向都有效(与IKVM不同) - 但请注意:这些不是代码翻译。
答案 1 :(得分:1)
虽然并非不可能,但您想要实现的目标过于宽泛,需要大量的编码,耐心和时间。你要解决的第一个问题是.Net不是一种编程语言,而是一个框架和现成的代码,许多编程语言如C#,VB,VC ++等等都使用.Net Framework。所以,你必须首先决定你使用哪种编程语言想要瞄准。
.Net库非常庞大,包含数千个类和函数,如果函数总数达到100,000,我不会感到惊讶。
在每个.Net函数和Java函数之间找到映射并不容易。您可能根本找不到等效的方法。不仅是方法,而且一些概念在Java中也没有等效的实现。
Hello world程序很简单,因为它中使用的方法数量有限,而且代码行很少。但除此之外,它不是一个可以在短时间内实现的直接解决方案。