Haskell Java 互操作性

Posted

技术标签:

【中文标题】Haskell Java 互操作性【英文标题】:Haskell Java Interoperability 【发布时间】:2012-03-10 21:05:37 【问题描述】:

Haskell/Java 互操作的当前解决方案是什么?我看过 Meijer 和 Finne 关于 Lambada 的论文。有一个名为 GCJNI 的项目,但它似乎已失效——指向它的链接已损坏。有什么东西可以开箱即用吗?

【问题讨论】:

相关:***.com/questions/2141148/…***.com/questions/7961335/…***.com/questions/4988598/… 不完全是 Haskell,但几乎 - code.google.com/p/frege - 它编译成 Java 【参考方案1】:

使用GHC FFI,您可以创建一个从Haskell 领域导出函数的shared library,然后Java 可以通过JNA 使用该函数。或者,您可以使用相同的共享库并编写一些胶水代码以通过 JNI 公开它以获得更“Java-y”的接口。您也可以发疯,通过 FFI 向 Haskell 公开足够的 JNI,以真正启动您的 Java(这在某种程度上是 Lambada 论文所采用的方法)。

我相信 Haskell 共享库 + JNA 将是最简单、最容易的方法。这是假设向 Java 公开一些 Haskell 函数比向 Haskell 公开一些 Java 对象更容易。对于其他方向的一些见解,您可能对Salsa 感兴趣,它是 C#,而不是 Java,但可能会对设计接口的原则感兴趣。

【讨论】:

真正困难的部分是从 Java 代码自动生成 Haskell 接口。这方面有进展吗?【参考方案2】:

不是真正的互操作,但您可以使用 http rest 或 zeromq

http://www.zeromq.org/

haskell 绑定:http://www.zeromq.org/bindings:haskell

【讨论】:

以上是关于Haskell Java 互操作性的主要内容,如果未能解决你的问题,请参考以下文章

深入kotlin - 与Java互操作:kotlin调用java

Groovy 元类与 Java 8 的互操作性

Varargs Kotlin Java 互操作无法正常工作

Kotlin的互操作——Kotlin与Java互相调用

Java 和 C# 互操作性

互操作性 java 和 c++ [关闭]