是否存在Java到C ++转换器/工具?
我总是问自己是否有可能制作一个Java to C ++转换器。
也许一个将Java语法转换为C ++语法的工具?
我知道,语言不同,但简单的事情,如语义匹配1至1循环。
有这样的工具吗? 还是有可能做一个?
有足够的时间,金钱和资源可以做任何事情。 这是否实用? 除了微不足道的例子之外。 或者说,这取决于什么构成了可接受的错误率。
真正的问题是Java中的成语与C ++是不同的。 Java到C#例如实际上会更容易(因为成语更相似)。 最大的当然是C ++具有析构函数和手动pipe理的内存。 Java对这种行为使用finally块,并有垃圾收集。
另外Java有一个通用的Object超types。 C ++没有。
generics到模板将近乎不可能我会想象。
Firefox HTML5parsing器是用Java编写的,并转换为C ++ 。 但是我认为这个项目中使用的转换器非常具体。 有趣的是,结果是C ++parsing器比用C ++编写的旧parsing器更快。
我还在src / tools / org / h2 / java下写了一个转换器作为H2数据库的一部分。 这个想法是允许将H2数据库的一个子集转换为C ++,所以这也不是一个通用的转换器。
还有一个开源项目J2C 。
所以有办法将Java转换为C ++。 但不要指望翻译器支持所有的function,也不要期望得到的代码比一个好的Java JVM更快。
是可能的,毫无疑问,但它不会那么简单。 这将是一个生成C ++的Java编译器。
如果你想从头开始,那将是非常困难的,你必须做所有的工作javac和JVM为你做(例如垃圾收集)。
顺便说一句。 Google有一个Java to JavaScript编译器(包含在GWT中 )
有一点,我不确定它是否真的有效。 Java到C ++转换器 – 有形的软件解决scheme 。
这是奇怪的如何有C + +到Java转换器,但只有1个Java到C + +转换器。
如前所述,将Java转换为C ++是很困难的,但是我们可以拥有一个应用程序或工具来生成Java代码和Equinetnet C ++代码。
我知道一个应用程序生成C ++ / Java / C#中的代码给定一个模型,它有自己的方式来定义它。
该工具属于CA,名称是CA Plex。 在www.ca.com上search
有一些程序声称可以做到这一点,但没有人获得足够的知名度,所以我们会留下他们的“尝试”。 制作一个转换器需要在程序中内置很多AI。 由于GTK / wxWidgets / Qt / win32 API与swing有很大不同,难度增加了十倍。 但是这是可能的。 不是代码质量会很好,也不能保证你的程序不会由于单独的内存处理方法而崩溃,但这是可能的。
主要的问题是Java是一种被编写和devise为与VM交谈的语言。 我认为这将是可能的,但是所有你将会留下的是一个非常糟糕的优化应用程序,它有一个自我翻译的层面来完成VM已经做的事情。 我的意思是,当然,这是可能的,它仍然不是我能想到的任何解决scheme。 如果你想让自己的Java应用程序呆滞,也许你的想法太辛苦了,那么就使用像JET这样的应用程序吧,它实际上是相当不错的,并且会给你带来本地应用带来的好处。 当然,如果虚拟机已经在做什么应用程序要求它做的本地代码可以(它发生..有时:P),它可能会改变什么。
从Java到c#,tho听起来更合理,因为这两种语言都是以类似的方式编写的,所以这样的话就可以对框架进行讨论,但是这仍然会使代码变得非优化,因为从头开始为特定的框架编写的代码是无法实现的。
http://www.tangiblesoftwaresolutions.com/Order/Order_Upgrade_Instant_CPlus_Java_Edition.htm
取决于代码的使用领域,从学习的angular度来看,也许这可能是有趣的。
我只是通过谷歌find了这个,因为我记得在Univeristy看到一个基于uml的代码。
Java到C实际上是最简单的。 记住你需要转换语言,如果你这样做,所需的库可以被你的新编译器转换。 换句话说,Swing和AWT不应该是一个大问题…
我首先看一下Java Native Interface(JNI)。 JNI是Java的一部分,它允许它与C和C ++一起使用。 我从这里开始的原因是,在C中如何实现Java的某些部分变得相当明显。一旦掌握了基本结构,比如Java对象如何映射到C结构(结构)以及几乎所有的东西Java是一个包含数组的对象,我可能会查看Open JDK源代码。
实际的转换器将不得不转换所有导入的Java库(及其导入的库等…),这意味着您将需要所有东西的源代码。 这个转换不是小任务,因为Java库很大。
这个过程非常耗时,但不需要AI。 但是,我看不到有这样的转换的理由。 它放松了Java的可移植性,并且不会获得C的效率(除了它将被编译为本地代码,但最好是直接从Java编译机器代码)。
东西整洁将是一个工具,将Java翻译为“C ++使用Java API”(如GNU GCJ CNI),一个问题仍然是pipe理array.length
(数组不是vector)…