 | 마끼 드실래요? jMaki(Java + 김밥)을 소개합니다. |
AJAX Frameworks and Toolkits
Table of Contents
몇마디!!
- 현재 사용되는 AJAX 툴킷과 프레임워크에 대한 전반적인 소개를 한다.
- 어떤 상황에서 어떤 기술을 사용하는 것이 좋을지에 대한 대략의 가이드를 한다.
본론
- 클라이언트 측 아키텍처 레이어
- Remoting abstraction layer: XMLHttpRequest과 IFrame에 대한 핸들링을 은닉
- Proxy: 클라이언트 측 RPC-like 통신을 핸들링
- Widgets and components: 미리 사용가능하게 만들어진 UI 위젯(calendar, button 등) 제공
- JavaScript event handlers: 클라이언트 측 로직 제공
- 클라이언트 측 자바스크립트 라이브러리
- 서버측 기술(Java EE, .Net, PHP, Ruby on Rails 등)은 어떤거라도 상관없다.
- 런타임 동안 로컬 혹은 URL을 통해 접근, 동적 자바스크립트 코드 생성은 없다.
원문
Should be accessible during runtime either locally or through URL
There is no dynamic JavaScript code generation
- 하나의 애플리케이션에서 라이브러리 요소들을 조합해서 사용 가능하다. 여러 자원에서 위젯과 자바스크립트 유틸리티를 같이 사용하고 싶어질 때가 생길지 모른다.
- 클라이언트 측 자바스크립트 라이브러리를 사용하는 기술적인 이유
- 원격 비동기 통신은 핸들링 가능하다.
- 브라우저간 비호환성을 핸들링한다. if/else로 코드를 혼란스럽게 하지 않아도 된다.
- 우아하게 등급을 낮출수 있다(graceful degradation). 예를 들어 XMLHttpRequest를 지원하지 않는 브라우저에서는 IFrame을 사용하면 된다.
- AJAX 상에서 페이지 탐색 고리(page navigation hooks)를 제공한다.
> Back and forward buttons
> Bookmarking
- 미리 사용가능하게 만들어진 UI 위젯 제공
> Tree, Calendar, Textfield, Button, Split panes, Fisheye 등
- 사용하기 쉬운 DOM 유틸리티 제공, 오리지널 DOM APIs보다 사용이 쉽다.
- 쓸모 있는 자바스크립트 유틸리티를 제공
> Table management, Timer 등
- 에러 핸들링을 추가하기 쉽다.
- 보다 유연한 이벤트 핸들링 작업이 가능하다.
> DOM node based, Function call based, AOP style
- Advanced UI features 제공
> Animation
> Drag and drop
> Fade out and Fade in
- 일반적으로 객체 지향 프로그래밍 스타일을 권장한다.
- 클라이언트 측 자바스크립트 라이브러리를 사용하는 비즈니스적인 이유
- 시장에서 검증되었다. 일반적으로 자체 개발하는 것보다 품질이 좋다.
- 잘 구축된 개발자/사용자 커뮤니티
> 커뮤니티는 계속해서 기능을 향상시키거나 추가하고 있다.
> 커뮤니티 포럼에서 도움을 쉽게 받을 수 있다.
- 사용하기 쉽다.
> 사용하고자 하는 것을 웹 애플리케이션 루트 디렉토리 또는 URL 위치에 설치하기만 하면 된다.
- 툴 지원
> IDE에서 조만간 지원 가능하리라 본다.
- 클라이언트 측 자바스크립트 라이브러리
- 장단점
- 장점
> 어떤 서버측 기술과도 같이 사용 가능하다.
> 다양한 자원으로부터 많은 위젯들이 있다.
- 단점
> 개발자들은 여전히 자바스크립트를 배워야 한다.
> 서로 다른 라이브러리들은 서로 다른 문법을 사용하고 있다.
- 언제 사용하면 좋은가?
> 다수의 서버측 기술을 사용해야 할 필요가 있을 때
> 다수의 자원으로부터의 위젯들을 사용하기 원할 때(Java EE를 사용한다는 가정하에 jMaki가 이때 유용하다.)
- 프락시를 통한 RMI-like 리모팅
- 특징
- 일반적인 RPC 통신방식(stub, skeleton 기반 아키텍처)과 유사하다.
- 클라이언트측 자바스크립트 코드상에 RMI-like 한 문법을 사용할 수 있다.
- 프레임워크가 자바스크립트 코드인 클라이언트 측 stub(proxy)를 생성한다.
- 프레임워크는 또한 서버측 런타임도 제공한다.
- 클라이언트측 stub(proxy)는 파라메타와 리턴 값에 대해 마샬링을 핸들링한다.
- 구현예
- 장단점
- 장점
> 기존에 있던 백엔드 비즈니스 로직을 최소한의 노력으로 AJAX 클라이언트에 노출 가능하다.
> 클라이언트 측 자바스크립트 코드 안에서 친숙한 RMI-like한 문법을 사용할 수 있다.
- 단점
> 해커들이 벡엔드에서 어떤 메소드들이 가용한지 알 수 있다.
> 특별한 컨버터(mashaller and unmarshaller)가 특별한 형태의 자바 오브젝트를 위해 생성되어야 한다.
- 언제 사용하면 좋은가?
> 기존에 있던 백엔드 비즈니스 로직을 최소한의 노력으로 AJAX 클라이언트에 노출하고 싶을 때
- AJAX-enabled JSF 컴포넌트
- 특징
- AJAX-enabled JSF 컴포넌트는 AJAX 프로그래밍의 복잡함을 감춘다.
> 페이지를 만드는 사람은 자바스크립트를 몰라도 된다.
> 부담은 컴포넌트 개발자들의 몫이다.
- IDE를 통해 드래그앤드롭을 하면서 웹 애플리케이션을 개발하는 JSF 모델을 촉진한다.
> AJAX 애플리케이션을 개발하기 위해 Sun Java Studio Creator 2 및 다른 JSF-aware한 IDE에 AJAX-enabled JSF components를 드래그앤드롭만 하면 된다.
- JSF 컴포넌트는 재사용 가능하다.
> 커뮤니티에 의해 보다 많은 AJAX-enabled JSF 컴포넌트가 만들어지고 있다.
> More AJAX-enabled JSF components are being built by the community
- 구현예
- 장단점
- 장점
> 드래그앤드롭으로 AJAX 애플리케이션을 만들 수 있다.
> 3rd-party AJAX-enabled JSF 컴포넌트 제작을 꾀함
- 단점
> 만만한 작업이 아니다.
- 언제 사용하면 좋은가?
> 드래그앤드롭으로 구축하기 원할때
> JSF-aware IDE를 사용하는 JSF 프로그래밍 모델에 이미 익숙해져 있을때
> 자바스크립트 코딩을 하지 않기 원할때
- Wrapper(jMaki)
- jMaki 등장 배경
- 여러 AJAX 툴킷이나 프레임워크는 위젯을 포함하고 있는데, 각기 다른 문법을 가지고 있다.
따라서 이런 다양한 위젯을 사용함에 있어 공통적인 프로그래밍 모델이 필요하게 되었다.
- 자바스크립트 코딩은 자바 EE 프로그래머에겐 너무나도 이질적이다. 따라서 자바 EE 문법과 프로그래밍 모델을 사용하여 자바스크립트 위젯을 활용하는 필요성이 대두되었다.
- jMaki가 무엇인가?
- 자바 플랫폼을 위한 자바스크립트 랩퍼 프레임워크
> j는 자바를 뜻하고, Maki는 싸다라는 뜻의 일본말
- 웨젯을 JSP 혹은 JSF 태그로 쌈으로써 프로그래머가 다양한 AJAX 툴킷 및 프레임워크의 위젯을 사용 가능하게 한다.
- 구현예
- 자바 to 자바스크립트/HTML 변환기(GWT)
> AJAX 애플리케이션을 일반적인 자바 개발 환경에서 구현 및 디버깅을 한 후에 배포 시점에만 GWT를 사용하여 자바 애플리케이션을 자바스크립트 및 HTML로 변환한다.
- 장단점
- 장점
> 디버깅, 테스트를 자바 언어를 사용하여 진행할 수 있다.
> 자바스크립트를 배울 필요가 없다.
> 구글로부터 시작된 것이라 문서화 및 튜토리얼 작업 등이 잘 되어 있다.
- 단점
> 변환기가 다 알아서 하기 때문에 통제권을 상실했다고 볼 수 있다.
- 언제 사용하면 좋은가?
> 이미 스윙을 잘 사용할 줄 안다면..
- 데모
- AJAX 확장기능을 포함한 웹 애플리케이션 프레임워크
> 기존 웹 애플리케이션 프레임워크에 AJAX 기능을 추가함. 필요 없거나, 최소한의 자바스크립트 코딩이 필요
> 내부적으로 자바스크립트 클라이언트 라이브러리 사용
- 구현예
- 장단점
- 장점
> 현재 사용하는 프레임워크 내에서 AJAX 기능을 제공할 수 있다.
- 단점
> 특정 웹 애플리케이션 프레임워크에 묶이게 된다.
- 언제 사용하면 좋은가?
> 특정 웹 애플리케이션을 사용하고 있는데, 그것이 AJAX 확장 기능을 제공할 때
- 데모
- 이 중에 무엇을 사용해야 하는가?
- UI 쪽
> Sun Java Studio Creator 2와 같은 JSF-enabled IDE 사용이 가능하다면 AJAX-enabled JSF 컴포넌트를 사용해라.
> JSF 컴포넌트 솔루션을 사용할 상황이 아니면 jMaki를 사용해라.
> 자바스크립트 코딩에 대해 전적인 통제를 원한다면 Dojo 툴킷을 사용해라.
> 이미 스윙 애플리케이션을 가지고 있는 상태에서 AJAX 기능 추가를 원하고 자바스크립트 코딩은 피하고 싶다면 GWT를 사용해라.
- 비즈니스 로직 쪽
> 이미 자바 EE로 구현된 비즈니스 로직을 가지고 있는데, 클라이언트로부터 AJAX적인 행위의 RMI 콜을 핸들링하고 싶다면 DWR을 사용해라.
> 이미 특정 웹 애플리케이션 프레임워크를 사용하고 있는데, 그것이 AJAX 확장 가능하다면 그것을 계속 사용해라.
실습과 숙제
의문점
참고문헌
문서에 대하여
최초작성자 : [김민재]
최초작성일 : 2006년 8월 22일
버전 : 0.9
문서이력 :
- 2006년 8월 22일 김민재 문서 최초 생성
- 2006년 10월 6일 김민재 문서 초안 완성
Comments (3)
8월 22, 2006
자바지기 says:
두번째 강의가 시작되었군요. 참 형의 열정에 감탄하고 있습니다. 요즘 저는 무기력증에 빠져서 살고 있사옵니다. 내일 오랜만에 얼굴 뵙겠네요.. ...두번째 강의가 시작되었군요. 참 형의 열정에 감탄하고 있습니다. 요즘 저는 무기력증에 빠져서 살고 있사옵니다. 내일 오랜만에 얼굴 뵙겠네요..
앞으로도 좋은 문서들 많이 부탁드리겠습니다.
8월 22, 2006
conkmj says:
같은 증세인지는 모르지만, 한동안 정말 열심히 했던 때가 있었는데,,, 한 일주일,, 그 다음 일주일이 정말 무기력하던데.. 너무 급하게 하면 ...같은 증세인지는 모르지만, 한동안 정말 열심히 했던 때가 있었는데,,, 한 일주일,, 그 다음 일주일이 정말 무기력하던데.. 너무 급하게 하면 안되겠다는 반성을 했지.. 이 컨텐츠의 경우도 거북이 걸음으로 끝까지 한다는 생각만 하고 있어. 암튼 힘내!!
4월 06, 2007
icreater says:
간단할줄로만 알았던 Ajax.. 보면 볼 수록 공부할게 정말 많네요...^^; 언제 이해를 다 할 수 있을지..ㅋ간단할줄로만 알았던 Ajax..
보면 볼 수록 공부할게 정말 많네요...^^;
언제 이해를 다 할 수 있을지..ㅋ