Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动Python到Java的翻译_Java_Python_Jython_Code Translation - Fatal编程技术网

自动Python到Java的翻译

自动Python到Java的翻译,java,python,jython,code-translation,Java,Python,Jython,Code Translation,有没有一个工具可以自动将Python转换为Java? Jython可以这样做吗?为了澄清您的问题: 从Python源代码到Java源代码?(我不这么认为) 。。或者从Python源代码到Java字节码?(Jython在引擎盖下做这件事)这可能不是一个容易的问题。 确定如何将Python中定义的类映射到Java中的类型将是一个巨大的挑战,因为每个类型的绑定时间不同。(duck类型与编译时绑定) 实际上,这可能有帮助,也可能没有帮助,但是您可以编写一个脚本,为每个Python类创建一个Java类,包

有没有一个工具可以自动将Python转换为Java?
Jython可以这样做吗?

为了澄清您的问题:

从Python源代码到Java源代码?(我不这么认为)


。。或者从Python源代码到Java字节码?(Jython在引擎盖下做这件事)

这可能不是一个容易的问题。
确定如何将Python中定义的类映射到Java中的类型将是一个巨大的挑战,因为每个类型的绑定时间不同。(duck类型与编译时绑定)

实际上,这可能有帮助,也可能没有帮助,但是您可以编写一个脚本,为每个Python类创建一个Java类,包括方法存根,将该方法的Python实现放在Javadoc中

事实上,这在Python中很容易实现

我在一家公司工作,该公司负责一个巨大的Smalltalk(类似于Python)系统的Java端口,这正是他们所做的。填写这些方法是手动的,但非常宝贵,因为它让你真正思考发生了什么。我怀疑暴力方法是否会产生好的代码


这里还有另一种可能性:您能更容易地将Python转换为Jython吗?Jython只是JVM的Python。可以使用Java反编译器(例如JAD)将字节码转换回Java代码(或者您可能只希望在JVM上运行)。我不确定这一点,但是,也许其他人会有更好的主意。

是的,Jython会这样做,但它可能是你想要的,也可能不是你想要的。

维克托,我认为你太喜欢Python了,以至于不能将它转换成Java。;-):)我喜欢Python,但我没有选择……JAD解决方案听起来像是一个赢家。也许您可以编辑您的答案来显示这个解决方案。我不清楚JAD解决方案是否实际可行,因为我不知道Jython类是否转换为.class文件,或者是否通过在运行时将它们转换为字节码来解释它们。这是一个需要进一步研究的建议,以及所有那些特殊的方法名称。调用需要非常小心地进行管理。有一个名为的转换器可以将Python的子集转换为Java。我的项目也是为了同样的目的而写的,但它也将Python翻译成C#、Java、JavaScript和其他几种语言。@AndersonGreen我想试试你的工具将Python转换成Java。我在你的自述中没有看到一个例子。你介意解释一下吗?@AndersonGreen我试过你的在线转换器,但当用python声明类时,它似乎失败了。@Karthik,是的,它只与python的一个小的“纯函数”子集兼容。是的,它转换为java源代码。从他们的页面():jythonc工具生成实际的Java源代码,然后在此源代码上调用Java编译器来创建.class文件实际上,但更准确地说,
jython
从Python源代码而不是Java源代码创建JVM字节码