2012-04-12 753 views
4

在有人将我击倒之前,我知道Java是二进制编译器,而我并没有经过其中之一。将Java源代码转换为C++源代码的工具

我也知道没有任何完美的工具可以将一切都转换成没有任何问题。我知道缺少Java库是一个主要问题;但是我的源码不使用很多Java库,除了像String和打印之类的东西。我只想用这个工具来创建Java源代码引用的类。在字符串的情况下,我很乐意填补空白或在稍后阶段修复。我只是想让这个工具去做一些无聊的事情,所以我不必手动进行翻译。

在需要的类等的情况下,我会手动修复那些在后期阶段,但会欣赏一个指标,至少得到了足够的无聊的东西完成。

我再次想要翻译源文件,而不是编译器生成二进制文件。基本上我想采取一些Java的东西,并将其转换为C++,以供以后在其他项目中使用。

编辑 其他注意事项

很抱歉,如果我没有在我以前对这个问题的部分清晰。我知道Java与C++非常不同。我有一些Java代码,它大部分都是处理数组和位,并且几乎没有创建对象。在某种意义上说,它是非常独立的,并且很少有其他类的调用。这些类似乎是转换的主要候选对象;其他的东西将不得不重写,但至少有一些部分是杠杆化的。

+0

如果您真的想从C++访问您的Java实用程序,那么您可以使用JNI而不是移植它们。 – 2012-04-12 02:20:54

+0

重复的可能答案:http://tangiblesoftwaresolutions.com/Product_Details/Java_to_CPlusPlus_Converter_Details.html - 但工具带有许多警告,并不是免费的。 – 2012-04-12 02:27:12

+0

@ jesse如果即时通讯要求一个Java - > C++如何可以这是一个重复的YOR建议,这是另一种方式? – 2012-04-14 03:32:23

回答

11

j2c就是其中之一 - 它会将Java源代码转换为粗略的C++等价物。

很明显,有很多其他人提到的警告(垃圾回收,同步等),但它会提供一个很好的起点(并且它是开源的,因此您可以轻松地改进该点=)。

根据您的代码库的大小,自己编写代码也是有意义的 - 一旦您拥有Java AST可以工作,编写代码就不是那么困难,因为Java语法大部分是C++的子集,并且有很多库会为你解析Java代码(例如,j2c使用Eclipse自带的代码)。手工进行转换比为其编写工具更容易出错。