Clojure 언어의 윈도우 개발환경 설정
저는 그냥 언어차원에서의 이해를 목적으로 하는 것이기 때문에 전문적인 개발환경을 구성하기 보다는 단순히 JDK(또는 JRE)와 clojure만 설치했습니다. 그 과정을 잠시 설명드리면, JDK/JRE는 당연히 오라클 홈페이지에서 다운로드 받아 설치하면 되고,
Java SE Downloads
; http://www.oracle.com/technetwork/java/javase/downloads/index.html
clojure는 아래의 링크에서 다운로드 받을 수 있습니다.
Clojure
; http://clojure.org/downloads
오늘자 기준으로 1.6.0이 최신 버전인데 링크를 타고 들어가 clojure-1.6.0.zip 파일만 다운로드하시면 됩니다. (사실, 그냥 REPL 실습이라면 clojure-1.6.0.jar 파일 하나만 다운로드 받아도 됩니다.)
그런 다음 cmd.exe 명령행 창을 하나 띄우고 java.exe가 실행되도록 환경변수 PATH를 잡아준 다음, REPL 콘솔 프로그램을 실행해 주면 끝입니다.
java -cp .\clojure-1.6.0.jar clojure.main
그럼, 곧바로 clojure를 실습할 수 있는 REPL 프롬프트가 보이고 사용자가 코드를 입력하길 기다립니다.
d:\temp\clojure-1.6.0>java -cp .\clojure-1.6.0.jar clojure.main
Clojure 1.6.0
user=>
제가 구매한 clojure 책인데, (사실, ^^; 선택의 폭이 적습니다.)
프로그래밍 클로저: Lisp
; http://www.yes24.com/24/Goods/3907543?Acode=101
이를 실습하려면 clojure-contrib 라이브러리도 다운로드받아야 합니다. 아래의 링크에서,
clojure-contrib
; http://code.google.com/p/clojure-contrib/downloads/list
오늘자 기준으로 최신 버전이 1.1.0이고, 이를 다운로드 받아 압축을 해제하면 "clojure-contrib.jar" 파일이 있는데 이것만 있으면 됩니다. clojure REPL내에서 이를 사용하기 위해 java.exe 시작시 -cp 옵션에 clojure-contrib.jar 파일이 있는 경로를 포함해 주면 됩니다. (물론, 상대경로도 됩니다.)
java -cp .\clojure-1.6.0.jar;d:\temp\clojure-contrib.jar clojure.main
그리곤 clojure-contrib.jar에서 제공하는 기능을 사용할 수 있습니다.
D:\clojure-1.6.0>java -cp .\clojure-1.6.0.jar;d:\temp\clojure-contrib.jar clojure.main
Clojure 1.6.0
user=> (require 'clojure.contrib.str-utils)
nil
user=>
결과로 "nil"이 보이면 정상입니다. 만약 로드가 안되면 다음과 같은 식으로 오류가 발생합니다.
user=> (require 'clojure.contrib.str-utils)
FileNotFoundException Could not locate clojure/contrib/str_utils__init.class or clojure/contrib/str_utils.clj on classpath: clojure.lang.RT.load (RT.java:443)
참고로 로드된 clojure 관련 모듈은 ClassLoader를 통해 확인할 수 있습니다.
user=> (println (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))
(#<URL file:/D:/clojure-1.6.0/clojure-1.6.0.jar> #<URL file:/D:/temp/clojure-contrib.jar>)
nil
컴파일된 JAR 뿐만 아니라 소스 코드 형태의 파일도 로드할 수 있습니다. 예를 들어, temp.clj라는 클로저 소스 코드를 만들어 두었다면,
; ..\sample\temp.clj
(defn hello [name] (str "Hello, " name))
그럼, clojure 내부에서 'load-file' 명령어를 이용해 로드할 수 있습니다.
user=> (load-file "..\\sample\\temp.clj")
#'user/hello
load-file의 기준 경로는 clojure-1.6.0.jar 파일이 위치한 폴더입니다. 따라서 이번 글의 실습에서는 d:\sample\temp.clj 파일이 로드됩니다.
대개의 경우 이렇게 REPL 상에서 자주 사용되는 몇몇 명령어를 자동으로 실행해 두고 싶을 텐데요. 이럴 때는 java.exe 실행시 -i 옵션으로 스크립트를 담은 파일을 지정하면 됩니다. 예를 들어 항상 clojure-contrib 라이브러리의 str-join 함수를 사용한다면 임의의 파일을 하나 만들고,
; init_run.clj
(use 'clojure.contrib.str-utils)
java 명령행을 다음과 같이 주면 됩니다.
java -cp .\clojure-1.6.0.jar;d:\temp\clojure-contrib.jar clojure.main -i .\init_run.clj -r
이후부터는 곧바로 str-join 문을 실행할 수 있습니다.
user=> (str-join "t" "test")
"ttetstt"
이 정도만 알아두시면, 책을 보고 실습하시는 데 아무런 문제가 없을 것입니다. ^^
마지막으로, 보다 전문적인 개발환경을 원한다면 다음의 글을 참고하세요. ^^
Clojure 개발환경 셋팅 및 개발 예제
; http://www.slideshare.net/netpyoung/clojure-development-environment
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]