Clojure 是基于 Java 虚拟机的一种动态语言。它被设计为通用目的语言,其基础结构支持高效强壮的多线程编程,同时结合了脚本语言的易用性和交互开发能力。Clojure 是编译语言,它的程序直接编译为 JVM 字节码,但同时是完全动态的:运行时拥有所有 Clojure 支持的特性。Clojure 可以访问 Java 框架,它的可选性类型说明和推断,可以避免 Java 反射,从而更高性能地调用 Java 代码。
Clojure 是一种 Lisp 方言,因此共享了 Lisp 的代码即数据的哲学和强大的宏系统。Clojure 基本上是一种函数式编程语言,包括了大量的不可变的持久数据结构。当你需要可变的状态的时候,Clojure 提供了软件事务内存系统和 Agent 系统,来保证干净和正确的多线程设计。
——翻译自 Clojure 官网
Clojure 是 Java.next 中的一种可能技术。相比 Java, 它从语言上具有更好的表达性,虽然 Java 8 也引入了闭包、匿名函数等函数性语言特征,但由于要与语言整体相协调,它仍然在这方面远远落后于 Clojure。
Clojure 不仅仅是“另一种语言”而已,它的独特的 s-expr 语法,核心数据类型的不可变性,以及设计独特的状态管理,都对感兴趣的程序员提出了全新的解决问题的方法,当然需要相当的适应时间。但一旦你渡过这个适应期,你会发现前所未有的编程乐趣和更高的生产率,毕竟,这是将简单、优雅和实用兼顾作为设计目标的语言,而且它实现得极为漂亮和稳定。