Java에서 Ajax로 웹개발할때 사용할 수 있는 웹 개발 프레임워크, 라이브러리, 툴킷에 대한 문서를 소개합니다. IBM DeveloperWorks에 공개된 문서중 "전문가다운 Ajax 애플리케이션 개발, Part 3: DWR, 자바, Dojo 툴킷을 사용하여 자바와 자바스크립트 통합하기"라는 문서입니다.
 Michael Garpin이라는 eBay의 개발자가 작성한 글로서 장동수님께서 번역하셧습니다.

지금 바로 이름이 떠오르는 자바(Java™) 웹 개발 프레임워크, 라이브러리, 툴킷만 해도 엄청나게 많습니다. 뭐가 뭔지, 어떤 것이 문제 해결에 도움이 될지 알아내는 것만 해도 버거운 일이죠. 그러나 Ajax 개발을 하고 있다면 반드시 알아두어야 할 라이브러리가 바로 DWR(Direct Web Remoting)입니다. 이 라이브러리는 자바 언어와 자바의 웹 기술을 사용하여 Ajax 개발을 더 쉽게 해줍니다. 이 라이브러리는 Ajax와 자바 웹 애플리케이션을 긴밀하게 통합하는 방법에 있어 기준을 제시합니다. DWR은 Ajax 기술들의 광범위한 연합인 Dojo 재단에 합류했습니다. 이 기사에서는 DWR을 사용하면 Ajax가 얼마나 간단해지는지 알아보겠습니다.

이 글은 Ajax 애플리케이션 제작에 사용할 수 있는 인기있는 자바스크립트 라이브러리들에 대해 알아보는 연재의 세 번째이자 마지막 기사다. Part 1에서는 Prototype 라이브러리를 사용하여 노래를 관리하는 웹 애플리케이션을 만들어 보았다. Part 2에서는 script.aculo.us를 사용하여 사진을 관리하는 웹 애플리케이션을 만들어 보았다. 이번에는 DWR을 사용하면 Ajax가 얼마나 간단해지는지 알아보자.

이 기사에서는 DWR 2.0을 사용한다. 예제 코드는 제네릭스(generics)와 어노테이션(annotation)을 사용하므로 자바 5 이상이 필요하다. 예제에서는 MySQL 5.12와 톰캣(Tomcat) 6.0.14를 사용하고 있지만, 쉽게 교체할 수 있을 것이다. 데이터베이스 접근을 위해 JPA(Java Persistence API)를 사용하며, JPA 구현체는 OpenJPA 1.0을 사용한다. 하이버네이트(Hibernate)나 Kodo 등의 다른 JPA 구현체로 바꿔도 된다. 이 기사에서는 Ajax 디버깅을 위한 멋진 도구인 파이어버그(Firebug: 파이어폭스용 플러그인)를 사용한다. 이 도구들에 대한 링크는 참고자료에 나와 있다.

DWR 소개

Ajax 애플리케이션이 처음 등장했을 때는 마법처럼 보였지만, 다행히도 개발하는 과정은 직관적이다. 모든 Ajax 상호작용은 서버 측 엔드포인트(endpoint: 웹 서비스에서 빌려온 용어)와 그 엔드포인트를 호출하는 클라이언트 측 코드가 필요하다. 또한 클라이언트와 서버가 주고받는 데이터를 직렬화(serialize)하는 코드도 필요하다. 서버 측 엔드포인트는 일반적인 서비스(RESTful이든 아니든)면 되지만, 클라이언트 측에는 종종 요구에 부합하는 좀 더 구체적인 코드가 필요하다. 강한 결합(tight coupling)을 피해야 할 때도 있지만, 필요할 때도 있다. 후자라면 DWR이 준비된 해결책이다. DWR은 선언적인 방법으로(declaratively) 서버 측 코드를 Ajax 엔드포인트로 만들 수 있고, 모든 부가적인 설비도 자동으로 만들어 준다. 지금부터 구체적인 예제를 통해 DWR이 어떻게 동작하는지 알아보자.


  지난번에 소개한 "PHP 프레임워크, Part 1 많이 사용하는 프레임워크"에 이어서 "Part 2: 간단한 응용 프로그램 만들기"를 소개합니다. 실제로 간단한 응용 프로그램을 만드는 내용이구요. 그다지 자세하진 않습니다.
예전에 소개한 "PHP를 사용하여 인터랙티브한 제작 방식의 위키 만들기" 처럼 자세하다면 좋을텐데... 조금 아쉽긴해도 어느정도 삽질을 해야 자기것으로 만들수 있겠죠. ^^; 이런말하면서도 뭔가 만들어보진 못하고 있습니다. ^^;

 PHP로 만든 웹 메일 서버 관리를 하면서 PHP로 리눅스  메일 서버의 계정 및 조직도 정보를 관리하면서 느낀 거지만, PHP라는게 참 쓸만하다는 겁니다. 쓸만한 프레임워크가 많아져서 더욱더 광범위하게 사용되면 좋겠다는 생각을 해봅니다. 그런 의미에서 이 문서가 많은 분들에게 읽혀지길 바랍니다. ^^


원본 : PHP 프레임워크, Part 2: 간단한 응용 프로그램 만들기(Zend, symfony, CakePHP로 Blahg 구현하기)



이번 "PHP 프레임워크" 연재 기사에서는 널리 쓰이는 PHP 프레임워크 세 개(Zend, symfony, CakePHP)를 살펴봅니다. 각 프레임워크에서 간단한 응용 프로그램을 구현하고 확장하면서 유사성과 차이점을 비교합니다. Part 1에서는 전반적인 기사 범위를 정하고 앞으로 필요한 환경을 설정했습니다. 이번 Part 2에서는 각 프레임워크에서 간단한 응용 프로그램을 작성합니다.

Part 1에 서는 전반적인 기사 범위를 정하고 앞으로 필요한 환경을 설정했다. 이번 Part 2에서는 세 가지 프레임워크에서 각각 간단한 프로그램을 작성한다. 이어질 기사에서는 이번에 작성한 프로그램을 확장하고, 예외 상황을 살펴보고, Ajax를 추가하고, 외부 프로그램과 통합하는 등 다양한 모험이 기다린다.

이번 기사에서는 Blahg라는 예제 응용 프로그램을 세 가지 프레임워크에서 작성한다. 젠드 프레임워크(Zend Framework), 심포니(symfony), CakePHP에서 간단한 응용 프로그램을 구현하는 방식을 처음부터 단계적으로 살펴본다.

Part 1에서 각 프레임워크를 설치하고 기본 환경을 설정했다. 아직 하지 않았다면 지금 끝내기 바란다.

이 연재 기사에서는 독자들이 PHP와 응용 프로그램 설계, 데이터베이스 사용법에 어느 정도 익숙하다고 가정한다. 프레임워크를 사용한 경험은 없어도 좋으나, 배우겠다는 의욕은 필수다.



 OTN[각주:1]의 Developer Article 중에서 스크립트 언어 관련 개발 문서중 하나를 소개합니다.

원문 : 오라클 환경에서 Python과 TurboGears 활용하기 [문서의 프린트용 화면보기]

 본 문서는 TurboGears 프레임워크를 이용해서 Python으로 Oracle Database 기반의 웹 어플리케이션을 개발하는 방법을 알려줍니다.

저자 – Daniel Rubio

TurboGears는 Python 사용자들이 오라클 데이터베이스 기반의 웹 기반 애플리케이션을 구현하는데 필요한 강력한 프레임워크를 제공합니다.

게시일: 2007년 11월

Python 은 지난 수 년 동안 매우 각광 받아 온 스크립팅 언어로, 매우 간결한 문법과 미니멀리즘적인 개발 환경을 제공합니다. Python의 열성 추종자들은 그래픽 인터페이스에서 로봇 공학에 이르는 다양한 스크립트 활용 사례를 구현해 왔습니다. 하지만 최근까지도 데이터베이스 기반의 웹 애플리케이션은 Python 커뮤니티의 미개척지로 남아 있었습니다. 하지만 이제 TurboGears가 제공하는 O/R(object-relational) 매퍼, 템플릿 툴킷, 기타 컴포넌트들을 활용하여 오라클 데이터베이스 기반의 웹 애플리케이션을 Python으로 개발할 수 있는 길이 열렸습니다.

Python과 TurboGears: 배경 지식과 아키텍처

지난 수 년 동안 개발된 써드 파티 라이브러리와 모듈들만 보아도 Python의 대중성을 익히 짐작할 수 있습니다. Python을 이용한 웹 애플리케이션의 개발에는 그 한계가 없는 것처럼 보입니다. 관계형 데이터베이스의 접근을 위한 Python 스크립트도 그 수를 헤아리기 힘든 지경입니다. 하지만 데이터베이스를 기반으로 하는 완전한 형태의 웹 애플리케이션은 Python이 지원하지 못하는 가장 큰 공백으로 남아 있었습니다.

Java Platform, Enterprise Edition(Java EE)이 데이터베이스 기반 웹 애플리케이션의 구현에 관련한 문제들을 해결하기 위해 각종 표준과 프레임워크들을 계속적으로 개발해 온 것처럼, 오늘날의 데이터베이스 기반 웹 애플리케이션 요구 사항을 지원하기 위해 Python 커뮤니티가 해답으로 제시한 것이 바로 TurboGears입니다.


  1. Oracle Technology Network의 약자로 오라클 기술 문서와 자료들을 제공합니다.
    http://otn.oracle.com/kr [본문으로]

+ Recent posts