原创,转载请注明。java
本文关注怎样在eclipse上搭建基本的Clojure开发环境。本文读者须要有Java的开发经验和eclipse的使用经验,最好有Maven使用经验。git
Clojure 是以JVM为基础平台的 Lisp 方言,属于现代的函数式语言。关于Clojure自己能够访问其官网(http://clojure.org/)进行了解。程序员
Leiningen是针对Clojure的项目构建工具,兼容Maven。其官网地址是:https://github.com/technomancy/leiningen。关于Leiningen的彻底使用方法请移步其官网。github
Counterclockwise是用于进行Clojure开发的eclipse插件,官网位于:http://code.google.com/p/counterclockwise/。小程序
本文操做环境以下:eclipse
1) 操做系统:Windows 7。函数
2) JDK:Oracle JDK 1.6。工具
3) Clojure:1.3.0。学习
4) Leiningen:1.7.0。google
5) eclipse:eclipse 3.7 (Indigo) jee edition。
6) Counterclockwise:0.5.0.STABLE002。
从官网上(http://clojure.org/downloads)下载Clojure的zip文件,版本为1.3.0。以“解压到当前文件夹”的方式解压文件,随后能够将此文件夹放入到任何目录中。本文将其放入“D:\dev”目录。
在系统环境变量中加入环境变量“CLOJURE_HOME”,值为Clojure的主目录,这里是“D:\dev\clojure”。在系统环境变量“CLASSPATH”的值上追加上“;%CLOJURE_HOME%\;”。
Leiningen的下载地址是:https://github.com/technomancy/leiningen/downloads。虽然如今的Leiningen的最新版本是1.7.0,可是咱们这里下载其中的leiningen-1.4.1-win32.zip。下载后将其以“解压到当前文件夹”的方式解压,获得lein文件夹。本文将这个文件夹放入“D:\dev”目录。
编辑这个文件夹中的lein.bat文件,将文件第三行的“set LEIN_VERSION=1.5.2”改成“set LEIN_VERSION=1.7.0”,即便用最新版本的Leiningen。
如今以命令行的方式进入到lein文件夹中,即“D:\dev\lein”,运行命令“lein self-install”,即进行Leiningen的自安装,这时脚本会从官网上下载指定版本的Leiningen的jar文件,并做必要配置。
在系统环境变量中加入环境变量“LEIN_HOME”,值为Leiningen的主目录,这里是“D:\dev\lein”。在系统环境变量“PATH”的值上追加上“;;%LEIN_HOME%\;”。这样咱们就能够在任意目录中调用lein.bat了。
开启命令行,执行命令“lein plugin install lein-eclipse 1.0.0”,安装Leiningen的eclipse插件,版本为1.0.0。等待插件的安装直至出现提示“lein plugin install lein-eclipse 1.0.0”。这时此插件就已经安装好了。
运行eclipse,并在菜单上选择:Help –> Install New Software -> 在弹出的对话框中点击“Add”添加Name为counterclockwise的site,其location为http://ccw.cgrand.net/updatesite。添加好后,在下拉框中选择这个site,这时eclipse会在对话框的中间区域显示插件的详细组件,所有勾选以后点击“Next”。而后根据提示安装直到完成。
在lein主目录中建立文件夹“workspace”,并以命令行方式进入这个文件夹,执行“lein new clojure_hello”以建立“clojure_hello”项目。而后,从命令行进行刚刚被Leiningen建立的“workspace ”目录下“clojure_hello”文件夹,执行“lein eclipse”命令以使该项目符合eclipse项目的目录结构。该命令会根据项目目录(即“clojure_hello”文件夹)中的“project.clj”文件中的配置信息进行一系列项目配置,例如:把配置的依赖程序包拷贝到项目文件夹下的lib子文件夹中。
“project.clj”文件其实就是Leiningen给项目添加的配置文件,相似于Maven的“pom.xml”。咱们这里来浏览一下根据上述步骤后由Leiningen建立的该文件:
(defproject clojure_hello "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.3.0"]])
文件中的声明其实跟Maven的pom.xml文件很是相似。简单说明以下:
1) 第一行:声明了项目的名称“clojure_hello”和版本号“1.0.0-SNAPSHOT”。
2) 第二行:声明了对该项目的描述,这里咱们能够任意修改双引号中的文字。
3) 第三行:声明了该项目的依赖。这里仅依赖的Clojure的1.3.0版本。
关于“project.clj”的详细配置说明请参见Leiningen的官网。
运行eclipse,并在菜单上选择:File -> Import,在弹出的对话框的中心区域找到“Existing Project into Workspace”选择并点击“Next”。点击“Browse”选择Clojure所在的目录,这里为“D:\dev\lein\workspace\clojure_hello”。点击“Finish”以完成项目导入。
这时就能够在eclipse看到这个项目了,项目目录结果与基于Maven的项目基本一致,只是将“pom.xml”变成了“project.clj”。
Leiningen在建立项目的时候已经为咱们添加了一个默认的clojure源码文件,即:src源码文件夹下的“clojure_hello”源码包下的“core.clj”文件。
咱们简单编辑一下,让其运行后打印“Hello, Clojure!”。虽然这个程序很俗,可是为了避免偏离主题咱们仍是这么写吧。^_^
编辑好后的“core.clj”文件以下:
(ns clojure_hello.core) (println "Hello, Clojure!")
其中,第一行为这个程序文件的命名空间,至关于Java的“package”。第二行就是咱们要作的事——打印一行很俗的语句。
如今咱们的目标是运行这个小程序。
在程序文件上点右键并选择Run as -> Clojure Application。不久后就会在eclipse的Console面板中看到“Hello, Clojure!”这句话了。
如今让咱们稍稍增长点难度。编辑“core.clj”文件将其改成以下内容:
(ns clojure_hello.core) (defn hello [target] (println "Hello, " target "!"))
OK,如今咱们能对任何人说“Hello”了。这种状况下就须要咱们在提示符下调用这个函数以求达到与初版程序相同的输出效果了。
第一步一样是在程序文件上点右键并选择Run as -> Clojure Application。这时,会看到Clojure的一个提示符环境(即“REPL”)已经启动。在咱们调用第二版程序中的函数以前还要作三件事:
1) 在程序文件上点右键并选择Clojure -> Load file in REPL。这样作的目的是让这个提示符环境将这个程序文件加载进来。
2) 在程序文件上点右键并选择Clojure -> Compile file in REPL。顾名思义,这是要编译这个Clojure源码文件。
3) 文件编译好后,咱们为了调用这个函数须要在程序文件上点右键并选择Clojure -> Switch REPL to File’s Workspace。固然这一步是可选的,不过调用函数的时候会略有不一样,这在后面会说明。
如今咱们能够在这个提示符环境中调用这个函数了。在环境中键入调用语句“(hello "Clojure")”并键入Ctrl + Enter。若是没有进行上面的第三步的话,须要将调用语句改成“(clojure_hello.core/hello "Clojure")”。其中,“clojure_hello.core”程序的命名空间,以“/”与函数名分隔。
运行效果以下图:
好了,咱们如今用Leiningen构建了一个简单的Clojure项目,并用eclipse和Counterclockwise运行了一个简单的Clojure程序。
Clojure是简单、强大和有趣的Lisp方言体检你们学习。Clojure有三个版本,分别给予JVM、CLR和JS引擎。因为本人是Java出身,而且Clojure最初是为Java平台量身打造的,所以这里只简单演示JVM版Clojure的构建和运行过程。
但愿经过这篇文章可以消除你们第一次使用eclipse构建Clojure项目的一些小障碍。同时,也但愿你们能所以喜欢上Clojure。只要你稍微读一点Clojure的文档,就会知道它有多么有趣。
好吧,最后介绍下我本身。本人是Java系程序员,非纯粹的,也就是说工做兴趣不仅在程序设计上,固然非工做兴趣更加普遍一些。
我在新浪微博、搜狐微博以及“个人搜狐”(http://i.sohu.com)上的昵称都是“特价萝卜”。个人对外邮箱是:freej.cn@gmail.com。欢迎各位同仁联系我并讨论Clojure和其余。