`
lippeng
  • 浏览: 455075 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java中调用Clojure

 
阅读更多

一个项目,原来用了Java,后来想用Clojure做新功能,互调是难免的。

 

说到互调,就要说他们之间的依赖。很明显,依赖关系是Clojure的代码依赖Java,不多说。

 

Java调Clojure,至少有两种方式:一种是把Clojure编译成class,然后Java调class即可;另外一种,用Clojure中Java的API来调。

 

今天写的是第二种,一个简单的HelloWorld!

 

先看项目中的目录结构:

 

分别看这两个文件中的内容:

 

Core.clj:

(ns com.core)

(defn hello [name]
  (str "Hello, " name))

 

HelloWorld.java:

 

package com;

import clojure.lang.RT;
import clojure.lang.Var;

/**
 * Created by Lippeng.
 * User: barton
 * Date: 2013-02-25
 */
public class HelloWorld {
    public static void main(String[] args) throws Exception{
        // Load the Clojure script
        RT.loadResourceScript("com/core.clj");

        // Get a reference to the hello function
        Var foo = RT.var("com.core", "hello");

        // Call it!
        Object result = foo.invoke("World!");

        // Print it!
        System.out.println(result);
    }
}

 
 

  • 大小: 6 KB
分享到:
评论
1 楼 flybirding 2013-04-26  
第一种的方法是不是效率高些,省却了clojure的解释时间?

相关推荐

    Clojure调用Java类的一个实例

    本实例将探讨如何在Clojure中调用Java类,从而利用Java丰富的库资源。 首先,了解Clojure调用Java的基本机制。由于Clojure是JVM上的语言,它可以访问任何Java公共API或自定义的Java类。这是通过Java Interop特性...

    gradle-java-clojure-skeleton:调用 Clojure 的 Java 应用程序的基本框架应用程序

    gradle-java-clojure-骨架一个调用 Clojure 的 Java 应用程序的基本框架应用程序,具有以下功能: 使用构建工具使用 Gradle 插件main() 在 Java 中包括本地 Java 文件包括未编译的本地 Clojure 文件包括第 3 方 ...

    java-calling-clojure

    本主题聚焦于"Java调用Clojure",这是一个关于如何在Java应用程序中利用Clojure的灵活性和功能的实践。Clojure是一种基于Lisp的函数式编程语言,运行在Java虚拟机(JVM)上,因此与Java有着天然的兼容性。 首先,...

    FibonacciTask

    /src/main/resources/task.txt 中找到任务 您可以在 /src/main/resources/explanation.txt 中找到说明使用的技术JavaClojure Maven有四种解决方案: 3 - java 1 - clojure 关于如何从 java 调用 Clojure 函数的问题...

    clojure-utils, 各种小型但方便的clojure实用程序函数库.zip

    clojure-utils, 各种小型但方便的clojure实用程序函数库 各种小型但方便的Clojure实用程序函数库特别关注:Clojure.java - 用于从Java调用Clojure的实用工具函数的Java类arrays.clj - 操作Java数组core.clj - 应该在...

    捕鱼java源码-my-app:一个干净的Java/Clojure互操作项目

    Java/Clojure 库,旨在演示如何使用 Maven 设置 Java 互操作。 用法 这是一个完整的 Maven-first Clojure/Java 互操作应用程序。 它详细介绍了如何创建 Maven 应用程序、使用 clojure 代码丰富它、从 Java 调用 ...

    Programming Clojure 英文电子版

    5. **Java Integration**: Clojure与Java之间的调用十分直接,无需经过任何转换层,这使得开发者可以充分利用Java生态系统中的资源。 6. **Performance**: 当性能至关重要时,Clojure可以达到与手工编写的Java代码...

    Scala与Clojure函数式编程模式:Java虚拟机高效编程1

    这本书适合有编程基础,对函数式编程感兴趣的读者,无论你是Java开发者还是对新编程范式好奇的学习者,都可以从中了解到如何在Scala和Clojure中应用函数式编程来提高代码质量和效率。 【结论】 随着大数据时代的...

    Clojure编程乐趣]+clojure_programming.pdf

    Clojure与Java紧密集成,可以直接调用Java库,这使得Clojure可以利用Java生态系统中的丰富资源。此外,Clojure的REPL(Read-Eval-Print Loop)是一个强大的开发工具,它允许开发者实时测试和调试代码,快速迭代,...

    java-clojure

    反之,Java代码也可以调用Clojure函数,尽管这通常需要更多的包装工作。 **优点结合**: Java的强项在于其企业级的稳定性和性能,以及成熟的框架和库,如Spring、Hibernate等。而Clojure则擅长处理并发和数据处理,...

    clojure eclipse

    由于运行在JVM上,Clojure可以直接调用Java库,甚至可以编写Java互操作代码,使得开发者能利用已有的Java资源。此外,Clojure也提供了一些强大的数据结构,如持久化数据结构(Persistent Data Structures),它们在...

    Clojure封装讯飞语音SDK提供给Emacs语音调用接口通过Cider和讯飞语音通讯

    6. **Clojure与JavaScript交互**: 虽然标签中提到的是JavaScript开发,但在Clojure中,我们可以使用cljs.js库或者GraalVM的JavaScript引擎来实现Clojure和JavaScript代码的互操作,从而调用讯飞SDK的原生JavaScript...

    clojure1.6

    开发者可以轻松地调用Java库,甚至编写Java代码并直接在Clojure中使用。这使得Clojure成为Java生态系统中的强大补充,特别是在需要高度并发和复杂数据处理的场景下。 总的来说,Clojure 1.6 提供了一个高效、灵活的...

    Python-Nightlight一个Clojure嵌入式编辑器

    Jython是Python的一个实现版本,它可以运行在Java平台上,因此可以调用Clojure的相关库和API。此外,它还利用了Clojure的REPL(Read-Eval-Print Loop)来实现交互式编程环境。 **使用Python-Nightlight** 要使用...

    clojure1.4包

    5. **与 Java 兼容**:Clojure 是运行在 JVM 上的,可以直接调用 Java 类库,使得它能够利用大量的现有 Java 资源。 6. **宏(Macros)**:Clojure 的宏允许开发者在编译时构造代码,提供了强大的元编程能力。 7. ...

    Clojure入门教程.pdf

    - **互操作机制**:Clojure可以无缝地调用Java类库,反之亦然。 - **Java API**:开发者可以直接使用Java的强大API和丰富的类库资源。 #### 六、并发与并行编程 - **并发模型**:Clojure提供了原子、代理(agent)、...

    Clojure编程中文版,动物系列,徐明明译

    6. **与Java的互操作性**:由于运行在JVM上,Clojure可以直接调用Java库,反之亦然,这大大扩展了Clojure的功能。 7. **REPL驱动的开发**:Clojure的交互式REPL(Read-Eval-Print Loop)环境是其开发流程的重要组成...

Global site tag (gtag.js) - Google Analytics