【发布时间】:2013-02-13 04:27:21
【问题描述】:
我目前使用 Matlab 作为一种科学计算语言,但有兴趣转向更开放的替代方案。 Python (+scipy +numpy +matplotlib) 似乎是最好的方法。我对这种切换的最大担忧是 Python 不会像 Matlab 那样与 Java 交互好/容易/无缝,而且我经常需要使用 Java API。我特别喜欢 Matlab 中的那个:
1) 我可以实例化 Java 对象并访问它们的成员变量和方法
2) Java 事件在 Matlab 中变成“回调”
3) Java 类型自动转换为 Matlab 类型(布尔到逻辑等)
据我所知,Python 中有 3 个选项(如下)。我担心的是,每一个都是由一个非常小的开发人员社区支持/开发的(据我了解,每种情况下都有 1-3 人),并且这种支持可能不会永远存在。以下哪项是 Matlab 所做的两件事?在可预见的未来,哪个最有可能继续这样做?如果我也可以使用 Python 中的 Java GUI,那将是一个额外的好处。我错过了任何选项吗?
1) Jython
2) Py4J
3) JPype
【问题讨论】:
-
据我所知,Jython 支持这些要求,但我在该主题方面没有太多经验。
-
请问您为什么要这样做?是因为您有用 java 编写的遗留库代码吗?从长远来看,最好将所有代码都放在 python(或与它很好接口的 C)中,而不是 python/java 混合。使用 matlab 后,我明白为什么您要为某些任务调用非 matlab 代码(鉴于 matlab 对于通用编程来说是可怕的),但如果您使用 python 就不会遇到这个问题
-
PS:Jython 不起作用。检查此常见问题解答:scipy.github.com/faq.html#id23 通常,用 Jython 编写的程序无法访问为 CPython 编写的 C 扩展。鉴于大多数(如果不是全部)python 科学库的核心功能都是用 C 编写的,那么这不会那么好
-
谢谢,我也不清楚。我想我对 Jython 的问题是它似乎总是落后于 Python 并且不一定完全兼容。这是一个合理的担忧吗?
-
这是我想使用的 Java API(以及一些相关的遗留代码)。
标签: java python api matlab jython