Rich Ajax Platform, Part 1: 소개

Eclipse 방식의 Web 2.0

 

Asynchronous JavaScript + XML (Ajax)과 Web 2.0의 개념은 웹 기반 애플리케이션에 활력을 더해주는 방식으로서 개발 커뮤니티를 통해 퍼져나가고 있습니다. Rich Ajax Platform (RAP)은 Eclipse 개발 모델을 사용함으로써 Ajax 실행 웹 애플리케이션을 구현하는 방식입니다. 이 글에서는, RAP의 개념과 RAP 개발 환경을 설정하는 방법과 데모를 설명합니다. 쉽게 이해할 수 있는 예제도 제공합니다.

 

RAP 프로젝트는 Eclipse 개발 모델을 사용함으로써 Rich Internet Application을 구현하는 것이다. 그렇다면 "Eclipse 개발 모델"이란 것은 정확히 무엇인가? RAP는 자바™ 라이브러리와 Eclipse API를 사용하여 브라우저 기반의 Ajax 애플리케이션을 구현할 수 있도록 한다. SWT, JFace, Eclipse 워크벤치의 웹 실행 구현을 제공함으로써 이를 수행한다. 이 글에서는 몇 가지 간단한 예제로 RAP를 소개하고자 한다.

 

두 단계 설정

 

RAP 설정은 매우 간단하다. 두 단계만 거치면 된다: RAP를 다운로드 하고, 이것을 사용하도록 Eclipse를 설정하면 된다.

 

1 단계: RAP 다운로드

 

Eclipse.org 에서 RAP를 다운로드 한다. 최신의 안정 버전을 다운로드 하도록 한다. 이 글에서는 1.0 릴리스를 사용했다. RAP 타겟 플랫폼을 포함하고 있는 압축 파일을 다운로드 하면, 이것을 여러분이 선택한 디렉토리에 압축을 푼다. (그림 1) 이 디렉토리는 다음 단계에서 타겟 플랫폼을 설정할 때 사용할 것이므로 중요하다.


그림 1. RAP 타겟 

 

2 단계: 타겟 플랫폼 설정하기

 

Eclipse Plug-in Development Environment (PDE)는 타겟 플랫폼의 개념을 사용한다. 타겟 플랫폼은 여러분이 개발하고자 하는 것을 나타내는(목표로 삼고 있는) 플러그인 세트들로 구성되어 있다. 다시 말해서, 여러분이 현재 개발하고 있는 플러그인은 현재의 실행 인스턴스에서 실행될 것이다. 타겟 플랫폼의 장점은 변경될 수 있다는 점이다. 예를 들어, 타겟 플랫폼이 Eclipse V3.2 또는 또 다른 제품 런타임이 되도록 설정할 수 있다. (이것 때문에 여러분이 개발하고 있는 것과 상관 없이 최신 Eclipse를 사용할 수 있다.)

이 경우, RAP 플랫폼을 정해야 한다. 바로 이것이 우리가 개발할 대상이 되기 때문이다. 이를 위해, 타겟 플랫폼 프레퍼런스를 1 단계에서 RAP 플러그인의 압축을 풀었던 디렉토리로 설정한다. ( Window > Preferences... > Plug-in Development > Target Platform ) (그림 2)


그림 2. RAP를 타겟 플랫폼으로서 설정하기 

 

이제 타겟 플랫폼을 설정했다면, RAP 애플리케이션을 개발할 수 있다. 코드를 보기 전에, 간단한 데모를 보고 RAP 기반 애플리케이션을 시작할 때 RAP가 어떤 일을 하는지에 대해 알아보자.

 

RAP 대 Google Web Toolkit 
Google Web Toolkit (GWT) 과 RAP는 자바를 사용하여 Rich Internet Application을 코딩 한다는 점에서 유사하다. 큰 차이점은 GWT가 클라이언트에서 실행되는 반면, RAP는 서버에서 실행된다는 점이다. RAP가 서버에서 실행되기 때문에, 완전한 자바 API에 액세스 할 수 있고, OSGi를 통해 유명한 Eclipse 플러그인 모델을 사용할 수 있는 것이다. 이것에 대해 생각할 수 있는 또 다른 방식은 Eclipse 용어에 있다. GWT는 독립 SWT 애플리케이션(단순한 위젯 툴킷)과 같은 것이지만, RAP는 웹 애플리케이션에 RCP 스타일의 방식을 적용한다.

 

 

 


 

데모

 

RAP를 사용하기 전에, 데모를 보도록 하자. RAP와 인터랙팅 하려면, RAP를 시작하는 시작 설정을 만들어야 한다. RAP 다이얼로그를 열고( Run > Open Run Dialog... ) 새로운 OSGi 프레임웍 시작 설정을 만든다. 이것이 수행되면, 이러한 VM 인자들이 설정되었는지를 확인해야 한다: -Dorg.osgi.service.http.port=8000 -Dosgi.noShutdown=true (그림 3). 이러한 인자들로 인해 RAP가 포트 8000에서 시작할 수 있으며, 시작된 후에 Eclipse가 갑자기 중지되는 것을 방지한다.


그림 3. RAP 시작 설정 

 

마지막으로, 브라우저를 시작하고 http://localhost:8000/rap?startup=controls 로 가서 컨트롤 데모를 본다. (그림 4) 이 데모는 SWT 예제 의 유명한 ControlExample 을 기반으로 한다.


그림 4. RAP 컨트롤 데모 




 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

예제 애플리케이션

 

PDE에서 제공된 Rich Client Platform (RCP) 템플릿을 기반으로 하는 두 가지 예제를 보도록 하자.

 

Hello World 예제

 

전통적인 프로그래밍 예제라면 단연 Hello World 예제이다. 간단한 RAP 애플리케이션을 실행하는 것부터 시작하겠다.


그림 5. Hello World, RAP Edition 

 

RAP 버전과 RCP 버전의 주요 차이점은 플러그인 의존성과 애플리케이션 엔트리 포인트이다. 플러그인 명세를 보면 (Listing 1), 우리가 다른 의존성을 갖고 있음을 알 수 있다.


Listing 1. RAP Hello World 의존성 (MANIFEST.MF) 

Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Helloworld Plug-in Bundle-SymbolicName: rap.helloworld; singleton:=true Bundle-Version: 1.0.0 Bundle-Activator: rap.helloworld.Activator Require-Bundle: org.eclipse.rap.ui Eclipse-LazyStart: true

 

org.eclipse.rap.ui 에 대한 의존성에 주목하라. 이는 RCP 베이스에서 온 표준 org.eclipse.ui 플러그인과 같은 RAP 플러그인이다. OSGi와 Import-Package 헤더에 대해 잘 알고 있다면, 특정 플러그인에 의존할 필요가 없다. 다만, 여러분이 필요로 하는 패키지에만 의존하면 된다. 이것은 RAP와 RCP로 작동하는 방식으로 코드를 구축할 수 있기 때문에 중요하다. 예를 들어, RAP(Listing 2)와 RCP(Listing 3)에서 워크벤치 어드바이저용 코드를 본다면, 비슷한 코드와 반입된 패키지들이라는 것을 알 수 있다.


Listing 2. RCP 워크벤치 어드바이저 

import org.eclipse.swt.graphics.Point; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchWindowAdvisor; public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) { super(configurer); } public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) { return new ApplicationActionBarAdvisor(configurer); } public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(400, 300)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); configurer.setTitle("Hello RCP"); } }



Listing 3. RAP 워크벤치 어드바이저 

import org.eclipse.swt.graphics.Point; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchWindowAdvisor; public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) { super(configurer); } public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) { return new ApplicationActionBarAdvisor(configurer); } public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(400, 300)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); configurer.setTitle("Hello RAP"); } }

 

RAP와 RCP 애플리케이션의 다른 주요한 차이점은 엔트리 포인트이다.(자바 언어의 main(String[] args) 메소드와 비슷하다.) RCP에는 org.eclipse.core.runtime.applications 확장 포인트가 있는데, 여기에서 IApplication 을 정의한다. (Eclipse V3.3 이전 버전에서는 IPlatformRunnable 로 알려져 있다.) 이에 해당하는 RAP는 org.eclipse.rap.ui.entrypoint 확장 포인트인데, IEntryPoint 를 정의한다. RCP 콘텍스트(Listing 4) 대 RAP 콘텍스트(Listing 5)에서 전형적인 엔트리 포인트 코드를 보면, 유사점을 발견할 수 있다. 두 경우 모두, 디스플레이와 워크벤치를 만들어서 워크벤치 어드바이저를 실행한다.


Listing 4. RCP 애플리케이션 엔트리 포인트 (org.eclipse.core.runtime.applications) 

public class Application implements IApplication { public Object start(IApplicationContext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); if (returnCode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; else return IApplication.EXIT_OK; } finally { display.dispose(); } } public void stop() { final IWorkbench workbench = PlatformUI.getWorkbench(); if (workbench == null) return; final Display display = workbench.getDisplay(); display.syncExec(new Runnable() { public void run() { if (!display.isDisposed()) workbench.close(); } }); }



Listing 5. RAP 애플리케이션 엔트리 포인트 (org.eclipse.rap.ui.entrypoint) 

public class Application implements IEntryPoint { public Display createUI() { Display display = PlatformUI.createDisplay(); PlatformUI.createAndRunWorkbench( display, new ApplicationWorkbenchAdvisor() ); |-------10--------20--------30--------40--------50--------60--------70--------80--------9| |-------- XML error: The previous line is longer than the max of 90 characters ---------| return display; } }

 

RCP 메일 예제

 

유명한 RCP Mail 예제(그림 6)는 약간의 수정을 통해 RAP 환경에서 실행될 수 있다. (그림 7) 이 예제는 뷰, 퍼스펙티브, 에디터 같은 워크벤치 개념들이 RAP 안에서 사용될 수 있다는 힌트를 준다. (표 1) 메일 예제와 이전 예제에 대한 소스 코드 를 사용하기 바란다.


표 1. RAP 대 RCP 

RAP RCP
OSGi (서버 측) OSGi
Standard Widget Toolkit (SWT) RAP Widget Toolkit (RWT)
JFace JFace
Workbench Web Workbench



그림 6. RCP Mail 예제 



그림 7. RAP Mail 예제 




 

맺음말

 

이 글에서는, 간단한 예제와 데모를 통해 RAP를 소개했다. RAP로는 기존 스킬을 재사용하고 Rich Internet Application을 만들 수 있다. RAP는 또한 데스크탑(RCP)와 브라우저(RAP)를 통해 재사용 될 수 있는 방식으로 코드를 구성할 수 있다. 중요한 것은, RAP가 Eclipse를 브라우저와 Web 2.0 세계로 데려왔다는 것이다.

 

[출처] https://www.kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=199&dbnum=127846&mode=detail&type=techreport

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
35 [EMF] EMF Tutorial EMF 튜터리얼 file 졸리운_곰 2023.08.23 21
34 Eclipse RAP Tutorial for Beginners - Workbench Application (OLD) file 졸리운_곰 2021.01.30 66
33 Learn Eclipse GMF in 15 minutes file 졸리운_곰 2019.11.27 42
32 [Eclipse] GEF entry series (10, an implementation of the form) file 졸리운_곰 2019.11.25 45
31 GEF Programmer Guide 번역 졸리운_곰 2019.11.25 53
30 Learn Eclipse GMF in 15 minutes file 졸리운_곰 2019.11.20 41
29 RCP 에디터 정리 졸리운_곰 2019.11.20 122
28 다른 그림과 관련하여 GEF 편집기 레이아웃에서 그림의 위치 제한 조건을 동적으로 계산 Dynamically calculating the position constraints for a figure in a GEF editor layout in relation to another figure file 졸리운_곰 2019.11.20 90
27 RCP 등에서 .mf 파일로 다른 프로젝트 익스포트 포함시 라이브러리(메소드)를 찾지 못할 때, Eclipse RCP - cant resolve importing libraries in final build file 졸리운_곰 2019.10.15 181
26 ESE2006-EclipseModelingSymposium15_GMF.pdf file 졸리운_곰 2019.09.21 64
25 GMF_Creation_Review.pdf file 졸리운_곰 2019.09.21 74
24 Eclipse EMF and GMF Tutorial file 졸리운_곰 2019.09.21 46
23 GMF Tutorial/ko file 졸리운_곰 2019.09.20 162
22 Model Driven Architecture approach to domain of graphical editors file 졸리운_곰 2019.09.20 44
21 Single_Sourcing_RAP_RCP_en.pdf file 졸리운_곰 2019.05.15 27
20 Rich client platform 설명 및 배우기 참고 졸리운_곰 2019.05.15 89
» Rich Ajax Platform, Part 1: 소개 file 졸리운_곰 2019.05.15 127
18 또 하나의 크로스 플랫폼: Eclipse RAP file 졸리운_곰 2019.05.15 143
17 Eclipse 4 RCP 튜토리얼(완료) file 졸리운_곰 2019.05.14 682
16 Updating UI in Eclipse RCP 졸리운_곰 2015.11.07 183
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED