Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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 - Fatal编程技术网

Python可以调用Java框架吗?

Python可以调用Java框架吗?,java,python,Java,Python,Python可以调用Java框架吗 我想知道Python项目是否可以调用Java框架,我在GitHub中找到了Java框架,我是否可以在Python项目中使用它?通常Python和Java都有自己的解释器/VM,不能共享。可以使用Jython,但有一些限制(fe.python版本和与其他python包的支持/兼容性) 解释器和JVM不匹配:Java有严格的类型,python没有。Java编译并运行,python是一个解释器,可以在运行时更改代码(如果需要)。这些都是额外的挑战,为什么把所有的东西

Python可以调用Java框架吗


我想知道Python项目是否可以调用Java框架,我在GitHub中找到了Java框架,我是否可以在Python项目中使用它?

通常Python和Java都有自己的解释器/VM,不能共享。可以使用Jython,但有一些限制(fe.python版本和与其他python包的支持/兼容性)

解释器和JVM不匹配:Java有严格的类型,python没有。Java编译并运行,python是一个解释器,可以在运行时更改代码(如果需要)。这些都是额外的挑战,为什么把所有的东西放在同一个环境中是非常复杂的

也有类似于客户机/服务器体系结构的可能性,但可行性取决于框架的级别

大多数情况下,低级框架都经过优化,可以直接在应用程序进程内部运行。任何松耦合都会带来性能、安全性和兼容性问题。只要想想反射将如何工作或多重继承

如果它是一个高级框架(fe能够独立运行),那么使用某种类型的客户机/服务器就更为可行。但是你仍然需要为它开发很多东西

行业标准只是用您想要的语言实现您想要的框架,然后您还可以获得平台的所有好处。

Jython 是从python调用Java的一种方法——实际上,您在Java JVM中运行python。这使您可以访问几乎所有在JVM上运行的Java,但有许多限制

由于Jython在JVM中运行python,因此您可以访问几乎所有Java库。但是,您在使用Python方面受到很大限制:只能使用Python 2.7,并且只能导入纯Python库(使用C编译的Python库不会在Jython上运行)

例如,使用Jython的项目:在Jython上运行,以访问处理Java API及其Java库生态系统

请注意,Jython 2和都非常旧,并且if/when

py4j 是一种不同的方法——它是“Python和Java之间的桥梁”,允许本机Python代码访问在单独JVM中运行的单独Java。但是请注意,python和Java代码必须并行运行,并通过网关接口进行通信。这是单独运行的进程之间的通信——您不是从Python或在Python内部旋转JVM


例如:在JVM端,将myObject传递给新的网关服务器(myObject);在Python端,创建一个JavaGateway()Python对象,并使用它与Java myObject通信。

一般来说,不可以。可以通过编写C包装来实现,但如果必须问这个问题,这可能不是您想要或需要的。可以通过使用Jython来实现,尽管这可能会给其他对象带来不兼容性(第三方)您正在使用的库这是Jython,您可以用于Python Java互操作,但会丢失所有的C库…您也可以尝试Py4J。欢迎访问SO。感谢发布答案。请完成本教程并享受SO;-)在
py4j
中通过网关进行通信的含义是什么?请参见py4j主页顶部的简单示例。在JVM端,您将一个对象传递给一个新的GatewayServer(对象)。在Python端,创建一个JavaGateway()Python对象,并使用它与Java对象通信。