所以..。为了尝试使用已经存在的轮子,而不是每次都重新创建自己的车轮,我一直在尝试使用特定Java的库来获得一个体面的Common环境。我的ABCL冒险实际上进行得相当顺利,我最终能够让ABCL和它好好交谈。当然,我想要的不仅仅是这个,我想要的是它和我的半圆轮chemicl之间的互操作性,这是我开始用Common编写的一个化学信息学包。这就是火车从铁轨上掉下来的地方。
ABCL和cxml-stp
一段时间以前,我试图让我的化学/生物信息学(https://github.com/slyrus/cl-bio)工作于ABCL的尝试失败了,我注意到plexippus-xpath无法加载到ABCL中。这是固定的,所以我被鼓励,事情可能会与ABCL一起工作。然而,cxml-stp似乎破坏了ABCL。
希望这是一个可修复的错误,一些未来版本的ABCL将与cxml-stp一起工作。
同时..。
其他CL和Java
所以,我想我会尝试一些其他方法来让Java和一个通用Lisp实现更好地发挥作用。我知道,你在想“为什么这个家伙不直接使用clojure呢?毕竟,clojure就是为这个而设计的!”这是个好问题。我确实在之前对这个Java库进行了一些探索,虽然java集成通常运行良好,但我想使用一堆现有的Common代码,而且至少在当时,它看起来像所有的clojure包装器,在这些包装器中,丑陋的Java库周围都有薄包装器。我逐渐了解并喜爱许多Common库,其中许多库在QuickLisp中都很好地可用,我希望能够使用这些库(比如cxml-stp、plexippus-xpath、opticl等等)。
发布于 2014-01-20 15:52:16
Clozure ( CCL )五年来一直带着完整移植的JFLI发行版(JFLI以前依赖于LispWorks FFI)作为CCL源代码发行版提供的“示例”的标准组件。JFLI (由Rich,Clojure的创建者)使用的是一个进程中的模型,它的性能可能比Hickey下一次尝试中所使用的模型(一种更广泛兼容的基于套接字的解决方案)至少高出一个数量级。
查看以下URL以浏览当前的JFLI源代码,因为它目前存在于Clozure开发主干中:
https://github.com/Clozure/ccl/tree/master/examples/jfli
Rich介绍了JFLI,并总结了他所采取的方法(替代CCL的FFI,他显然引用了LW):
我的目标是提供对Java和Java库的全面、安全、动态和Lisp-y的访问,就像它们是Lisp库一样,用于Lisp程序,即强调在Lisp中工作,而不是在Java中工作。我采取的方法是使用JNI在Lisp进程中嵌入一个JVM实例。我能够使用LispWorks自己的FLI和C(或Java!*)代码来完成这个任务,这是对LW的一种赞扬。在JNI层(本质上是整个JNI API的包装器)之上,我使用Java反射构建了这个用户级别的API。
https://stackoverflow.com/questions/21238104
复制相似问题