Java에서 Clojure 호출
소개:
Clojure와 Java 간의 인터페이스는 일반적입니다. 많은 프로젝트에서 요구 사항. 그러나 clojure.lang.RT를 사용하는 이전 접근 방식은 이제 구식입니다. 이 게시물에서는 사전 구축된 Clojure jar이 클래스 경로에 포함되어 있다는 가정 하에 이 통합을 수행하는 간단한 방법을 설명하겠습니다.
단계별 지침:
클로저 만들기 네임스페이스:
Java에서 액세스할 수 있는 Java 클래스 및 메서드를 지정하려면 :gen-class 키워드로 Clojure 네임스페이스를 정의하세요. 예를 들어:
(ns com.domain.tiny (:gen-class :name com.domain.tiny :methods [#^{:static true} [binomial [int int] double]]))
정적 메서드 래퍼 정의:
Java에서 호출하려는 Clojure 함수를 Java- 하이픈(예: -binomial)이 접두사로 붙은 호출 가능한 래퍼입니다. 이를 통해 Java는 Clojure 기능을 호출할 수 있습니다.
Clojure Jar 빌드 및 포함:
Clojure 네임스페이스를 jar 파일로 컴파일하고 포함합니다. Java 프로젝트의 클래스 경로에 있습니다. Clojure jar가 클래스 경로에도 있는지 확인하세요.
Java에서 Clojure 호출:
Java 프로그램에서 Clojure 클래스를 가져옵니다. 정적 메소드를 Java 메소드인 것처럼 호출합니다. 예:
import com.domain.tiny; public class Main { public static void main(String[] args) { System.out.println("(binomial 5 3): " + tiny.binomial(5, 3)); } }
컴파일 매개변수 설정:
Java 부분을 컴파일할 때 Clojure jar 및 패키지를 포함하도록 클래스 경로를 지정합니다. 결과 클래스 및 JAR로 매니페스트 file.
업데이트된 예(최신 도구 사용):
Clojure 1.5.1, Leiningen 2.1.3 및 JDK 1.7.0 사용 업데이트 25:
Clojure 파트:
Leiningen 프로젝트를 생성하고 다음과 같이 project.clj를 업데이트합니다.
; Same as the original example code from the introduction
Java 부분:
Java 클래스를 컴파일합니다.
javac -g -cp target\com.domain.tiny-0.1.0-SNAPSHOT.jar -d target\src\com\domain Main.java
매니페스트 파일(Manifest.txt)을 만듭니다. ):
; Same as the original example code from the introduction
Java 클래스 패키징 Clojure jar와 함께 JAR 파일로 변환:
jar cfm Interop.jar Manifest.txt Main.class lib\com.domain.tiny-0.1.0-SNAPSHOT.jar lib\clojure-1.5.1.jar
Java 프로그램 실행:
java -jar Interop.jar
이 업데이트된 예는 최신 도구를 사용하여 Clojure와 Java 간의 상호 운용성을 구현합니다.
위 내용은 Java에서 Clojure 함수를 효율적으로 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!