MAIN
여행
지식
낙서연구
Q&A
정보구름
 



L I N K S
KURAPA.COM MAPS
세고비아 길버드 Blog
홈미디어센타 X-Revo
고구마킬러 ㄲㅏㄲㅣ
DaDa의 원초적 잡화
아하! 무진장 알뜰정보
바조의 짜바스크립
일하는엄마 - 워킹맘
네이버,구글맵 지도 검색
세상을 살아가며 궁금한것들
CTICKET - 인생의 쿠폰
Super Coder's Page
똑똑한 검색 ReportBank
MSN Web Messenger
포토웤스(PHOTOWORKS)

믹시
Scouter for KURAPA.COM

0


Translator
Francais (French) Deutsch (German) Espanol (Spanish) Italiano (Italian) Portugues (Portugese) 日本語 (Japanese) 한국말 (Korean) ??中文 (Chinese) العربية (Arabic) Русский язык (Russian) English



> Q&A > Groovy
전체글 수: 12
요즘 뜬다는 그루비(Groovy)... 함께 심층 분석 해보세
그루비(Groovy) 튜토리얼 1 - 시작하기
2008-07-11 10:52:20

2008.3.23 translation & editing by gilbird

원문: http://groovy.codehaus.org/Tutorial+1+-+Getting+started

 

시작하기 

자바 환경 설정

그루비는 자바를 사용한다. 따라서 최신버전의 자바를 미리 설치하기 바란다. 

자바를 아직 설치 하지 않았다면 다음 단계대로 하면 된다.

  • http://java.sun.com에서 최신 자바 설치 프로그램을 구한다.
  • 설치를 수행한다.
  • JAVA_HOME 환경 변수를 설정한다. 윈도우즈에서는 다음과 같이 한다.
    • 내 컴퓨터의 속성을 클릭한다.
    • 고급 탭의 환경 변수 버튼을 클릭한다.
    • 시스템 변수의 새로 만들기 버튼을 클릭하여 변수 이름은 JAVA_HOME,
      변수 값은 자바를 설치한 디렉토리명을 입력한다. (예: C:\jdk1.6.0_05)

그루비 환경 설정

그루비 인스톨러를 다운로드 페이지에서 다운받고 안내에 따라서 설치한다.

 

추가적인 jar 파일 설정

추가적으로 그루비 모듈, 클래스 파일 등으로 구성된 jar 파일을 받고자 한다면, 다음 링크를 참고하기 바란다.

 

Name From Description
jtds-version.jar http://jtds.sourceforge.net Database driver for SQL Server and/or Sybase
hsqldb-version.jar http://www.hsqldb.org/ Database driver for HSQLDB, a 100% Java database

 

그루비에서 추가한 jar 파일을 인식할 수 있도록 미리 정의한 위치에 두도록 한다. 그루비 설치시 groovy-starter.conf 파일이 생기는데 파일을 열어보면

load ${user.home}/.groovy/lib/*

을 볼 수 있을 것이다. user.home 시스템 속성은 운영체제에서 설정한 것이다. 따라서 jar 파일은 사용자 홈디렉토리의  .groovy/lib 디렉토리(예: C:\Documents and Settings\gilbird\.groovy\lib)에 두기 바란다.

 

Hello, World

groovyConsole의 상단 창에서 다음을 입력하라.

println "Hello, World!"

그리고 <CTRL+R> 혹은 <CTRL+ENTER>를 누른다.

groovyConsole 창 하단에서 텍스트가 나오는 것을 확인 하면 다음과 같이 나온다.


다음은 산술식을 입력해보자.

123+45*67

위와 같은 산술식을 입력하여 <CTRL+R>을 입력하면 연산 결과가 나옴을 알 수 있다.

 

 

변수

변수에 값을 저장하여 나중에 사용할 수 있다. 다음 코드를 실행해보라.

x = 1
println x
x = new java.util.Date()
println x
x = -3.1499392
println x
x = false
println x
x = "Hi"
println x

리스트와 맵

그루비에서는 두가지 중요한 내장 데이터 타입으로 리스트와 맵을 지원한다 (리스트는 자바 언어의 배열처럼 사용할 수 있다). 리스트는 순서있는 데이터를 저장할 때 사용한다. 예를 들어 정수 리스트는 다음과 같다.

myList = [1776, -1, 33, 99, 0, 928734928763]
리스트값은 각괄호 표현으로 액세스한다. (인덱스는 0부터 시작)
println myList[0]
위의 결과값은 1776이 나와야 한다.
리스트 길이는 "size" 메서드로 구한다.
println myList.size()
위의 결과값은 6이 나와야 한다.

그러나 일반적으로 길이값은 필요가 없다. 그 이유는 자바와 달리 "each" 메서드를 사용하면 모든 엘리먼트를 액세스하는 루프를 만들 수 있는데 "데이터로서의 코드(클로저)번역"절에서 세부적으로 다룬다.

 

또 다른 내장 데이터 형식으로 맵이 있다. 맵은 연상 배열(associative array)와 사전(dictionary)을 저장하는데 사용한다. 맵은 순서가 없는 이종의 이름 데이터이다. 예를 들어 이름과 IQ점수를 저장하고 싶다면 다음과 같이 하면 된다.

scores = [ "Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ]

맵에 저장한 각 값의 형식이 다름에 주목하기 바란다. Brett의 값은 정수, Pete의 값은 문자열, Adrew의 값은 부동 소숫점수이다. 맵의 값은 두가지 방식으로 액세스 할 수 있다.

println scores["Pete"]
println scores.Pete

위 결의 결과는 다음과 같다.

Did not finish
Did not finish

데이터를 추가는 리스트에 값을 추가하는 것과 비슷하다. 예를 들어, Pete가 IQ 테스트를 다시 받아 3을 받았다면 다음과 같이 할 수 있다.

scores["Pete"] = 3

위의 값을 다시 액세스하면 3이 나와야 한다.

println scores["Pete"]

또한 다음과 같이 빈 리스트나 맵도 만들 수 있다.

emptyMap = [:]
emptyList = []
데이터가 비어 있는지 확인하려면 "size" 메서드로 값이 0 인지 확인한다.
println emptyMap.size()
println emptyList.size()

 

조건 실행 (Conditional Execution)

프로그래밍 언어의 가장 중요한 특징 중의 하나는 여러 조건에 따라서 각각 알맞은 코드를 수행하는 것이다. "if"문을 사용하면 제일 간단하게 조건문을 만들 수 있다.

amPM = Calendar.getInstance().get(Calendar.AM_PM)
if (amPM == Calendar.AM)
{
println("Good morning")
} else {
println("Good evening")
}

첫번째 라인은 현재 시간이 오전인지 오후인지 알아내는 코드라는 것만 알고 넘어가자. 나머지 코드는 다음과 같이 실행한다: 1) 괄호안의 수식을 비교한다. 그리고 결과가 "true"인지 "false"인지에 따라서 첫번째나 두번째 코드 블록을 실행한다. 아래에 있는 논리식을 참고하기 바란다.

 

"else" 블록은 없어도 되지만 "then" 블록은 꼭 있어야 한다.

amPM = Calendar.getInstance().get(Calendar.AM_PM)
if (amPM == Calendar.AM)
{
println("Have another cup of coffee.")
}
논리식 (Boolean Expression)

대부분의 프로그래밍 언어에는 "true"와 "false"를 표현하는데 사용하는 특별한 데이터 형식이 있다. 가장 간단한 논리식은 true, false값 자체이다. 논리값은 다른 데이터 형식과 마찬가지로 변수에 저장할 수 있다.

myBooleanVariable = true

보다 복잡한 논리식은 다음 논리연산자 중에서 하나를 사용하는 것이다.

* ==
* !=
* >
* >=
* <
* <=

위에서 나오는 논리 연산자 대부분은 직관적이다. 동등연산자(equality operator)는 할당연산자(assignment operator) "="와 구별하기 위하여 "=="로 사용하며 동등의 반대는 "!=" 연산자로서 같지 않다는 뜻이다.

 

다음은 논리 연산자 예제이다.

titanicBoxOffice = 1234600000
titanicDirector = "James Cameron"
trueLiesBoxOffice = 219000000
trueLiesDirector = "James Cameron"
returnOfTheKingBoxOffice = 752200000
returnOfTheKingDirector = "Peter Jackson"
theTwoTowersBoxOffice = 581200000
theTwoTowersDirector = "PeterJackson"
titanicBoxOffice > returnOfTheKingBoxOffice  // evaluates to true
titanicBoxOffice >= returnOfTheKingBoxOffice // evaluates to true
titanicBoxOffice >= titanicBoxOffice         // evaulates to true
titanicBoxOffice > titanicBoxOffice          // evaulates to false
titanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice  // evaluates to false

titanicDirector > returnOfTheKingDirector    // evaluates to false, because "J" is before "P"
titanicDirector < returnOfTheKingDirector    // evaluates to true
titanicDirector >= "James Cameron"           // evaluates to true
titanicDirector == "James Cameron"           // evaluates to true

특히 논리식은 "if" 문과 같이 사용하면 유용하다. 예를 들면:

if (titanicBoxOffice + trueLiesBoxOffice > returnOfTheKingBoxOffice + theTwoTowersBoxOffice)
{
println(titanicDirector + " is a better director than " + returnOfTheKingDirector)
}

특별히 유용한 테스트는 변수나 수식이 null (값이 없음)인지 체크하는 것이다. 예를 들어 맵안에 제시한 키의 값을 보고 싶다고 하자.

suvMap = ["Acura MDX":"\$36,700", "Ford Explorer":"\$26,845"]
if (suvMap["Hummer H3"] != null)
{
println("A Hummer H3 will set you back "+suvMap["Hummer H3"]);
}

일반적으로 null로 특정 위치의 값이 비어있는지를 가리킨다.

 

디버깅과 해결팁

  • myVar.getClass()로 관심있는 변수의 클래스가 무엇인지 출력한다. 그리고 해당 클래스를 문서를 본다.
  • 복잡한 수식에 문제가 생기면 단순한 수식으로 쪼개내어 분석한다.
  • groovyConsole을 재시작 해본다 (처음부터 시작할 수 있도록 모든 변수를 제거할 것이다).
  • 그루비 사용자 가이드에서 관심있는 주제를 찾아 보기 바란다.

자바 개발자라면

  • 자바와의 차이점을 알고 싶을 것이다.
  • 그리고 주의할 사항도 알고 싶을 것이다.



태그 : 그루비
추천 : 0, 조회 : 383
코멘트 0 | 트랙백 0 | 첨부파일 3
글자의 색상을 지정합니다 글자의 배경색상을 지정합니다
글자를 진하게 합니다 글자를 기울이게 합니다 밑줄을 긋습니다 취소선을 긋습니다
link를 만듭니다 이미지를 추가합니다 동영상/플래쉬등을 추가합니다 html 코드를 직접 입력합니다
이모티콘을 추가합니다 글박스를 만들거나 글숨김 기능을 추가합니다 html 코드를 직접 입력합니다
html모드로 변환합니다.
 
번호
제목
글쓴이
일자
추천
조회
12
2008-08-04
0
478
11
2008-07-11
0
1,410
10
2008-07-11
0
337
9
2008-07-11
0
330
8
2008-07-11
0
324
7
2008-07-11
0
303
6
2008-07-11
0
292
5
2008-07-11
0
639
4
2008-07-11
0
299
3
2008-07-11
0
384
2
2008-03-29
0
609
1
2008-03-28
0
470


 
Copyright 2000-2008 KURAPA.COM All Rights Reserved.