'자바'에 해당되는 글 1건

  1. 2009.03.28 자바에서 그루비로
카테고리 없음2009. 3. 28. 20:43
자바와 그루비를 비교해 볼 수 있는 좋은 글이 있어서 소개합니다.


다음은 자바로 만든 Hello World 프로그램이다.

[code java]public class HelloWorld {
private String name;

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public String greet() {
return "Hello " + name;
}

public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.setName("Groovy");
System.out.println( helloWorld.greet() );
}
}[/code]

평범한 자바 소스다. 이 소스 파일을 그대로 그루비에서 groovyc 로 컴파일하거나, groovy 로 실행해보면, 한줄도 수정하지 않은 상태에서, 잘 실행해준다. 그루비 문법은 자바 문법을 대부분 수용한다.



이제 이 소스를 그루비답게 단계별로 고쳐보자...


우선 그루비에서는 세미콜론(;)과 public을 생략할 수 있다. 한줄에 명령문이 하나라면 세미콜론을 생략할 수 있고, public은 디폴트라서 생략할 수 있다. 또, 리턴(return)도 생략하자. 메서드의 마지막 문장이 return이면 생략할 수 있다.


[code groovy]
class HelloWorld {
    private String name

    void setName(String name) {
        this.name = name
    }

    String getName() { name }

    String greet() { "Hello "+name }
   
    static void main(String[] args) {
        HelloWorld helloWorld = new HelloWorld()
        helloWorld.setName("Groovy")
        System.out.println( helloWorld.greet() )
    }
}[/code]

이번에는 getName()에서 GString을 써보자.


[code groovy]
String greet() {
    return "Hello ${name}"
}
[/code]
${name} 부분에서 GString의 문자열 치환기능을 사용했다. 파이썬이나 다른 언어에서 본 적이 있을 것이다. 저걸 사용하면 문자열 다루기가 훨씬 수월해진다.

프로퍼티 자동 생성 기능도 사용해보자.


그루비에서는 setName, getName 따위의 메서드를 따로 만들 필요가 없다. 변수를 public으로 정의하면 그루비가 자동으로 getXXX(), setXXX()를 만들어준다.

[code groovy]
class HelloWorld {
    String name

    String greet() { "Hello ${name}" }
   
    static void main(String[] args) {
        HelloWorld helloWorld = new HelloWorld()
        helloWorld.name = "Groovy"
        System.out.println( helloWorld.greet() )
    }
}

[/code]

이번에는 괄호도 생략하고, 동적 자료형도 써보자. 그루비도 오리형(duck type)을 지원한다.

[code groovy]
class HelloWorld {
    def name

    def greet() { "Hello ${name}" }
   
    static main(args) {
        def helloWorld = new HelloWorld()
        helloWorld.name = "Groovy"
        println helloWorld.greet()
    }
}[/code]

String이 def로 바뀌었다. def로 정의한 변수는 오리형 변수가 된다.


마지막으로 그루비는 클래스파일을 생성할 수도 있지만, 동시에 스크립트로 호출할 수 도 있으니까. main 함수를 스크립트처럼 바꿔보자..


[code groovy]
class HelloWorld {
    def name
    def greet() { "Hello ${name}" }
}   

def helloWorld = new HelloWorld()
helloWorld.name = "Groovy"
println helloWorld.greet()
[/code]

마지막 예제만 보면 자바프로그램처럼 보이지 않겠지만, JVM 상에서 동작한다. 컴파일하면 class 파일도 만들어준다.

다시한번 ... 이 모든 것이 자바 가상 기계에서 돌아간다.

---


원문은 여기(http://groovy.dzone.com/news/java-groovy-few-easy-steps)에 있습니다.

Posted by jintopark

 

 
«이전  1  다음»