>Java >java지도 시간 >Java에서 Clojure 함수를 효율적으로 호출하려면 어떻게 해야 합니까?

Java에서 Clojure 함수를 효율적으로 호출하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-02 10:43:09584검색

How Can I Efficiently Call Clojure Functions from Java?

Java에서 Clojure 호출

소개:

Clojure와 Java 간의 인터페이스는 일반적입니다. 많은 프로젝트에서 요구 사항. 그러나 clojure.lang.RT를 사용하는 이전 접근 방식은 이제 구식입니다. 이 게시물에서는 사전 구축된 Clojure jar이 클래스 경로에 포함되어 있다는 가정 하에 이 통합을 수행하는 간단한 방법을 설명하겠습니다.

단계별 지침:

  1. 클로저 만들기 네임스페이스:

    Java에서 액세스할 수 있는 Java 클래스 및 메서드를 지정하려면 :gen-class 키워드로 Clojure 네임스페이스를 정의하세요. 예를 들어:

    (ns com.domain.tiny
      (:gen-class
        :name com.domain.tiny
        :methods [#^{:static true} [binomial [int int] double]]))
  2. 정적 메서드 래퍼 정의:

    Java에서 호출하려는 Clojure 함수를 Java- 하이픈(예: -binomial)이 접두사로 붙은 호출 가능한 래퍼입니다. 이를 통해 Java는 Clojure 기능을 호출할 수 있습니다.

  3. Clojure Jar 빌드 및 포함:

    Clojure 네임스페이스를 jar 파일로 컴파일하고 포함합니다. Java 프로젝트의 클래스 경로에 있습니다. Clojure jar가 클래스 경로에도 있는지 확인하세요.

  4. 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));
        }
    }
  5. 컴파일 매개변수 설정:

    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
  • lein을 사용하여 종속성을 해결했는지 확인하세요. deps.
  • lein jar를 사용하여 Clojure 코드를 jar에 패키징합니다.
  • Clojure jar와 빌드된 Clojure jar를 편리한 위치에 놓습니다.

Java 부분:

  • Java 클래스 만들기 (예: Main.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.