달력

112018  이전 다음

  •  
  •  
  •  
  •  
  • 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
  •  
앞서 "[생각] 자바는 참 어려운 언어.." 라는 글에도 봤지만 JVM위에 올라가는 언어들은 JDK가 기본적으로 제공하는 그리고 Java쪽의 관련 라이브러리들이 제공하는 기능을 좀더 사용하기 쉽게 래피하는 형태가 많습니다.
그 중 하나가 HTTPBuilder 입니다.

Apache의 HttpClient 를 한번 더 래핑했습니다. 그리고 Prototype.js의 Ajax.Request 개념을 사용했기 때문에 비동기 호출이 가능합니다.

import groovyx.net.http.*;
import static groovyx.net.http.ContentType.TEXT

def http = new HTTPBuilder('http://www.google.com')

http.get( path : '/search',
          contentType : TEXT,
          query : [q:'Groovy'] ) { resp, reader ->

  println "response status: ${resp.statusLine}"
  println 'Response data: -----'
  System.out << reader
  println '\n--------------------'
}

http://openframework.or.kr/Wiki.jsp?page=Using_Groovy_HTTPBuilder 에 간단히 정리해봤습니다.
Posted by 이동국

댓글을 달아 주세요

토요일은 돌잔치를 가느라 공부를 못했고 오늘은 groovy를 좀 보고 있습니다. 자바외 다른 언어를 한번 해볼려고 Ruby로 손대보고 Python도 손대보고 했는데 제대로 손이 가는 놈은 하나도 없네요. 그나마 groovy는 좀 손이 더 가서 간혹 자료를 정리하곤 합니다. 업무에서 사용해야 제대로 공부가 될텐데.. 이건 사용할 기회가 없다보니 매번 이렇게 되네요. ^^

1. Groovy JDBC - Groovy를 이용한 JDBC프로그래밍
2. Grails Start - Grails 시작하기
3. Groovlet과 GSP - Groovlet과 GSP를 이용한 웹개발

오늘 추가한 내용은 위 3가지 입니다. 주로 보는 글은 Groovy홈페이지의 문서 페이지IBM developerWorks의 Groovy관련 글입니다.

참고할만한 사이트는 한국 Groovy & Grails 사용자 그룹 이 있습니다.
Posted by 이동국

댓글을 달아 주세요

제목이 좀 그렇긴 한데 정확하게 쓰자면 "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위에 돌아가는 많은 스크립트 언어가 아닐까 하는 생각으로 테스트 해봤습니다. 단점도 있겠죠..?? 유지보수라고 할수도 있겠지만. 글쎄요.. ^^
다양한 생각을 해보고 싶어서 해본 테스트 결과였습니다.
Posted by 이동국

댓글을 달아 주세요

자바라는 프로그램 언어로 6년가까이 돈을 벌고는 있지만 "자바"라는 언어가 참 어렵다는 생각은 간혹 합니다.
제가 최근에는 보고 있는 groovy와 비교해보면 왜 이렇게 어렵고 복잡하게 코딩을 해야 하는가 하는 생각이 자주 듭니다. groovy뿐 아니라 ruby, python과 같은 다른언어와 비교해봐도 참 어렵게 코딩을 해야 하는 구나. 하는 생각이 많이 들죠..

대표적인 경우가 jdbc코딩입니다. 아래 코드는 실제 같은 결과를 출력하는 코드입니다.

# Java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {
    public static void main(String[] args) {
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111");
            stmt = con.createStatement();
            rs = stmt.executeQuery("select * from test");
            while (rs.next()) {
                System.out.println(rs.getLong(1) + " " + rs.getString(2));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                rs.close();
            } catch (Exception e) {
            }
            try {
                stmt.close();
            } catch (Exception e) {
            }
            try {
                con.close();
            } catch (Exception e) {
            }
        }
    }
}

# groovy
import groovy.sql.Sql
class GroovySqlExample1{
  static void main(args) {
    def sql = groovy.sql.Sql.newInstance("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111", "com.mysql.jdbc.Driver")
    sql.eachRow("select * from test"){ println it.id + " " + it.name }
  }
}

혹시나 저랑 다르게 생각하시는 분이 있으신지..?? ^^
Posted by 이동국

댓글을 달아 주세요

  1. 토비  댓글주소 수정/삭제 댓글쓰기 2008.12.21 19:24 신고

    저요~
    SpringJDBC를 이용한 코드로 다시 비교해주셈.

    • 이동국  댓글주소 수정/삭제 2008.12.21 21:27 신고

      여타의 프레임워크를 사용하지 않고 언어 자체의 API를 사용한 경우에 한해서 비교해야 되지 않을까요..? 문득 그런 생각이 들어요..

  2. 권남  댓글주소 수정/삭제 댓글쓰기 2008.12.22 12:12 신고

    Groovy의 Sql 객체가 JDBC 래퍼인듯한데요..
    Java로도 동일한 역할을 하는 Sql 클래스를 만들면 충분히 가능할 듯합니다.
    하나... each와 블럭기능이 없어서 마지만 sql.eachRow 는 어쩔 수 없이 for문을 하나 더 추가해야 겠군요..

    • 이동국  댓글주소 수정/삭제 2008.12.22 13:38 신고

      그렇겠네요. 직접 소스를 뜯어본것은 아니라 Sql객체가 JDBC래퍼라고 본다면 동일한 Sql객체를 만든다고 가정할때 충분히 비슷할 가능성이 있을 것으로 보입니다. ^^

  3. 김형준  댓글주소 수정/삭제 댓글쓰기 2008.12.22 13:12 신고

    계속 눈팅만 하다가 글을 남기네요... 좋은 글 많이 봤습니다.
    자바와 관련된 제 개인적인 의견은 언어의 진화 단계가 아닌가 생각합니다. 자바로 개발하다가 C로 개발하면 API의 부족함 때문에 모든 것을 새로 만들어야 하는 경우가 많죠. ArrayList 등등...
    이제는 자바가 그런 상황이 된 것 같습니다. 자바 언어를 처음 디자인 할때에는 DB 기능을 언어 내에 내장할 필요가 없었겠죠. 하지만 최근에 나오는 언어들은 이런 기능을 대부분 내장하고 있죠. 하나만 고집할 것이 아니라 점점 진화하는 개발 언어에 친숙해져야 하지 않아 생각합니다.

    • 이동국  댓글주소 수정/삭제 2008.12.22 13:40 신고

      아무래도 자바가 groovy나 다른 JVM기반의 언어들의 모태가 되는것 같습니다. 그 모태를 기준으로 진화하는 언어를 1:1로 비교하는 것은 비교기준 선정에 문제(?)가 있었던 것으로 보입니다. ^^

  4. 누비  댓글주소 수정/삭제 댓글쓰기 2008.12.24 15:30 신고

    PHP로 밥 벌어 먹다가 요즘 자바 공부 중인데

    공부를 하면 할 수록 PHP가 대단한 언어라 느껴지네요.

    자바==병맛

    이상 개인적인 의견이였습니다.

    • 이동국  댓글주소 수정/삭제 2008.12.26 12:52 신고

      기존 애플리케이션을 위해 PHP를 사용해보긴 했는데 사용자가 많은 만큼 쉽게(?) 사용가능하더군요. ㅎㅎ
      언어마다 장단점이 있는데 자바에서 단점을 많이 보신듯 하군요. ^^

  5. benelog  댓글주소 수정/삭제 댓글쓰기 2008.12.27 16:51 신고

    동국님 죄송; 웹브라우저가 이상해서 댓글을 수정하다가, 다시 삭제하다가 어쩌다 보니 동국님 답글도 날아갔네요 . TT

  6. benelog  댓글주소 수정/삭제 댓글쓰기 2008.12.27 16:53 신고

    아뭏든 JDBC API도 처음부터 잘 설계했으면 좋았을 걸 하는 생각이 듭니다;

  7. 이지율  댓글주소 수정/삭제 댓글쓰기 2008.12.29 11:50 신고

    정적언어와 DTL 언어의 코드 간결성을 비교하는 것 자체가 무리가 아닌가 생각하네요.
    Java 7.0 에서는 클로져가 지원될 예정이니, 기대해 보시는 것이 어떨까요.

    • 이동국  댓글주소 수정/삭제 2008.12.29 14:27 신고

      두 언어가 비교대상으로 적절한지에 대해서는 이견이 분명이 있을 수 있다고 생각됩니다. 그냥 기본적인 고려사항을 모두 배제한체 언어간의 비교라고만 봐주시면 좋을듯 합니다.

    • 서비  댓글주소 수정/삭제 2009.01.08 21:05 신고

      자바 7에 클로저를 지원하지 않을수 있다는 얘기도 있습니다.
      http://www.yunsobi.com/blog/459

    • 이동국  댓글주소 수정/삭제 2009.01.08 21:11 신고

      JDK 7에 대한 내용중에 확정이 안된 사항도 많습니다.
      그중에 하나가 클로저로 그 때문에 벌써부터 아쉬워 하는 분도 많으시죠..

  8. 아빠곰  댓글주소 수정/삭제 댓글쓰기 2009.01.08 17:30 신고

    어렵다는데 전적으로 동감하지만, 자바가 벌써 12살이나 되었죠. groovy는 한참 뒤에 나왔으니, 어떻게 보면 더 쉽고 10년전에 해보지 못한 생각과 개념을 넣을 수 있었을 거라고 생각합니다. 물론 ruby는 자바보다 더 오래 되었지만, 결정적으로 ruby가 이렇게 사랑 받았던건 RoR이라는 언어 특성을 극대화 했던 프레임웍의 성공덕도 있다고 봅니다. 자바가 처음 나왔을때 제기억으로는 C/C++ 에 비해 메모리 관리를 안하는 쉽고 혁신적인 언어였다고 기억됩니다....세월이 흐른걸 자바도 느끼고 있겠죠....후후후

기존에 SI업무를 할때는 사실 스크립트 언어의 필요성을 별로 느끼지 못했습니다.
회사를 옮기고 나서 배치성 업무들이 많아 지면서 자연스럽게 스크립트 언어를 하나 정도를 봐둬야 할 필요성을 느끼게 되네요. 회사에서 가장 많이 사용되는건 역시 PHP인데, 자바랑 쉽게 사용할 만한 놈을 찾다보니 PHP는 제외가 되네요. 루비도 좋겠지만 groovy가 눈에 뜁니다.
스크립트 언어의 기능중에 주로 보는 기능은 파일처리, SQL처리, XML처리 정도입니다.


  1. 파일처리

  2. XML 읽어오기


  3. SQL처리

  4. Bean의 private 변수값 가져오기


  5. 3가지 모두 같은 값을 리턴합니다. private으로 선언되어 있더라도 book.title이 값을 가져오는 것을 보면 내부적으로 getTitle()와 같은 메소드를 자동으로 생성하는것 같네요.


재미있을듯 합니다.
Posted by 이동국
TAG Groovy

댓글을 달아 주세요