2014-01-20 2 views
11

그래서 ... 매 회전마다 내 자신을 재발 명하기보다는 기존의 바퀴를 사용하려는 시도에서 [특정 Java 라이브러리]로 작동하는 알맞은 Common Lisp 환경을 얻으려고 노력했습니다. 나의 ABCL 모험은 실제로 합리적으로 잘 진행되었고, 결국 ABCL이 잘 이야기 할 수있었습니다. 물론 나는 그 이상을 원했고 Common Lisp에서 필자가 시작한 cheminformatics package 인 chemicl과 반 바퀴 사이의 상호 운용성을 원했습니다. 이것은 기차가 트랙에서 떨어지기 시작한 곳입니다.Common-Lisp/Java 상호 운용성에 대한 가능한 접근 방법은 무엇입니까?

ABCL 및 CXML-STP

백 동안, 내 화학/생물 정보학의 일부를 얻을 이전, 중단 된 시도 ABCL 작업 (https://github.com/slyrus/cl-bio) 물건은 내가 발견 plexippus - XPath는 될 수 없다는 것을 ABCL에로드. 이것은 수정 되었기 때문에 ABCL과 함께 작동 할 수도 있습니다. 그러나 cxml-stp는 ABCL을 손상시키는 것으로 보입니다.

이것은 ABCL의 수정 가능한 버그이며 향후 버전에서는 cxml-stp와 함께 사용할 수 있기를 바랍니다. 한편

...

CL과

자바 그래서, 내가 좋은 플레이 자바와 커먼 리스프 구현을 얻는 데 다른 방법을 시도 거라고 생각 기타. 알다시피, 당신이 생각하는 이유는 "젠장, 클루저를 사용하지 않는 이유는 무엇입니까? 결국, 클로이가 디자인 한 것입니다!" 음, 좋은 질문입니다. 필자는 [이 Java 라이브러리]를 사용하여 몇 가지 초기 탐색을 위해 clojure를 사용했으며 Java 통합이 일반적으로 잘 작동하지만 사용하고 싶은 기존의 Common Lisp 코드가 많았지 만 적어도 당시로서는 모든 clojure 래퍼는 추악한 Java 라이브러리 주위의 얇은 래퍼입니다. 나는 많은 Common Lisp 라이브러리를 알고 있고 사랑해 왔으며, 그 중 많은 것들이 QuickLisp에서 잘 사용 가능하다. 나는 cxml-stp, plexippus-xpath, opticl 등과 같은 것들을 사용할 수 있기를 바란다.).

답변

11

Clozure Common-Lisp (CCL)은 CCL 소스 배포판에서 제공되는 "예제"의 표준 구성 요소로 완전히 이전 된 JFLI (이전에는 LispWorks FFI에 의존 한 JFLI)와 함께 제공되었습니다. . JFLI (Rich Hickey, Clojure의 제작자)는 In-process 모델을 사용하며, Hickey의 다음 시도에 사용 된 모델보다 더 큰 성능을 발휘할 가능성이 높습니다. 더 널리 호환되는 소켓 기반 해결책이라고 그는 FOIL이라고 지명했다.

는 현재 Clozure 개발 트렁크에 존재하는 다음의 URL에서 보면 현재 JFLI 소스 코드를 찾아 유무 :

리치 키스 마크가 접근 방식의 다음과 같은 요약 JFLI을 도입

http://trac.clozure.com/ccl/browser/trunk/source/examples/jfli

그는 촬영했다 (그는 분명 LW-FFI를 참조 대체 CCL의 FFI) :

내 목표는 자바와 자바, 포괄적 인 안전, 역동적이고 리스프-Y 액세스를 제공하는 것이 었습니다 라이브러리를 Lisp 라이브러리처럼 Lisp 프로그램에서 사용하기 위해 즉 Java가 아닌 Lisp에서 작업하는 것에 중점을 둡니다. 내가 취한 접근법은 JNI를 사용하여 Lisp 프로세스에 JVM 인스턴스를 포함시키는 것이었다. I 은 LispWorks의 자체 FLI와 C (또는 Java! *) 코드를 사용하여 수행 할 수 있습니다. 은 LW FLI에 대한 찬사입니다. JNI 레이어 (기본적으로 전체 JNI API에 대한 래퍼) 위에 Java Reflection을 사용하여이 사용자 수준 API를 만들었습니다.

+0

일부 업데이트 된 정보는 다음과 같습니다. http://jfli.sourceforge.net/ –

+0

FOIL도 마찬가지입니다. http://foil.sourceforge.net/ –

관련 문제