달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
제목이 좀 그렇긴 한데 정확하게 쓰자면 "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위에 돌아가는 많은 스크립트 언어가 아닐까 하는 생각으로 테스트 해봤습니다. 단점도 있겠죠..?? 유지보수라고 할수도 있겠지만. 글쎄요.. ^^
다양한 생각을 해보고 싶어서 해본 테스트 결과였습니다.

'자바' 카테고리의 다른 글

[Ant] Ant로 SVN 작업 처리하기  (0) 2008.12.26
[일상] 일요일 위키에 추가한 내용  (0) 2008.12.21
[생각] 자바는 참 어려운 언어..  (17) 2008.12.21
[JDK] JDK 7의 변경사항  (4) 2008.12.20
[REST] jersey로 REST구현하기  (2) 2008.12.16
Posted by fromm0
|
아무래도. 위키가 메모리를 많이 먹기는 하는가 봅니다.
심각: Caught exception (java.lang.OutOfMemoryError: Java heap space) executing org.apache.jk.common.ChannelSocket$SocketConnection@4a9fcbd3, terminating thread
2008. 6. 30 오후 4:04:03 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable run
심각: Caught exception (java.lang.OutOfMemoryError: Java heap space) executing org.apache.jk.common.ChannelSocket$SocketAcceptor@482e4a07, terminating thread
2008. 6. 30 오후 4:04:03 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable run
심각: Caught exception (java.lang.OutOfMemoryError: Java heap space) executing org.apache.jk.common.ChannelSocket$SocketConnection@3e42b771, terminating thread
2008. 6. 30 오후 4:04:03 org.apache.catalina.core.ApplicationDispatcher invoke
심각: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space
2008. 6. 30 오후 4:04:04 org.apache.catalina.core.StandardWrapperValve invoke
심각: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space

하루가 멀다하고 계속 죽어가길래 jvm옵션을 추가해봤습니다.
CATALINA_OPTS="$CATALINA_OPTS -server -Xms128m -Xmx128m -XX:+UseParallelGC -Xloggc:/home/hosting_users/fromm1/tomcat/logs/gc/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError"

'일상' 카테고리의 다른 글

[일상] KSUG의 나  (0) 2008.07.09
[일상] KSUG와 온라인 활동  (0) 2008.07.01
[메모] editplus 에서 정규표현식 사용  (0) 2008.06.30
N사로 옮긴것이 잘한일일까..??  (13) 2008.06.29
[알림] KSUG 포럼 오픈  (1) 2008.06.28
Posted by fromm0
|