달력

4

« 2021/4 »

  •  
  •  
  •  
  •  
  • 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
  •  

'자바'에 해당되는 글 8

  1. 2009.04.22 Google App Engine SDK 설치 및 실행
  2. 2009.04.14 Google App Engine (6)
  3. 2008.06.30 Spring Configuration 사용법
  4. 2008.06.17 Java Annotation 관련 자료
오늘을 맘 먹고 Google App Engine SDK를 설치하고 프로그램을 돌려보았다.
물론 셈플 생성하고, 실행시켜 보니 잘 돌아간다. 여느 자바 웹 프로그램과 다를것이 없다. 그러나 아직 Google 서비스로는 돌려 보지 못하였다.

간략하게 설명하면, Google에서 제공하는 문서들을 읽고나서 아래의 순서대로 실행하면 된다.
(먼저 읽기: http://code.google.com/intl/ko/appengine/docs/java/gettingstarted/)

1. Eclipse JEE 버전으로 다운로드 받고,
    - Eclipse IDE for Java EE Developers (163 MB)
    (웹 개발을 위해서는 위 버전을 설치하는 것이 여러 모로 편리하다.)



2. Eclipse Plugin을 설치한다.
   - 위 1번의 것을 설치하였다면, 현재는 Eclipse 3.4 버전일 것이다.
      플러그인 설이를 위해서 Help > Software Updates... 메뉴를 클릭하여, 창이 나타나면 "Available Software"
      텝을 클릭한후 "Add Site"버튼을 눌러서 다음 사이트를 등록한다.
   - http://dl.google.com/eclipse/plugin/3.4  <== Eclipse 3.4버전의 경우는 이 링크 주소를 사용한다.
   - http://dl.google.com/eclipse/plugin/3.3  <== Eclipse 3.3버전의 경우는 이 링크 주소를 사용한다. 



3. 그리고 아래의 동영상과 같이 실행해보고 따라하면 된다.


구글에서 제공한 SDK를 설치하는 것은 Eclipse의 Plug-in Update 기능을 이용하기 때문에 별로 어렵지 않을 것이다. 물론 Java와 Eclipse에 익숙한 사람이람면 말이다.

간단하에 서블릿을 작성하는 셈플코드가 생성하는 프로젝트와 더블어 제공이 된다. 아까도 이야기 했지만 이코드는 아주잘 동작한다. 다만 임의로 JSP를 코드를 생성할때 주의해야 하는데, Class Path에 설정되어 있는 것이 JRE패스로 되어 있으면, JDK경로로 바꿔 주라는 것이다. (만약 없다면 다운로드해서 설정해야 한다.) 이것이 싫다면, 관련된 Jar 파일들을 찾아서 경로를 설정해 주어야 한다. 이것은 개발자 마음이다.

내가 Google App Engine에 관심을 갖게 된것은 최근에 Java를 지원하기 시작했기 때문이고, Ruby를 배우다 보니 자연스럽게 JRuby를 설치해서 사용하게 되었기 때문이다.

최근에 Toby(일민)이가 블러그를 통해서 셈플을 실행해보고, 스프링을 한번 적용해 보겠다고 했는데, 아직 어디까지 진행하고 있는지는 모르겠다.

오늘을 JSP 설정까지 마쳤으니 내일을 Spring위에서 한번 실행시켜 보려고 한다.
 
 
그런데,
Posted by 행복상자

댓글을 달아 주세요

2009. 4. 14. 22:23

Google App Engine 좋아하는 것/Google2009. 4. 14. 22:23

지난 한 주동안 인터넷상에서 가장 관심 있는 뉴스를 뽑으라면, 나는 Google의 Google App Engine라고 서스럼 없이 이야기 할 것이다.

요즘 여러 곳에서 화두가 되고 있는, Clouding Computing으로 이야기 되는 서버 팜이 이기도 한, Google의 이 거대한 개발자들을 위한 장난감은 그 규모로 볼때는 Apple의 App Store와 유사한 밥법으로 개발자들을 유혹하고 있다. 개발자들로 하여금 자신들의 서버와 리소스를 이용하여 서비스를 올리도록 Echo 시스템을 제공하고, 잘되면 돈을 받겠다는 정책이다. 이전에는 Account를 받기위해서는 허가가 떨어질때까지 기다려야 했는데, 지금은 신청하는 즉시 무료 서비스를 이용할 수 있다.

Google App Engine는 개발자들이 구글의 서버를 500MB까지 무료로 사용할 수 있도록 하고, 하루에 수백만 페이지 뷰를 서비스 할 수 있다. 더군다나, 지난 주에는 Python에 이어서 Java를 지원할 수 있는 Language로 제공한다고 블러그를 통해서 발표했다. (블러그의 내용은 여기를 참조 바람) 
구글의 Java의 원할한 지원을 위해서 벌써 Eclipse의 Plug-in역시 무료로 제공하고 있다.

아래는 최근에 제공하기로 한 Java 언어와 Eclipse상에서 SDK를 이용하여 개발하고 있는 동영상으로 Google에서 제공하고 있는 동영상이다.
 

이것이 이슈가 되고 있는 또 하나의 이유는 JVM위에 포팅되고 있는 여러가지 Dynamic Language들로 개발한 프로그램이 구동이 가능하다는 것이다.
그동안 200여종이 넘는 우리가 모르는 Language들이 이 JVM위에 포팅되어 왔다. 그 중에 Ruby쪽에 유명한 프로젝트는 JRuby와 Groovy가 있다. 이들 역시 크게 반기는 분위기이다.
Sprin Framwork를 개발하고 있는 SpringSouce 역시 재 빠르게 블러그를 통해서, Google App Engine팀과 공조하고 있을을 발표했다.

지난 주말에 인터넷을 뒤져가면서, 내가 알아낸 사실들이 여러가지가 있지만, Google App Engine의 ClassLoder와 DB에 대한 접속 방법이 이전에 사용하던 Lagacy 시스템과 많은 차이를 가지고 있다는 점이다.
(때가 되면 이 부분에 대해서 다시 이야기 하려고 한다.)
오늘은 Eclipse에서 JRuby를 실행해 보았는데, sqlite쪽에서 문제가 있었다. jdbc지원에 대한 부분에 대한 라이브러리가 없어서 였는데, 이 역시 나중에 정리해 이야기 하려한다.

Wikidipia에는 아래과 같은 정보들이 있다. (이는 Java 지원을 발표하기 이전에 작성된 것이라, 관심있는 것과 다를 수도 있지만, 기초 지식을 얻는데 많은 도움이 될거라 생각된다.)

 
  • 1 Supported programming languages and frameworks
  • 2 Differences from other application hosting
  • 3 Differences between SQL and GQL
  • 4 Restrictions
  • 5 Downloading data from App Engine
  • 6 Quota rates
  • 7 Competition
  • 8 References
  • 9 External links

  • 개발자들을 위한 환경이 또 한번 만들어지고 있다.
    이전에 MS의 경우는 SDK를 제공하여 개발자들을 자신들의 품에 끌어 들였다며, 이제는 Echo System이라 불리우는 Platform을 개발자들에게 제공하고 있고, 1인 개발도 가능하도록 환경들을 만들어 주고 있다. 다시 말하면, 시스템과 리소스 관리에 개발자들은 더 이상 신경 쓰지 않아도 된다는 말이다. (100% 믿기 어려울거라 생각된다.)

    하지만 아직 정확한 방향없이 마케팅적이고 소모적인 구호가 될 가능성은 여전히 높다. 정확한 비전과 방향을 제시하지 못한다면, 정말 거대한 장난감이 될지도 모르지만, MS의 그거와는 방향과 구글이 지향하는 바가 확연히 다르다는 점을 확실히 밝혔다는 점에서 JAVA의 지원은 큰 의미가 있다고 생각이 된다. 

    정말 많은 것을을 배워야 하고, 배울 것들이 너무나 많다.
    즐거운 고민에 대한 비명들이 여기 저기서 들린다.

     
     
    Posted by 행복상자

    댓글을 달아 주세요

    1. 김석영 2009.06.30 23:15  댓글주소  수정/삭제  댓글쓰기

      뭐 그냥 고마울 따름이조

    2. 행복상자 2009.07.04 23:27 신고  댓글주소  수정/삭제  댓글쓰기

      최근에 Google App Engine의 안정적이지 못한 서비스에 대해 불만족 스러운 비명이 여기 저기서 들리고 있습니다. 오는도 Eclipse 3.5 버전에 Eclipse Plugin을 설치하려고 했는데, 아직 google에서 준비가 되어 있지 않은가 봅니다.
      그렇지만 공짜로 사용할 수 있다는 것에 기대하면서, 감사하며 기다리려고 합니다.

    3. 김석영 2009.08.17 23:06  댓글주소  수정/삭제  댓글쓰기

      저도 방금 3.5 Plugin을 설치하는되 몇번 재설치를 시도해야 하내요....

    4. 행복상자 2009.08.18 05:02 신고  댓글주소  수정/삭제  댓글쓰기

      얼마전까지는 없었는데, 지금 Google App Engine 사이트에 가보니 Eclipse 3.5용 Plugin이 올라왔네요.
      이미 설치 하셨을지 모르지만, 아래는 Plugin설치 경로입니다.

      ==> http://dl.google.com/eclipse/plugin/3.5

      저도 내일을 설치해 보아야 겠군요.

    5. 지나가다가 2010.08.04 17:57  댓글주소  수정/삭제  댓글쓰기

      echo -> eco

    6. 행복상자 2010.09.18 13:38 신고  댓글주소  수정/삭제  댓글쓰기

      고마워요 eco ^^

    그냥 며칠동안 테스트 코드를 작성하면서, 발견한 사실들에 대해서 겸허히 쓴다.
    일민이(Toby)는 나보고 또 Spring Framework Developer Reference를 읽어보라고, 아프게 충고를 했다.

    먼저, Test코드를 작성하다 보니,
    BeanFactory 의 사용법과 ApplicationContext 의 사용법이 다르다는 사실을 발견했다.
    사실 ApplicationContext는 BeanFactory의 인터페이스를 상속받아 만들어진 인터페이스이다. 따라서, ApplicationContext는 BeanFactory의 모든 동작을 포함하고 있고, 비슷하게 동자을 하도록 도와준다. 둘 모두 getBean() 메소드를 사용해서 Configuration을 위해 작성한 XML파일에서 정의한 Bean을 얻을 수 있다. 아까도 이야기 했지만, ApplicationContext Interface는 BeanFactory Interface의 확장이다.

    ApplicationContext와 BeanFactory Interface간의 차이점은 Singleton 빈의 로딩하는 방법에 있다. BeanFatory는 getBean() 메소드가 호출될 때까지 Bean의 생성을 미룬다. 반면에 ApplicationContext는 Singleton 빈을 미리 로딩함으로 그 빈이 즉시 사용이 가능하도록 보장해 준다.

    일반적인 테스트 코드를 작성할때는 두개의 차이가 거의 없을것이다. BeanFactory는 테스트 코드를 작성하기에 매우 유용하지만, 두 Interface의 차이를 알지 못하면, 이상하게 여길수도 있다. 최근에 Scheduler를 작성하게 되면서, 테스트 코드를 작성한 적이 있는데, Quertz의 Thread가 생성이 되어서 동작을 해야 하는데, 동작을 하지 않다가 getBean("scheduler")를 실행시켜줘야만 동작을 한는 것이었다. (BeanFactory 사용시)
    그러나, ApplicationContext의 사용시는 ApplicatiionContext의 인스턴트가 생성되면, Quartz의 Thread가 실행되어 정해진 시간마다 Job을 실행하는 로그를 찍었다. 이유는 위에서 설명한 이유때문이다. (테스트시 ApplicationContext를 사용할 이유가 하나 늘었다.)

    그리고 또하나 발견한 것은 getBean("beanId")을 통해 Bean의 reference를 얻어 올수 있다. 하지만, 가져온 Bean의 형이 내가 생각했던 것과는 다를 수도() 이는 Bean의 원 클래스에서 반환하는 오프젝트가 반환되기 때문이다.

    [AbstractApplicationContext 코드 중에서]
    public Object getBean(String name) throws BeansException {
      return getBeanFactory().getBean(name);

     }


    만약, Factory 자체를 반환하기를 원한다면, "&"를 "beanId"앞에 붙여서 사용하면 된다.
    이렇게 말이다. ==> getBean("&beanId)
    이를 가르쳐 주면서 reference guide 를 잘 살 펴보라고 한다. 그래서 살펴보았더니. 딱 2줄에 걸쳐서 설명이 되어져 있다. Spring In Action에는 설명이 아예 안 되어 있다.

    [BeanFactoryUtils코드 중에서]

    public static boolean isFactoryDereference(String name) {
      return (name != null && name.startsWith(BeanFactory.FACTORY_BEAN_PREFIX));
     }


    이 코드은 사실 AbstractBeanFactory 클래스에서 사용되는 메소드이다. 그리고
    BeanFactory.FACTORY_BEAN_PREFIX 는 "&"로 정의되어 있다. 
    Posted by 행복상자

    댓글을 달아 주세요

    2008. 6. 17. 22:38

    Java Annotation 관련 자료 좋아하는 것2008. 6. 17. 22:38

    자바 Annotation에 대한 좋은 예제 글이 있어서 소개한다.
    참고한 사이트는 IBM의 DeveloperWorks 사이트이다.
    시간을 내서 읽어볼 가치가 있다. 자바라는 언어는 처음 접한지는 오래 되었다. 하지만, 정말 많은 발전이 있었다고 생각한 것은 한 3~4년 정도 전이다. 인류 문명이 발전함과 같이 많은 발전이 앞으로 있을 것이다.


    어노테이션에 대하여 여러가지 자료를 찾아 보았는데, IBM 사이트에 올라와 있는 글이 이해에 많은 도움을 주었다. 물론 더 많은 것은 스스로 공부해야 겠지만...

    Part1에서는 다음과 같은 이야기를 하고 있다.

    Part 1: 메타데이터를 자바 코드에 추가하기
                 http://www.ibm.com/developerworks/kr/library/j-annotate1/index.html

            - 메타데이터의 가치
            - 어노테이셔의 기초
            - Override 어노테이션
            - Deprecated 어노테이션
            - SuppressWarnings 어노테이션




    Part2에서는 다음과 같은 내용을 다룬다.

    Part 2: 커스텀 어노테이션
                 http://www.ibm.com/developerworks/kr/library/j-annotate2.html

            - 자신의 어노테이션 유형 정의하기
            - 어노테이션에 주석달기

    '좋아하는 것' 카테고리의 다른 글

    新(신) 브라우져 전쟁  (1) 2008.09.09
    노키아의 심비안 오픈소스화  (0) 2008.06.26
    Java Annotation 관련 자료  (0) 2008.06.17
    모바일 익스프레스 드라이버  (0) 2008.06.11
    ReMIX08 컨퍼런스에 다녀와서...  (0) 2008.06.11
    WWDC 2008  (0) 2008.06.11
    Posted by 행복상자

    댓글을 달아 주세요