热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java远程调用python_用Java调用Python?

嘿,我以为即使迟到,我也会输入我的答案。我认为首先要考虑一些重要的事情,你希望有多强大的java和python之间的链接。首先࿰

嘿,我以为即使迟到,我也会输入我的答案。 我认为首先要考虑一些重要的事情,你希望有多强大的java和python之间的链接。

首先,您是否只想调用函数或者您是否真的想要python代码来更改java对象中的数据? 这是非常重要的。 如果您只想调用带或不带参数的python代码,那么这并不是很困难。 如果你的参数是原始的,那就更容易了。 但是如果你想在python中有java类实现成员函数,这会改变java对象的数据,那么这不是那么容易或直截了当。

其次我们是在谈论cpython还是会jython呢? 我会说cpython就是它的所在! 我主张这就是为什么python如此酷! 有这么高的抽象但是在需要时可以访问c,c ++。 想象一下,如果你能在java中拥有它。 这个问题甚至不值得问,如果jython是好的,因为无论如何它很容易。

所以我使用了以下方法,并将它们从易到难的列出:

Java到Jython

优点:轻松简单。 有对java对象的实际引用

缺点:没有CPython,非常慢!

来自java的Jython非常简单,如果这真的足够那么好。 然而它非常慢,没有cpython! 如果没有cpython,生活是否值得生活我不这么认为! 您可以轻松地使用python代码为您的java对象实现您的成员函数。

通过Pyro从Jython到CPython的Java

Pyro是python的远程对象模块。 你在cpython解释器上有一些对象,你可以发送它通过序列化传输的对象,它也可以通过这种方法返回对象。 请注意,如果从jython发送序列化的python对象,然后调用一些更改其成员中的数据的函数,那么您将不会在java中看到这些更改。 您只需要记住从pyro发回您想要的数据。 我相信这是进入cpython的最简单方法! 你不需要任何jni或jna或swig或....你不需要知道任何c或c ++。 嗯嗯?

优点:访问cpython,不像以下方法那么困难

缺点:无法直接从python更改java对象的成员数据。 有点间接,(jython是中间人)。

Java到C / C ++通过嵌入式解释器通过JNI / JNA / SWIG到Python(也许使用BOOST库?)

OMG这种方法不适合胆小的人。而且我可以告诉你,用一种不错的方法实现这一目标需要很长时间。你想要这样做的主要原因是你可以运行cpython代码,它完全控制你的java对象。在决定尝试使用python(就像一匹马)来尝试和java(就像一只黑猩猩)一样,需要考虑一些重要的事情。首先,如果你让翻译失败,你的节目就会熄灯!并没有让我开始处理并发问题!此外,还有分配锅炉,我相信我找到了最好的配置,以尽量减少这个锅炉,但它仍然是分配!那么如何解决这个问题:考虑到C ++是你的中间人,你的对象实际上是c ++对象!好,你现在知道了。只需将您的对象编写为cpp中的程序,而不是使用您希望从两个世界访问的数据。然后你可以使用名为swig的包装器生成器([http://www.swig.org/Doc1.3/Java.html)]使java可以访问它并编译一个你称之为System.load的dll(这里的dll名称) )在java中。首先让这个工作,然后继续努力!要进入python,您需要嵌入一个解释器。首先,我建议做一些hello解释程序或本教程在C / C中嵌入python。一旦你有了工作,就有时间让马和猴子跳舞!您可以通过[boost] [3]将c ++对象发送给python。我知道我没有给你鱼,只是告诉你在哪里找到鱼。编译时需要注意的一些指示。

编译boost时,需要编译共享库。 你需要在jdk中包含和链接你需要的东西,即jawt.lib,jvm.lib,(启动应用程序时你的路径中还需要客户端jvm.dll)以及python27.lib或者 无论如何以及boost_python-vc100-mt-1_55.lib。然后包括Python / include,jdk / include,boost和仅使用共享库(dll),否则boost有一个teary。 我知道,是的。 有很多方法可以解决这个问题。 因此,请确保逐块完成每件事。 然后把它们放在一起。



推荐阅读
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • Python中sys模块的功能及用法详解
    本文详细介绍了Python中sys模块的功能及用法,包括对解释器参数和功能的访问、命令行参数列表、字节顺序指示符、编译模块名称等。同时还介绍了sys模块中的新功能和call_tracing函数的用法。推荐学习《Python教程》以深入了解。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 线程漫谈——线程基础
    本系列意在记录Windwos线程的相关知识点,包括线程基础、线程调度、线程同步、TLS、线程池等。进程与线程理解线程是至关重要的,每个进程至少有一个线程,进程是线程的容器,线程才是真正的执行体,线程必 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • 子类从父类继承所有的成员(字段,方法,嵌套类),构造方法不属于成员,所有子类不能继承,但是子类可以调用父类的构造方法对于private方法和属性,子类一定是继承了的,但是没有访问权 ... [详细]
  • 线程安全解析(附带JVM内存结构和锁机制说明)
    2019独角兽企业重金招聘Python工程师标准一、JVM内存结构和保存的变量属性(JVM调优和算法不涉及)1.堆、栈、方法区、程序计数器、本地方法栈--重点说堆、栈、方法区 ... [详细]
  • Python语言简介、环境搭建、PyCharm的安装和配置
    一、Python语言简介1.1Python语言的基本概念官方对Python语言的介绍如下:Python是一款易于学习且功能强大的编程语言。它具有高效率的数据结构,能够简单又有效地实 ... [详细]
  • 前言无论使用哪种语言,我们都需要关注性能优化,提高执行效率。选择脚本语言需要持久的速度。在某种程度上,这句话说明了Python作为一种脚 ... [详细]
  • 申明下哈本篇文章不是自己写的根据网上的文章再加上自己的加加点点反正大部分都是网站的智慧哈!!!1、线程基本概念1.1线程是什么࿱ ... [详细]
author-avatar
没人欣赏2602896483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有