【问题标题】:Tools for converting non-Java into Java source [closed]用于将非 Java 转换为 Java 源的工具 [关闭]
【发布时间】:2013-01-17 17:39:34
【问题描述】:

有没有什么好的工具可以自动将非 Java 源代码转换为 Java 源代码?

我并不期待完美的东西,只是为了摆脱最糟糕的繁重工作。

我想有一个滑动的难度等级。 C# 应该相对容易(只要您忽略所有库)。 (写得很好)C++ 还不错。 C需要做一点OO。 (静态类型)函数式语言可能很容易理解。动态 OO 语言可能需要非本地分析。

【问题讨论】:

    标签: java compiler-construction


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      源到源迁移属于 Program Transformation 的保护伞。 Program-Transformation.org 跟踪对语言识别、分析和转换有用的bunch of tools。以下是一些能够进行源到源迁移的工具:

      如果您花时间使用其中一种开源工具,您会注意到,即使它们将源到源迁移作为一项功能,也很难找到有效的示例。我想这是因为没有千篇一律的迁移。每个项目/团队都会独特地使用一种语言,并且会因使用的库、类型复杂性、惯用语、风格等而有所不同。每次迁移定义一些转换是有意义的。这意味着一个项目必须达到一定的临界质量,然后自动迁移才值得。

      一些相关文件:

      【讨论】:

        【解决方案3】:

        谷歌:ANTLR

        【讨论】:

        • 好点,但取决于源语言,这将是一件大事。
        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          如果您想在 Java 小程序或类似的受限环境中运行它,并且它不必非常高效,您可以将 NestedVM(这是一个 MIPS 到 Java 字节码转换器)与 gcc cross 结合使用-编译成 MIPS 的编译器)。但不要期望从中获得可读的 Java 代码。

          【讨论】:

          • NestedVM 工具链相当繁重且有点过时。基本上,您将 MIPS 指令转换为 Java 字节码(选择 MIPS32 是因为最接近 JVM)
          【解决方案6】:

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

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

          如果代码不是那么大,最好用 java 重写,因为它有很多开箱即用的 API 包,可能没什么大不了的,为此招聘一些实习生也可能会有所帮助。

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 反过来呢?我是一个想学习 ADA 的 java 人
            • ADA 并没有太大的不同,模板非常相似,包就像 java 静态类,ADA 类就像 Java 类。标准 IO 在 ADA> 中是通用的。唯一奇怪的是包扩展名,文件树和包名不像 Java 那样排列成 1:1。所以就像 C++ :)
            猜你喜欢
            • 2010-10-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-22
            • 2012-05-09
            • 2012-10-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多