用于将非Java转换为Java源的工具

时间:2008-09-05 19:55:02

标签: java compiler-construction

是否有任何好的工具可以自动将非Java源代码转换为Java源代码?

我并不期待一些完美的东西,只是为了让最糟糕的工作完成。

我猜有一个滑动难度。 C#应该相对容易(只要忽略所有库)。 (写得好)C ++不是那么糟糕。 C需要做一点OO。 (静态类型)函数语言可能很容易理解。动态OO语言可能需要非本地分析。

7 个答案:

答案 0 :(得分:5)

您可以尝试的一件事是找到您正在讨论的语言的Java字节码编译器(有各种语言的JVM编译器),然后使用像Jad这样的反编译器将字节码反编译回Java。

这充满了危险。重新生成的代码很糟糕,可能无法读取。

答案 1 :(得分:5)

源到源迁移属于Program Transformation的范畴。 Program-Transformation.org跟踪对语言识别,分析和转换有用的bunch of tools。以下是一些能够进行源到源迁移的方法:

如果您花时间使用其中一个开源工具,您会注意到即使它们将源到源迁移作为一项功能包含在内,也很难找到有用的示例。我想这是因为没有一个适合所有人的迁移。每个项目/团队都使用一种语言,并且可以根据使用的库,类型复杂性,习语,风格等而有所不同。每次迁移定义一些转换是有意义的。这意味着项目必须达到一定的临界质量才能实现自动迁移。

一些相关文件:

答案 2 :(得分:3)

谷歌:ANTLR

答案 3 :(得分:1)

语言转换相当简单,但您会发现库是不同的。 这很可能是你的大部分工作。

答案 4 :(得分:0)

如果您只想使用一些旧的C / Pascal代码,您还可以使用JNI从Java调用它。

如果要在Java applet或类似的约束环境中运行它,并且它不必非常高效,可以将NestedVM(这是一个MIPS到Java字节码转换器)与a一起使用编译为MIPS的gcc交叉编译器。但是不要期望从中获得可读的Java代码。

答案 5 :(得分:0)

只有当您的非Java代码不够大时,这些工具中的任何一个都可能有所帮助。

如果它的巨大的非Java代码,如果你想认真地将它翻译成java,那么很少有东西需要考虑,它不仅仅是几百行代码,它下面有一个设计,几乎没有做出决定由于某些问题可能已经解决而且很少有东西在那里工作,因此代码下面的人员。任何优秀的翻译都不值得,因为它不会存在,不仅仅是从一种语言到另一种语言的语法翻译。

如果它不是那么庞大的代码,那么最好重新编写java,因为它有很多开箱即用的API软件包,这可能不是什么大问题,聘请一些实习生也可能有所帮助。

答案 6 :(得分:-1)

ADA to Java可以通过查找和替换来完成!