一个项目,原来用了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); } }
相关推荐
本实例将探讨如何在Clojure中调用Java类,从而利用Java丰富的库资源。 首先,了解Clojure调用Java的基本机制。由于Clojure是JVM上的语言,它可以访问任何Java公共API或自定义的Java类。这是通过Java Interop特性...
gradle-java-clojure-骨架一个调用 Clojure 的 Java 应用程序的基本框架应用程序,具有以下功能: 使用构建工具使用 Gradle 插件main() 在 Java 中包括本地 Java 文件包括未编译的本地 Clojure 文件包括第 3 方 ...
本主题聚焦于"Java调用Clojure",这是一个关于如何在Java应用程序中利用Clojure的灵活性和功能的实践。Clojure是一种基于Lisp的函数式编程语言,运行在Java虚拟机(JVM)上,因此与Java有着天然的兼容性。 首先,...
/src/main/resources/task.txt 中找到任务 您可以在 /src/main/resources/explanation.txt 中找到说明使用的技术JavaClojure Maven有四种解决方案: 3 - java 1 - clojure 关于如何从 java 调用 Clojure 函数的问题...
clojure-utils, 各种小型但方便的clojure实用程序函数库 各种小型但方便的Clojure实用程序函数库特别关注:Clojure.java - 用于从Java调用Clojure的实用工具函数的Java类arrays.clj - 操作Java数组core.clj - 应该在...
Java/Clojure 库,旨在演示如何使用 Maven 设置 Java 互操作。 用法 这是一个完整的 Maven-first Clojure/Java 互操作应用程序。 它详细介绍了如何创建 Maven 应用程序、使用 clojure 代码丰富它、从 Java 调用 ...
5. **Java Integration**: Clojure与Java之间的调用十分直接,无需经过任何转换层,这使得开发者可以充分利用Java生态系统中的资源。 6. **Performance**: 当性能至关重要时,Clojure可以达到与手工编写的Java代码...
这本书适合有编程基础,对函数式编程感兴趣的读者,无论你是Java开发者还是对新编程范式好奇的学习者,都可以从中了解到如何在Scala和Clojure中应用函数式编程来提高代码质量和效率。 【结论】 随着大数据时代的...
Clojure与Java紧密集成,可以直接调用Java库,这使得Clojure可以利用Java生态系统中的丰富资源。此外,Clojure的REPL(Read-Eval-Print Loop)是一个强大的开发工具,它允许开发者实时测试和调试代码,快速迭代,...
反之,Java代码也可以调用Clojure函数,尽管这通常需要更多的包装工作。 **优点结合**: Java的强项在于其企业级的稳定性和性能,以及成熟的框架和库,如Spring、Hibernate等。而Clojure则擅长处理并发和数据处理,...
由于运行在JVM上,Clojure可以直接调用Java库,甚至可以编写Java互操作代码,使得开发者能利用已有的Java资源。此外,Clojure也提供了一些强大的数据结构,如持久化数据结构(Persistent Data Structures),它们在...
6. **Clojure与JavaScript交互**: 虽然标签中提到的是JavaScript开发,但在Clojure中,我们可以使用cljs.js库或者GraalVM的JavaScript引擎来实现Clojure和JavaScript代码的互操作,从而调用讯飞SDK的原生JavaScript...
开发者可以轻松地调用Java库,甚至编写Java代码并直接在Clojure中使用。这使得Clojure成为Java生态系统中的强大补充,特别是在需要高度并发和复杂数据处理的场景下。 总的来说,Clojure 1.6 提供了一个高效、灵活的...
Jython是Python的一个实现版本,它可以运行在Java平台上,因此可以调用Clojure的相关库和API。此外,它还利用了Clojure的REPL(Read-Eval-Print Loop)来实现交互式编程环境。 **使用Python-Nightlight** 要使用...
5. **与 Java 兼容**:Clojure 是运行在 JVM 上的,可以直接调用 Java 类库,使得它能够利用大量的现有 Java 资源。 6. **宏(Macros)**:Clojure 的宏允许开发者在编译时构造代码,提供了强大的元编程能力。 7. ...
- **互操作机制**:Clojure可以无缝地调用Java类库,反之亦然。 - **Java API**:开发者可以直接使用Java的强大API和丰富的类库资源。 #### 六、并发与并行编程 - **并发模型**:Clojure提供了原子、代理(agent)、...
6. **与Java的互操作性**:由于运行在JVM上,Clojure可以直接调用Java库,反之亦然,这大大扩展了Clojure的功能。 7. **REPL驱动的开发**:Clojure的交互式REPL(Read-Eval-Print Loop)环境是其开发流程的重要组成...