Clojure(发音类似 "closure") 是一套现代的 Lisp 语言的动态语言版。Clojure 可以执行于Java虚拟机器之上。
一方面客户以及董事们对于工业级别的标准平台如JVM投入了大量的资金,并且对于它的性能,安全性,稳定性都很满意。另一方面java工程师也很羡慕动态语言的简洁,灵活以及开发效率,他们也希望这些动态语言能运行在客户/董事们所期望的平台上,可以访问那些已经很成熟的java类库,并且性能还应该不错;他们要用原始的线程、锁来编写多线程程序。clojure就是一个为了满足这些需求的一个尝试: 一个运行在JVM上的动态语言。它可以被使用在java适合的那些场合,它描绘了一个并发编程的前景: 那种到处都是的,没有经过协调的,对资源的并发修改已经过时了。
为了实现clojure的目标:它使用工业级别、开放的平台: JVM;现代化一个传奇性的语言:
LISP;使用不可更改的(immutable)的数据结构来进行函数式编程;通过software transactional
memory以及asynchronous agents来内在地支持并发编程。其结果就是一个健壮的、实用的、快速的语言clojure的诞生。
简单来说,clojure是JVM上面具有多线程支持的Lisp。
Clojure是一门现代化的LISP完整的宏系统,一门函数式编程语言,它还具有并发语义,基于JVM访问这些库等等。Clojure是JVM上的一门新的语言,类似Groovy,Jyphon和JRuby,它能动态的、简洁的、无缝的与Java进行交互操作。
总结来说,Clojure具有:
1.函数式变成语言,可以与Java无缝结合,可以方便调用Java的巨大库函数。
2.动态语言的简洁,灵活和开发效率。(某个版本strom Java代码25000多行,而Clojure(Lisp)只有4871行,Java用来搭建框架,Clojure用来实现核心代码)
3.不可更改的数据结构,内在支持并发编程。(没有太懂)
是否clojure + java 就类似与 lua + c++?