자바

[개발] Java와 Groovy 함께 사용하기

fromm0 2008. 12. 21. 21:38
제목이 좀 그렇긴 한데 정확하게 쓰자면 "groovy 로 작성한 코드를 java애플리케이션에서 사용하기" 가 될 것 같습니다. JVM위에서 돌아가는 많은 언어가 나왔습니다. 예를 들면 groovy, JRuby, Jython 등등 많죠. JVM에서 돌아가기때문에 즉 JVM이 그 각각의 코드를 알아볼수 있다면 당연히 java애플리케이션에서 사용할 수 있으리라는 짐작이 갑니다. 그래서 한번 해봤습니다. ^^

# groovy 코드(builder를 이용해서 XML생성)
package openframework.groovy

import groovy.xml.*
import java.io.*

class XMLBuilder{
    def getXML() {
        def writer = new StringWriter()
        def builder = new MarkupBuilder(writer)
        def friendnames = [ "Julie", "Joey", "Hannah"]

        builder.person() {
            name(first:"Megan", last:"Smith") {
                age("33")
                gender("female")
            }
            friends() {
                for (e in friendnames) { friend(e) }
            }
        }
        return writer.toString()
    }
}

groovyc 명령어를 통해 컴파일을 합니다. 그럼 당연히 openframework.groovy 패키지 아래 XMLBuilder.class라는 파일이 생성됩니다. 실제로는 아래처럼 다양한 클래스 파일이 생성됩니다.
무려 4개나 생성되네요. ^^

자바코드를 만들어봅니다.

# java 코드(groovy코드를 통해 xml을 생성)
package openframework;

import openframework.groovy.XMLBuilder;

public class Test {
    public static void main(String[] args) {
        XMLBuilder builder = new XMLBuilder();
        System.out.println(builder.getXML());
    }
}

# 결과물
<person>
  <name first='Megan' last='Smith'>
    <age>33</age>
    <gender>female</gender>
  </name>
  <friends>
    <friend>Julie</friend>
    <friend>Joey</friend>
    <friend>Hannah</friend>
  </friends>
</person>

순수 자바에 비하면 좀더 간단하게 기능을 구현할 수 있는 방법은 JVM위에 돌아가는 많은 스크립트 언어가 아닐까 하는 생각으로 테스트 해봤습니다. 단점도 있겠죠..?? 유지보수라고 할수도 있겠지만. 글쎄요.. ^^
다양한 생각을 해보고 싶어서 해본 테스트 결과였습니다.