Single Sourcing RCP and RAP

Sr. Engineering Manager at Twitter
Oct. 14, 2009
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
Single Sourcing RCP and RAP
1 of 76

More Related Content

What's hot

Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドAzure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドYoichi Kawasaki
組織の問題も解決するアーキテクチャ BackendsForFrontends組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontendsPIXTA Inc.
Red Hat Software Collections 2.0 ご紹介Red Hat Software Collections 2.0 ご紹介
Red Hat Software Collections 2.0 ご紹介Moriwaka Kazuo
20201008 AWS独自設計推論チップInferentiaとInf1インスタンス20201008 AWS独自設計推論チップInferentiaとInf1インスタンス
20201008 AWS独自設計推論チップInferentiaとInf1インスタンスHiroshi Tokoyo
Introduction to Open ManoIntroduction to Open Mano
Introduction to Open Manovideos
AWS OpsWorksのご紹介AWS OpsWorksのご紹介
AWS OpsWorksのご紹介Amazon Web Services Japan

What's hot(20)

Similar to Single Sourcing RCP and RAP

Single Sourcing Techniques for RAP and RCPSingle Sourcing Techniques for RAP and RCP
Single Sourcing Techniques for RAP and RCPRalf Sternberg
Rich Ajax Platform - theEdge 2012 conference presentationRich Ajax Platform - theEdge 2012 conference presentation
Rich Ajax Platform - theEdge 2012 conference presentationNicko Borodachuk
SlapOS Presentation at VW2011 SeoulSlapOS Presentation at VW2011 Seoul
SlapOS Presentation at VW2011 SeoulJean-Paul Smets
RxSwiftRxSwift
RxSwiftRomanPanichkin
meetPHP#8 - PHP startups prototypesmeetPHP#8 - PHP startups prototypes
meetPHP#8 - PHP startups prototypesMax Małecki
Open Source Toolchains to Manage Cloud InfrastructureOpen Source Toolchains to Manage Cloud Infrastructure
Open Source Toolchains to Manage Cloud InfrastructureMark Hinkle

More from Chris Aniszczyk

Bringing an open source project to the Linux FoundationBringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationChris Aniszczyk
Starting an Open Source Program Office (OSPO)Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Chris Aniszczyk
Open Container Initiative UpdateOpen Container Initiative Update
Open Container Initiative UpdateChris Aniszczyk
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Chris Aniszczyk
Rise of Open Source ProgramsRise of Open Source Programs
Rise of Open Source ProgramsChris Aniszczyk
The Open Container Initiative (OCI) at 12 monthsThe Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsChris Aniszczyk

Recently uploaded

"Architecture assessment from classics to details",  Dmytro Ovcharenko"Architecture assessment from classics to details",  Dmytro Ovcharenko
"Architecture assessment from classics to details", Dmytro OvcharenkoFwdays
LLaMA 2.pptxLLaMA 2.pptx
LLaMA 2.pptxRkRahul16
Experts Live Europe 2023 - Ensure your compliance in Microsoft Teams with Mic...Experts Live Europe 2023 - Ensure your compliance in Microsoft Teams with Mic...
Experts Live Europe 2023 - Ensure your compliance in Microsoft Teams with Mic...Jasper Oosterveld
How is AI changing journalism? Strategic considerations for publishers and ne...How is AI changing journalism? Strategic considerations for publishers and ne...
How is AI changing journalism? Strategic considerations for publishers and ne...Damian Radcliffe
Need for Speed: Removing speed bumps in API ProjectsNeed for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsŁukasz Chruściel
Webhook Testing StrategyWebhook Testing Strategy
Webhook Testing StrategyDimpy Adhikary

Single Sourcing RCP and RAP

Editor's Notes

  1. introducing each other EclipseSource
  2. Problems: * existing RCP Code * RCP developers not familiar with web technologies * Example: insurance business, complicated forms * Reuse code * Reuse knowledge * Same development environment (Eclipse) * Same concepts (Plug-ins, Extension Points) * Single sourcing is dev of web and desktop apps from a single code base
  3. OSGi specifies a dynamic component model: the Eclipse OSGi implementation is provided by the Equinox project RAP consists of bundles RAP runs on OSGi
  4. Overview of RCP Layers SWT building blocks, native widgets JFace add higher-level API for common UI tasks Workbench does presentation and coordination of UI
  5. need to replace SWT with sth.
  6. RWT implements same API as SWT - client and server part - uses qooxdoo on client - server build on Equinox - server based on JEE techn. - runs in a servlet container (servlet 2.3 - 2.5) - subsets of SWT, JFace, Workbench APIs
  7. SWT, JFace, Workbench APIs → same UI concepts XXX: exchange text RWT ~ SWT
  8. Same UI concepts as in RCP But might not always fit for a web app
  9. Same building blocks, can be arranged differently examples: - custom perspective switcher - custom menu
  10. reuse of existing RCP code * 80% - 98% also reuse of knowledge – takes long time to get familiar with RCP … (cobbler, stay with your trade) Why not 100%? * RAP provides only a subset of RCP * applications need to become multi-user enabled This talk is about how to deal with the gray part
  11. Restrictions due to web environment: unsupported RCP API - GC (research) no platform-indep. perfomant drawing - MouseMove slightly different - modify events sends data in chunks - file upload web-specific requirements - theming
  12. RAP is client/server RAP runs in a multi-user environment - one OSGi instance for all sessions in RAP → shared bundles - singletons shared between sessions - no implicit thread to session assignment - resources (images, colors und fonts) are shared Different scopes
  13. Result multi-user + browser → different code need to separate shared and specific code need place to put the differences possiblities? - plug-ins, extension points - services - fragments
  14. RCP development against RCP runtime RAP runtime → 2 targets
  15. RAP and RCP need different targets switching a target is time-consuming because the complete workspace is recompiled avoids need to open and close projects → 2 workspaces, one for each target
  16. shared projects referenced by both workspaces → not include projects in workspace folder
  17. In the RCP Workspace Created by using new plug-in project wizard Filed in a common projects folder Created as Rich Client Application
  18. runs immediately
  19. Create RAP workspace / switch
  20. do not copy projects into workspace
  21. after import 216 error markers step by step conversion to support both runtimes First problem: dependencies
  22. problem of different bundle ids possible solutions: package import OSGi specification section 3.13.2 problems caused by split-packages optional dependencies on both warnings caused by missing bundle references reexport
  23. list of required bundles org.eclipse.rap.ui org.eclipse.ui properties ‘Optional’ ‘Reexport this dependency’
  24. First error: binding extension point not available in RAP same problem as API differences applies also to extension points: - missing: e.g. bindings, helpSupport … - additional E-Ps for web specific requirements e.g. entrypoint, phaselistener … need place to put platform specific parts
  25. Fragments are bundles that are merged with a host at runtime - can contribute extensions - same classloader as host - at runtime, it's like one bundle well suited to solve single sourcing problems * two fragments per plug-in one for RAP specifics one for RCP specifics * at runtime, only the plug-in that fits the environment will be installed
  26. using the new project wizard fragment project all fragments are filed in the projects folder each workspace contains only the relevant fragments
  27. in RCP workspace move extension from plugin.xml → fragment.xml
  28. solution: delegation-like pattern abstract supertype in host-bundle, that encapsulates the problem type implementation in the (platform dependent) fragment solves the problem loading the platform specific implementation at runtime by means of reflection
  29. RCP has ActionFactory.ABOUT not available in RAP use custom AboutAction use delegation to cover differences (same code for both platforms)
  30. static initializer: loads impl create delegates to impl createInternal does the actual work
  31. finds impl by naming convention needs reflection because no reference to impl at compile time
  32. All errors resolved … … now how to RUN it? entry point main method in SWT entry point is counterpart to main method
  33. extension point attr: parameter (URL parameter) class (implements interface)
  34. the recommended way to work with different targets
  35. excursion: hides optional decencies from app bundles reexport! location in projects folder import into both workspaces