>Java >java지도 시간 >최신 기술을 사용하여 Java에서 Clojure 함수를 효율적으로 호출하는 방법은 무엇입니까?

최신 기술을 사용하여 Java에서 Clojure 함수를 효율적으로 호출하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-20 07:57:09277검색

How to Efficiently Call Clojure Functions from Java Using Modern Techniques?

최신 도구를 사용하여 Java에서 Clojure 호출

이전 온라인 토론에서 제공된 일부 정보는 오래되었을 수 있지만 Java에서 Clojure를 호출하는 것은 비교적 간단합니다. 단계별 가이드는 다음과 같습니다.

Clojure Jar 준비:

  1. Leiningen을 사용하여 Clojure 프로젝트 만들기: lein new com.domain.tiny
  2. Clojure 기능을 정의하세요. src/com/domain/tiny.clj:

    (ns com.domain.tiny)
    
    (defn binomial
      "Calculate the binomial coefficient."
      [n k]
      (let [a (inc n)]
     (loop [b 1
            c 1]
       (if (> b k)
         c
         (recur (inc b) (* (/ (- a b) b) c))))))
    
    (defn -binomial
      "A Java-callable wrapper around the 'binomial' function."
      [n k]
      (binomial n k))
    
    (defn -main []
      (println (str "(binomial 5 3): " (binomial 5 3)))
      (println (str "(binomial 10042, 111): " (binomial 10042 111))))
  3. Leiningen 작업을 사용하여 jar 생성: lein jar
  4. Clojure jar와 생성된tiny.jar을 편리한 위치

자바 코드:

  1. Clojure 함수를 호출하는 Java 클래스 만들기:

    import java.lang.reflect.Method;
    
    import com.domain.tiny;
    
    public class Main {
    
     public static void main(String[] args) {
         try {
             Method binomialMethod = Class.forName("com.domain.tiny").getMethod("binomial", int.class, int.class);
    
             Integer n = 5;
             Integer k = 3;
             Double result = (Double) binomialMethod.invoke(null, n, k);
             System.out.println("(binomial " + n + " " + k + "): " + result);
    
             n = 10042;
             k = 111;
             result = (Double) binomialMethod.invoke(null, n, k);
             System.out.println("(binomial " + n + ", " + k + "): " + result);
         } catch (Exception e) {
             System.err.println("Error calling Clojure function: " + e.getMessage());
             e.printStackTrace();
         }
     }
    }
  2. javac을 사용하여 Java 클래스 컴파일
  3. 적절한 파일을 사용하여 매니페스트 파일(MANIFEST.MF)을 만듭니다. 종속성:

    Manifest-Version: 1.0
    Class-Path: tiny.jar:clojure-x.y.z.jar
    Main-Class: Main
  4. Java 클래스와 종속성을 jar로 패키징합니다. jar cfm Interop.jar MANIFEST.MF Main.classtiny.jar clojure-x.y.z.jar

실행 프로그램:

  1. Clojure jar 및tiny.jar이 클래스 경로에 있는지 확인
  2. Java jar 실행: java -jar Interop.jar

출력은 다음과 유사해야 합니다.

(binomial 5 3): 10.0
(binomial 10042, 111): 4.9068389575068143E263

위 내용은 최신 기술을 사용하여 Java에서 Clojure 함수를 효율적으로 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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