GAE(Google App Engine)의 지원언어로 드디어 자바가 등장했다. 기존에 지원되던 파이썬에 비해서 자바가 가지는 장점은 단지 자바언어에 제한되지 않고 자바플랫폼(JVM)에서 동작하는 다른 언어들도 지원 가능하다는 점이다. 따라서 Ruby(JRuby), Groovy, Scala, Javascript(Rhino) 등으로 만든 애플리케이션도 GAE/J에서 개발 및 배포가 가능하다.

스프링소스에서는 잽싸게 GAE가 Groovy를 지원한다고 홍보하면서 개발방법과 예제를 보여주는 블로그 글을 올렸고, JRuby의 Ola BIni도 JRUBY ON RAILS ON GOOGLE APP ENGINE 라는 글에서 (J)Ruby on Rails 애플리케이션을 GAE에서 사용하는 방법을 설명하고 있다. 백그라운드 자바기술(아마도 하이버네이트?)에 매여있는 Grails가 아직 GAE지원을 못하고 있는 것에 비해서 가벼운 JRuby on Rails는 ActiveRecord를 대신할 간단한 GAE DataStore wrapper를 이용해서 일단 동작하는 것은 가능한가 보다.

GAE/J는 JDK6의 대부분의 기능을 지원(사실은 허용)한다. 가장 궁금했던 구글의 초대형 데이터 서비스를 이용하는 데이타처리 부분은 JDO2와 JPA1을 통해서 지원한다. RDB가 아니니 JDBC는 안될 것이라고 예상하긴 했지만, JDO2의 등장은 조금 의외였다. JDO2가 JPA1보다 좀 더 유연한 데이터저장소를 다룰 수 있기 때문에 아마도 선택한 것이 아닌가 싶은데, 아무튼 제대로 빛도 못보고 JPA에 밀려 퇴출되었던 JDO의 재등장이 매우 흥미롭다. 구글의 데이터 처리 기능과 연동하는 JDO/JPA의 구현 엔진은 DataNucleus라는 오픈소스 JDO/JPA구현을 활용했다고 한다.

아직 earlylook(베타)이니 안정화되고 본격적으로 활용되려면 적지 않은 시간이 필요할 듯 싶다. 구글에는 Joshua Bloch을 비롯한 자바의 탑 클래스 엔지니어들이 대거 포진하고 있으니 뭐 알아서 잘 준비하고 있겠지.

 

일단 스프링 애플리케이션이 동작하는가가 내 최대의 관심사이므로 간단한 샘플을 만들어서 GAE/J에 배포해봤다. GAE/J 플러그인 다운받고 한 5분만에 완성해서 올린 것이니 뭐 샘플이라고 하기도 민망하지만.

GAE/J 프로젝트 템플릿에서 만들어준 서블릿에서 직접 ApplicationContext를 하나 만들어서 빈을 가져와 실행하는 간단한 것이다. Spring3.0 4월 7일자 빌드 라이브러리를 가지고 테스트 해본 결과는 성공.

아래에 있는 것처럼 Hello인터페이스를 구현한 빈을 만들고, 이를 호출해서 결과를 돌려주는 아주 간단한 기능이지만, 그 안에 Spring 3.0의 core, asm, bean, context 모듈이 동작하고 commons-logging과 log4j도 문제없이 처리된다는 것을 확인하기에는 충분했다.

public class HelloImpl implements Hello {
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

http://tobyepril.appspot.com/hello 에서 실행해볼 수 있다.

 

다음주까지 끝내야 하는 프로젝트에 바빠서 더 이상 손을 대보지는 못하겠지만, 여유가 생기면 SpringMVC, Bean Scanning, JPA 등까지 모두 사용해보는 제대로된 GAE/J용 샘플을 만들어볼 생각이다. 스프링이 지원하는 JPA의 로드타임 bytecode enhancer기능이 사용가능한지가 의문인데, 아마도 JVM옵션을 건드려야 하니 안될 것 같다.

하지만 이클립스 3.3, 3.4에서 동작하는 GAE/J 플러그인을 사용하면 빌드를 할 때마다 DataNucleus Enhancer를 동작시켜주니 큰 불편은 없을 듯.

 

GAE/J에 대해서 제일 감탄한 것은 이클립스 플러그인으로 제공하는 개발환경이다. 프로젝트 생성부터, Jetty로 만들어진 테스트용 로컬서버에 배포하는 것, GAE서버에 deploy하는 것까지 모두 이클립스 안에서 간단히 처리 가능하다. 앞으로는 프레임워크건 뭐건, 이클립스에서 동작하는 편리한 툴이 함께 제공되지 않으면 경쟁에서 밀릴 수 밖에 없지 않을까하는.. 이 불안감은 뭔가..

Related posts:

  1. Java와 생산성
  2. Spring과 Google Guice의 협력을 통한 DI 애노테이션 표준화 작업 시작
  3. 편리한 Google Deskbar
  4. Maven 의존관계 수렁에 빠지다
  5. JRuby/JRor + Spring
  6. Ruby와 Ruby On Rails
  7. JRuby의 활용
  8. Spring 상식퀴즈 (1) – DI 태클하기
  9. Spring 3.0 (13) Context 모듈의 선택 라이브러리 분석
  10. 유쾌한 이슈처리 재촉 메일
  11. Inside Spring (5) PropertyPlaceholderConfigurer를 @Bean으로 정의해서는 안되는 이유
  12. Spring 3.0 EL (Spel)을 이용한 AssertThrows 확장 (1)
  13. Spring 3.0 (2) R-518 스프링의 새 모듈 OXM(Object/XML Mapping)
  14. Spring 3.0 (56) @Bean 사용의 주의사항
  15. Spring 3.0 (58) Static Class를 XML없이 빈으로 등록하기

Facebook comments:

to “Google App Engine for Java에서 Spring 3.0 사용하기”

  1. Next time I read a blog, I hope that it won’t disappoint me just as much as this particular one. After all, Yes, it was my choice to read through, nonetheless I really believed you would have something helpful to talk about. All I hear is a bunch of crying about something you could fix if you weren’t too busy looking for attention.

  2. I must thank you for the efforts you have put in penning this blog. I’m hoping to view the same high-grade blog posts from you in the future as well. In truth, your creative writing abilities has encouraged me to get my very own site now ;)

  3. The very next time I read a blog, Hopefully it does not disappoint me as much as this one. I mean, I know it was my choice to read, however I genuinely thought you’d have something interesting to say. All I hear is a bunch of whining about something that you could possibly fix if you weren’t too busy seeking attention.

  4. That is a really good tip particularly to those new to the blogosphere. Brief but very precise information… Appreciate your sharing this one. A must read post!

  5. This blog was… how do I say it? Relevant!! Finally I have found something which helped me. Thanks!

  6. I couldn’t resist commenting. Perfectly written!

  7. This is a topic that’s near to my heart… Thank you! Where are your contact details though?

  8. Oh my goodness! Impressive article dude! Thank you, However I am encountering troubles with your RSS. I don’t understand the reason why I cannot subscribe to it. Is there anyone else getting the same RSS issues? Anyone who knows the answer can you kindly respond? Thanx!!

  9. Next time I read a blog, Hopefully it won’t disappoint me as much as this one. I mean, Yes, it was my choice to read, but I really believed you would probably have something useful to talk about. All I hear is a bunch of whining about something you could fix if you were not too busy looking for attention.

  10. It’s nearly impossible to find educated people about this subject, but you seem like you know what you’re talking about! Thanks

  11. Very nice post. I definitely appreciate this site. Keep writing!

  12. Way cool! Some extremely valid points! I appreciate you penning this write-up plus the rest of the site is also very good.

  13. I’m very pleased to uncover this web site. I need to to thank you for your time for this wonderful read!! I definitely loved every bit of it and I have you saved to fav to look at new information in your website.

  14. You should take part in a contest for one of the highest quality sites on the net. I most certainly will highly recommend this blog!

  15. I used to be able to find good advice from your blog posts.

  16. Pretty! This was a really wonderful article. Many thanks for supplying this info.

Leave a Reply to Kevin Cancel reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha