代码之家  ›  专栏  ›  技术社区  ›  Lee

如何将Java代码转换为C代码?

  •  5
  • Lee  · 技术社区  · 17 年前

    我正在把一个Java库移植到C语言中。我使用VisualStudio 2008,所以我没有中断的微软Java语言转换辅助程序(JLCA)。

    我的方法是创建一个新的解决方案,它与Java库有一个类似的项目结构,然后将Java代码复制到一个C文件中,并逐行转换成有效的C语言。考虑到我发现Java容易阅读,这两种语言的细微差别令我吃惊。

    有些东西很容易移植(名称空间、继承等),但有些东西却出乎意料地不同,例如嵌套类中私有成员的可见性、重写虚拟方法和内置类型的行为。我不完全理解这些事情,我确信还有很多我还没有看到的差异。

    我在这个项目上还有很长的路要走。在这个转换过程中,我可以应用什么经验法则来正确地管理语言差异?

    6 回复  |  直到 13 年前
        1
  •  3
  •   FlySwat    17 年前

    您以您能做到的唯一理智的方式来做这件事……最大的帮助将是Dare Obasanjo提供的这份文档,其中列出了两种语言之间的差异:

    http://www.25hoursaday.com/CsharpVsJava.html

    顺便说一下,将所有的GETER和SETTER方法更改为属性……不需要具有与Java库相同的C~*库函数,除非您要实现完美的接口兼容性。

        2
  •  3
  •   Alf    13 年前

    其他几个值得注意的选项:

    • J# 是微软的Java语言 在.NET上实现。你可以 访问Java库(至多版本) 1.4,无论如何。 *实际上Java1.I/Java1.I/Lang. 1.2对于java.util+请记住 J 2.0 Redist的寿命为2015-2017年。

    • Mono's IKVM 也运行Java 可以访问其他.NET的CLR 程序。

    • Microsoft Visual Studio 2005即将推出 用“Java语言转换” “助手”转换Java 程序到C程序 自动为你。

        3
  •  1
  •   Brian Kelly    17 年前

    如果您有少量代码,那么逐行转换可能是最有效的。

    如果您有大量的代码,我会考虑:

    1. 正在寻找一种可以为您进行对话的产品。
    2. 编写一个脚本(Ruby或Perl可能是一个很好的候选者)来为您进行转换——至少是单调的东西!它可以简单地搜索/替换关键字差异和文件重命名。给你更多的时间/手指集中在更难的事情上。
        4
  •  1
  •   Qwertie    17 年前

    还有一个又快又脏的想法:你可以用 IKVM 若要将Javajar转换为.NET程序集,则使用 Reflector --与 FileDisassembler 外接程序——将其分解为一个Visual C项目。

    (顺便问一下,我还没有真正使用过iKVM——有人愿意保证这个过程会有效吗?)

        5
  •  0
  •   Mil    17 年前

    我不确定这是否是逐行转换代码的最佳方法,尤其是当障碍变得难以逾越时。当然,Java代码为您提供了一个指南和基本结构,但我认为最重要的是,该库确实提供了与Java相同的功能。

        6
  •  0
  •   Bill K    17 年前

    前几天我听说了关于.NET版本的Java。如果有这样一个怪物,你能把Java源编译成.NET中间库吗?