3

我正在为 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。

4

1 回答 1

3

我试图用自己的相关注释按顺序回答每一点。

  1. 性能:我的观点是 JNI 会是这里的赢家,但我可能是错的,因为 Jython 也可以是 JITed。

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

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

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

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

我会问在使用 Jython 时我需要哪些本机 CPython 运行时的特性而你失去了这些特性。您现有的 CPython 代码库是否严重依赖 CPython 原生功能?

无论如何,我正在尝试回答。

于 2013-02-26T22:47:24.797 回答