2008-09-05 98 views
6

有没有用于自动将非Java源代码转换为Java源代码的好工具?用于将非Java源代码转换为Java源代码的工具

我不期待有什么完美的东西,只是为了得到最糟糕的咕噜作品。

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

回答

6

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

这是充满危险。重新生成的代码会吮吸并可能无法读取。

3

Google:ANTLR

+0

好点,但取决于源语言,这将是一件大事。 – user181750 2009-10-14 09:47:29

-1

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

+0

相反呢?我是一个想学习ADA的java家伙 – WolfmanDragon 2008-12-12 18:45:58

+0

ADA并没有太大的差别,模板都是类似的,包就像java静态类,ADA类就像Java一样。 标准IO在ADA 中是通用的。 唯一不可思议的是扩展包,并且文件树和包名不像1:1那样与1:1排队。所以像C++ :) – 2009-01-12 06:16:07

0

如果你只是想使用一些传统的C/Pascal代码,你也可以使用JNI从Java调用它。

如果您想在Java applet或类似的受限环境中运行它,并且它不必非常高效,那么您可以使用NestedVM(这是MIPS到Java字节码转换器)编译器编译为MIPS)。但不要指望从中获得可读的Java代码。

1

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

0

只有当您的非java代码不够大时,任何这些工具才有用。

如果它的巨大的非java代码,并且如果你想认真地将它翻译成java,那么很少有事情需要考虑,它不仅仅是数百行代码,它下面有一个设计,很少有决定由代码下的人员采取的,因为某些问题可能已经解决,并且很少有事情在那里工作。花时间在任何优秀的翻译者身上都是不值得的,因为它不会存在,它不仅仅是从一种语言到另一种语言的语法翻译。

如果它的代码量不是很大,那么最好用java编写代码,因为它包含了很多API包,所以这可能不是什么大不了的,雇用几个实习生可能会有所帮助。

5

源到源迁移属于Program Transformation的保护范围。 Program-Transformation.org跟踪对语言识别,分析和转换有用的bunch of tools。以下是几个能够进行源到源迁移的源代码:

如果你花与开源工具之一任何时候,你会发现,即使他们包括源到作为一项功能来源迁移,很难找到工作示例。我想这是因为没有一种适合所有人的迁移。每个项目/团队都独特地使用一种语言,并且可以根据所用的库,类型的复杂性,习惯用法,样式等而有所不同。每次迁移定义一些转换是有意义的。这意味着在自动迁移之前项目必须达到一定临界质量值得付出努力。

几个相关文件: