gpt4 book ai didi

java - 对正在运行的 Java 应用程序进行 Java 调用的 Python egg

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:29 25 4
gpt4 key购买 nike

我正在为 Oracle NoSQL 数据库的 Python 适配器提出建议。 Oracle NoSQL 数据库作为独立的 Java 应用程序运行,至少在 Java 程序中,您可以通过告诉程序要连接的主机名和端口以及一些配置设置来与它交互。然后,您对包含该配置的“kvstore”对象进行 java 调用。

我想制作一个 Python 库,它基本上公开 Oracle NoSQL 拥有的 Java 方法的 Python 版本,并将它们转换为 Java 以与正在运行的 Oracle NoSQL 应用程序对话,但我不确定哪种技术最好能够做到这一点。

有谁知道我想使用什么技术?我宁愿不使用 Jython(这样应用程序可以在标准 Python 环境中运行)或 JNI(因为它似乎有一些令人讨厌的警告。)

编辑:目前我发现的唯一潜在技术是:Jpype它对我有用吗?

另外,这里是图书馆的理想要求。如果 Jython 或 JNI 确实最符合这些要求,我会考虑使用它们。

  1. 表现。 Oracle NoSQL 的主要优势是性能和可扩展性,因此这将是适配器最重要的组件。

  2. 对于 Python 用户来说易于实现。为了让 Python 程序员实际使用该库,他们必须以一种自然的方式相对容易地使用它。

  3. 可靠性。它需要有可能是值得信赖的并且没有错误,同时在您自然期望 Python 可以在其上工作的平台上工作。 (这就是让我担心 JNI 的原因。听起来它的实现依赖于平台,并且容易出错。)

  4. 开发速度。最后一点重要的是它的发展速度相对较快。开发人员团队会喜欢学习 Python 或 C,但我们现在比任何其他编程语言都更了解 Java。

最佳答案

我试着按顺序回答每一点,并附上自己的相关注释。

  1. 性能:我的观点是 JNI 会成为赢家,但我可能错了,因为 Jython 也可以进行 JIT。

  2. 易于实现:我认为这是因为您的意思是易于使用库?这将完全取决于您如何构建 API、一对一方法调用、对象句柄等。

  3. 可靠性:Jython 显然是这方面的赢家,因为当您仅实例化 POJO/直接在客户端代码中直接访问 API 时,没有出错的余地。

  4. 开发速度:JNI 可能非常乏味。您实质上是在学习 CPython 模块、C、Python 扩展、JNI,然后引用用 Java 构建的现有 API。

总而言之,如果您能跳槽,我认为您在嵌入 Jython 的短期内会获得更多好处,主要是因为您可以直接操作 API。我亲自将 IronPython 嵌入到 .NET 代码库中并取得了成功。是的,您会失去 native 速度,但很难通过工作 JNI 桥所需的 C 编码量来权衡取舍。也就是说,您很可能会找到像您列出的项目 (Jpype) 这样可以为您完成大部分跑腿工作的项目。

我想问的是,我需要的原生 CPython 运行时的哪些特性在您使用 Jython 时丢失了。您现有的 CPython 代码库是否严重依赖 CPython 原生功能?

无论如何,这是我尝试的答案。

关于java - 对正在运行的 Java 应用程序进行 Java 调用的 Python egg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com