Eclipse RAP - Single Source

3,088 views

Published on

2011 JCO

demo :
http://0.0.8.tadpole.tester.paas.wo.tc/db?startup=tadpole

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,088
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
42
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 여기까지 첫번재 시간 끝
  • -Dependiency에서 정의한 플러그인의 기능이 command에 정의되어 있다면 커맨드만 알고 있다면 실행하거나 조작할 수 있다는 내용.Action은 자바 코드로 되어 있어 이것을 실행하기 위해서는 코드로 관계가 되어 있어야 해서 많은 문제점 유발. 이것을 commands가 나오면서 xml로 설정하는것으로 해결하고자 함. 현재는 action은 디플리케이튼된 상태
  • 검색엔진 루씬이 내장되어 있습니다.
  • 이클립스 3.7에서는 tool project 로 추가되어 이렇게 복잡하게 하지 않아도 되는듯 합니다.
  • Styledtext는 좀더 향상된 에디터를 만드는데 기본이 됩니다.아주 중요한 기능중 하나인데,eclipse 버그질라에 문의결과 기약이 없다고 하네요.Web과 Desktop과의 중간자로서 모호 하다.- 개발할때부터 어떤것을 기준으로 개발할 것인지 고민해야합니다.예를들어 Eclipse RCP기준으로 개발해야 한다면 eclipse rap가 안되는 부분(관련 플러그인동작유무)등을 확인하여 개발해야합니다.기본에 더 충실해야 합니다. 즉, 문제가 될만한 기능이 존재한다면 최소한 작은 플러그인으로 쪼개야 합니다.그래서 문제가 된다면 문제가 되는 플러그인의 기능을 추려낼수 있도록 말입니다.확장 포인트 개발을 해야합니다.문제가 될만한 기능이 있다면 확장 포인트를 만들고 개발하여야 합니다.
  • Eclipse RAP - Single Source

    1. 1. Eclipse Rap <br />Single Source - desktop, web, mobile<br />
    2. 2. Eclipse Memory Analyzer (RAP)<br />http://eclipse.org/mat/<br />
    3. 3. 목 차<br />Eclipse RAP란?<br />Eclipse 살펴보기<br />SWT (Widget소개)<br />SWT (Layout 소개)<br />JFace(Viewer 소개)<br />RAP Architecture<br />개발환경 Setup 및 HelloWorld RAP<br />개발 살펴보기<br />JUnit Test<br />RAP 장점<br />RAP 단점<br />RAP Incubator<br />Demo<br />참고자료<br />Eclipse RCP<br />Eclipse RAP<br />
    4. 4. Eclipse Rich Ajax Platform (RAP)<br />2006년 6월 시작(0.1 시작 ~현재 1.4 RC3)<br />확장 포인트 개발<br />RWT(RAP Widget Toolkit)/JFace사용<br />기본 베이스는 OSGi<br />Eclipse RAP란?<br />
    5. 5. Eclipse RAP란?<br /><ul><li>Eclipse 식으로 Web Application 개발</li></li></ul><li>Eclipse RAP란?<br />대부분 브라우저 호환성 지원<br />Servlet 웹 컨테이너 지원<br />RAP Default component<br />
    6. 6. Eclipse 살펴보기<br />Runtime is OSGi(Equinox)<br />Generic Workbench<br />Workspace<br />Help<br />Team<br />Plugin(Bundle)<br />
    7. 7. Eclipse 살펴보기<br />
    8. 8. Eclipse 살펴보기<br />
    9. 9. SWT(Widget 소개)<br />
    10. 10. SWT(Widget 소개)<br />
    11. 11. SWT(Widget 소개)<br />
    12. 12. SWT(Widget 소개)<br />
    13. 13. SWT(Layout 소개)<br />
    14. 14. SWT(Layout 소개)<br />FillLayout<br />shell.setLayout(new FillLayout(SWT.VERTICAL));<br />shell.setLayout(new FillLayout());<br />
    15. 15. SWT(Layout 소개)<br />RowLayout<br />shell.setLayout(new RowLayout());<br /><ul><li> 주요 Property</li></ul> wrap : 기본값은 true 이며, 한줄로 유지 하고 싶을 경우에 false.<br /> pack : 기본값은 true 이며, 기본 control이 모두.<br /> justify : 기본 값은 false 이며, 부모 콘트롤 전반적으로 균등하게 배치.<br /><ul><li>RowData(Width, Height)</li></ul>특정 Widget의 width, height를 정의.<br />
    16. 16. SWT(Layout 소개)<br />GridLayout<br />final Shell shell = new Shell();<br />final GridLayout<br />gridLayout= new GridLayout();<br />gridLayout.numColumns = 3;<br />shell.setLayout(gridLayout);<br /><ul><li>GridData</li></ul>특정 Widget의 정렬방식 및 영역 채우기 등의 방법을 지정.<br />
    17. 17. JFace (Viewer 소개)<br />Viewer는?<br />Model, View, Control을 분리<br />Sorting,Filtering<br />Rendering(Icon, Label)<br />종류<br />TableViewer<br />TreeViewer<br />ListViewer<br />ComboViewer<br />TextViewer<br />
    18. 18. Viewer 소개<br />
    19. 19. JFace(ContentProvider)<br />IStructuredContentProvider : Table, List 사용<br />Object[] getEmement(Object)<br />ITreeContentProvider : Tree 사용<br />Object[] getChildren(Object) : 자식 객체 리턴<br />getParent(Object) :부모 객체 리턴<br />hasChildren(Object) : 자식 객체 유무<br />ILazyContentProvider : SWT.VIRTURAL<br />
    20. 20. JFace(LabelProvider)<br />ILabelProvider: Tree, List 사용<br />getImage(Object) :해당 이미지 리턴<br />getText(Object) :해당 텍스트 리턴<br />ITableLabelProvider : Table 사용<br />getColumnImage(Object, int)<br />getColumnText(Object, int)<br />
    21. 21. RAP Architecture<br />RAP<br />Server Side<br />Client Side<br />RWT == SWT & RWT != SWT<br />qooxdoo -> RWT<br />RCP<br />
    22. 22. 개발환경 Setup 및 HelloWorld RAP<br />
    23. 23. RAP개발 환경<br />환경<br />JDK 6.x<br />Eclipse RCP and RAP Developers(3.6.2) rap target platform (runtime 1.4 RC3, 2011-06-04)<br />Jetty, Tomcat 6.x<br />Tool :WTP(Web Tool Project, v1.5) or ucloudps IDE<br />https://hcs.ucloud.com/portal/ktcloudportal.epc.ucintro.ps.services.html<br />
    24. 24. Target Platform 설정<br /><ul><li>개발환경과 실행환경 분리.
    25. 25. 버전 업에 따른 변화 대응.
    26. 26. 사용자 정의 lib설정 및 공통 lib 정의.
    27. 27. 다양한 멀티 platform의 변화 대응.
    28. 28. Target Platform 설정
    29. 29. New-> Project or
    30. 30. New -> Target Definition</li></ul> Help -> Welcome -> Rich Ajax Platform(RAP) -> Install Target Platform<br />
    31. 31. HelloWorld RAP<br />New PlugIn Project <br />
    32. 32. 실행<br />방법<br /><ul><li>설정</li></li></ul><li>실행환경<br />실행 할 플러그인 및 참조해야 할 plugin 설정.<br />실행 할 plugin을(com.study.rap.sample)를 선택한 후 Add Required Plugin-ins 선택. <br /> PDE는 사용자 필요 plugins을 자동을 추가.<br /> Validate Plug-ins 를 클릭하여 이상이 없다는 메시지가 출력되면 정상. <br />
    33. 33. 실행환경<br />-console : 콘솔 모드로 시작 (osgi커맨드 사용)-consolelog : 콘솔에 로그를 출력<br />-Declipse.ignoreApp : 응용프로그램을 실행하지 않습니다.<br />-Declipse.noShutdown : OSGi가 종료되지 않는 한 프로그램을 종료하지 않습니다.<br />
    34. 34. HelloWorld RAP<br />plugin.xml : plugin 정보를 수록.<br />MANIFEST.MF : Bundle 환경파일로 plugin 이름, 버전 ID, classpath, plugin 의존관계 정보.<br />build.properties : 배포 시에 포함되어야 하는 리소스정보 및 빌드 정보 정의.<br />Application : Workbench, Application UI 시작.<br />ApplicationWorkbenchAdvisor : Workbench의 시작과 종료를 관리.<br />ApplicatonWorkbenchWindowAdvisor : menu, toolbar, StatusLine 등의 window에 대해 정의.<br />ApplicationActionBarAdvisor : menu, toolbar, Statusline등의 실제를 구현.<br />Perspective : 사용자 화면을 구성.<br />
    35. 35. Eclipse RAP 요소 살펴보기<br />
    36. 36. HelloWorld RAP<br />Overview : plugin 정보 출력.<br />Dependencies : 사용할 plugin을 정의.<br />Runtime : 외부 plugin이 자신을 참조 할 수 있는지 여부와 외부 library(jar)등을 정의.<br />Extensions : 외부 plugin의 기능을 확장하기 위한 정의.<br />Extension Points : 자신의 기능을 확장하기 위한 확장 점을 정의. <br />Build : 배포 시에 포함되어야 하는 리소스 선택.<br />MANIFEST.MF : <br />plugin.xml : <br />build.properties:<br />
    37. 37. Extensions and Extension Point<br />Eclipse는 확장과 기증을 통해 개발합니다.<br />Extensions : Dependencies에 정의된 plugin기능을 확장하여 개발.<br />Extension Point : 자신이 구현한 기능을 외부 에서 확장하여 사용 할수 있도록 정의.<br />-Extension : RAP 시작 포인트<br />
    38. 38. Startup Point<br />Extensions<br />org.eclipse.rap.ui.entrypoint<br />
    39. 39. Perspectives<br /><ul><li>현재 관점에서 보여 줄 화면 정의 및 배치</li></ul>(사용자가 개발한 view나 editor 및 참조한 plugin에서 구현된 화면).<br /><ul><li>Extensions</li></ul>org.eclipse.ui.perspectives<br />
    40. 40. Commands and Actions<br />메뉴나 툴바를 이용하여 사용자에게 행위 부여.<br />이미 정의된 기능을 사용할 수있도록 구현과 실행의 분리.(참조한 플러그인 및 내가 구현한 플러그인)<br />-Extension<br />
    41. 41. Menu and Toolbar<br />전후관계 표시 가능 : 예를 들어서 신규 추가 일 경우 -> menu:org.eclipse.ui.main.menu?after=additions 표시특 정 메뉴 뒤에 위치 하고자 할경우 after, 이전에 위치하고자 할 경우 before를 사용할 수 있습니다.<br />예를 들어, menu:org.eclipse.ui.main.menu?after=com.study.sample.rcp.mainMenu.file<br />
    42. 42. View and Editor<br />Editor<br />모든 editor가 공유하고 editor영역 안에 위치한다. editor영역 안에서 분할은 가능하지만 Workbench Window를 벗어날 수 없다.<br />주 메뉴와 메인 툴 바를 공유한다<br />사용자가 변경을 수행해도 바로 저장되지 않는다. 명시적으로 요청해야 한다.<br />-Extension <br />org.eclipse.ui.editors<br /><ul><li>Viewer
    43. 43. 자신만의 메뉴와 툴바정의.
    44. 44. 드래그하여 Workbench Window 밖으로 빼낼 수 있다.</li></ul>-Extension <br />org.eclipse.ui.views<br />
    45. 45. Selection Services<br />Part간의 이벤트 전달<br />사용 : public class TestViewer … implement ISelectionListener<br />서비스 등록 : getSite().setSelectionProvider( tableViewer ); <br />외부 서비스 실행 : getSite().getPage().addSelectionListener(this);<br />종류<br />
    46. 46. Job and UIJob<br />Job의정의<br />public class JobExample extends Job <br /> protected IStatus run(IProgressMonitor monitor) ;<br /> public booleanbelongsTo(Object lastName) ;<br />Job의 실행<br />new JobExample().schedule();<br /> Job의 관리<br />IJobManagerjobManager = Job.getJobManager();<br />
    47. 47. Label Decorator<br />현재 Label의 아이콘을 조건에 따라 변경.<br /><ul><li>Extension</li></ul>org.eclipse.ui.decorators<br />
    48. 48. Preference Pages<br />시스템 환경변수 설정정의.<br />- Extension<br />org.eclipse.ui.preferencePages<br />org.eclipse.core.runtime.preferencs<br />
    49. 49. Help<br />Help -> Help Contents 메뉴 호출<br />검색엔진(Apache Lucene)이 내장되어 검색 기능.<br />F1눌렀을 때 도움말 지원기능.(문맥감지 기능)<br />다국어 지원.<br />독립 실행 도움말 제공.<br />Extension<br />org.eclipse.help.toc<br />org.eclipse.help.contexts<br />http://wiki.eclipse.org/RAP/FAQ#How_to_integrate_the_Eclipse_Help_System_in_a_RAP_application.3F<br />
    50. 50. Themes(css)<br />Extension<br />org.eclipse.rap.ui.themes<br />
    51. 51. Branding<br />Extension<br />org.eclipse.rap.ui.branding<br />
    52. 52. 지역화<br />Plugins -> PDE Tools -> Externalize Strings<br />Source code -> Externalize String…<br />Util소개 (Resource Bundle Editor)<br /> (http://sourceforge.net/projects/eclipse-rbe)<br />
    53. 53. Exporting (Tomcat)<br />필요 Resource(RAP Deployment – Part 2: Deploying as WAR)<br />cvs(dev.eclipse.org)에서 Checkout <br />org.eclipse.equinox -> server-side -> bundles<br />org.eclipse.equnox.servletbridge<br />ort.eclipse.equnox.http.servletbridge<br />org.eclipse.equnox.http.registry<br />org.eclipse.rap -> releng<br />org.eclipse.rap.demo.feature<br />cvs와 연결끊기<br />자신의 update 프로젝트로 이름 변경<br />
    54. 54. Exporting (Tomcat)<br />Context<br />web.xml<br />
    55. 55. JUnit<br />Dependencies : org.eclipse.rap.junit<br />
    56. 56. RAP 장점(RWT vs SWT)<br />RAP<br />RCP<br />
    57. 57. RAP 장점<br />Modularity~<br />JFace<br />Workbench<br />
    58. 58. RAP 장점<br />Single Source (RAP to RCP)<br />Tadpole RCP<br />Tadpole RAP<br />
    59. 59. RAP 장점<br />Single Source (RCP to RAP)<br />Cubrid Manager RAP<br />Cubrid Manager RCP<br />
    60. 60. RAP 장점<br />Application<br />RWT (Server)<br />RWT (Client)<br />http<br />Servlet Container<br />Web Browser<br />
    61. 61. RAP 단점<br />Server에 부하가 상대적으로 심하다.<br />Cloud가 해결방법이 될수 있을까?<br />GEF 지원 미흡.<br />Incubating -> port에 코드.(버그 존재, 느린속도)<br />StyledText Widget이 읽기 기능만 지원.<br />읽기 기능만 가능 코드.(완전한 모듈은 기약없음)<br />학습해야 할 요소가 많다.<br />Java -> SWT/JFace -> RCP -> Web -> RAP<br />Web과 Desktop과의 중간자로서 모호하다.<br />개발시 기준 점을 잡아서 개발 해야함<br />
    62. 62. RAP Incubator<br />PDE<br />Runtime<br />UploadWidget<br />SpreadSheet<br />JIT<br />Visualizations<br />Search<br />Google<br />Visualizations<br />
    63. 63. Demo<br />http://0.0.8.tadpole.tester.paas.wo.tc/db?startup=tadpole<br />KT PaaS(ucloudps)에 올려진 올챙이<br />
    64. 64. 참고자료<br />Eclipse RAP Home<br />Using Eclipse Ganymede to develop for the desktop, Web and mobile devices, Part 2: Developing for the Rich Client Platform, the Ganymede way<br />Rich Ajax Platform, Part 2: 애플리케이션 개발하기<br />Eclipse Rich Ajax Platform (RAP) - Tutorial with Eclipse 3.5 (Galileo)<br />Equinox in a Servlet Container<br />RAP Deployment – Part 2: Deploying as WAR<br />Single Sourcing RAP and RCP PPT<br />Eclipse con 2010<br />Eclipse con 2011<br />http://www.cubrid.com<br />http://pierocksmysocks.deviantart.com/art/Mobile-Device-Dock-Icons-64174438<br />http://www.devx.com/webdev/Article/36101/1763/page/3<br />https://cs.ucloud.com/portal/ktcloudportal.epc.ucintro.ps.services.html<br />

    ×