SlideShare a Scribd company logo
1 of 39
Download to read offline
Extend your RCP Application to the Web with RAP


                                                           Frank Appel
                                                           Technical Lead, RAP
                                                           fappel@innoopract.com




Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 1
Agenda
                          Basics
                          Setup
                       Dependencies
                        Extensions
                      API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 2
Agenda
                          Basics
                          Setup
                       Dependencies
                        Extensions
                      API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 3
What is RAP?




                  rich internet application runtime platform
                  based on the Eclipse programming model
                  single sourcing for rich client- and web-applications



Single Sourcing                Copyright Innoopract – made available under the EPL 1.0   page: 4
Cobbler, stay with your trade

Single Sourcing

  common codebase for rich- and web-clients
  reuse of existing RCP code
           70% - 90% is possible

           RAP provides only a subset of RCP

           applications need to become multi-user enabled




Single Sourcing             Copyright Innoopract – made available under the EPL 1.0   page: 5
Problem Cases

Differences between RCP and RAP

  RAP runs in a multi-user environment
           one OSGi instance for all sessions in RAP

           singletons are shared between sessions

           no implicit thread to session assignment

           resources (images, colors und fonts) are shared


  thin-client architecture
           API limitations (no GC, no MouseMove events)




Single Sourcing              Copyright Innoopract – made available under the EPL 1.0   page: 6
Agenda
                          Basics
                          Setup
                       Dependencies
                        Extensions
                      API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 7
Workplace

2 Workbench Instances


   RAP and RCP need different
   targets

   switching a target is time-
   consuming because the complete
   workspace is recompiled




Single Sourcing         Copyright Innoopract – made available under the EPL 1.0   page: 8
The Example Application

RCP Mail Demo


-    created by using the new
     plug-in project wizard in
     the RCP workbench
-    filed in a common
     projects folder
-    created as Rich Client
     Application
-    runs immediately




Single Sourcing            Copyright Innoopract – made available under the EPL 1.0   page: 9
Import to the RAP Development
Environment
RAP Mail Demo

-    import using the import
     project wizard

-    after import 216 error
     markers

-    step by step conversion to
     support both runtimes




Single Sourcing               Copyright Innoopract – made available under the EPL 1.0   page: 10
Agenda
                          Basics
                          Setup
                      Dependencies
                        Extensions
                      API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 11
Dependencies

The problem of different UI libraries

possible solutions:

   package import
           OSGi specification section 3.13.2

           problems caused by split-packages


  optional dependencies on both library versions
           warnings caused by missing bundle references

           UI abstraction layer




Single Sourcing              Copyright Innoopract – made available under the EPL 1.0   page: 12
Dependencies

The compatibility plug-in

  location in projects folder
  import into both workspaces
  list of required bundles
           org.eclipse.rap.ui

           org.eclipse.ui
  properties
           ‘Optional’

           ‘Reexport this dependency’




Single Sourcing                 Copyright Innoopract – made available under the EPL 1.0   page: 13
Dependencies

RAP workspace after switching the UI dependencies




Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 14
Agenda
                          Basics
                          Setup
                       Dependencies
                        Extensions
                      API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 15
Extensions

The problem of different Extension-Points


   not all RCP E-Ps are available in RAP

           e.g. bindings, helpSupport …



  additional RAP E-Ps for web specific requirements

           e.g. entrypoint, phaselistener …




Single Sourcing              Copyright Innoopract – made available under the EPL 1.0   page: 16
Extensions

Fragment Solution

   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

  platform specific E-P
  contributions are moved
  into the corresponding
  fragment

  bundle structure stays
  intact

Single Sourcing              Copyright Innoopract – made available under the EPL 1.0   page: 17
Extensions

Creation of the Fragment Projects

    using the new project wizard
           fragment project
           all fragments are filed in the projects
           folder

  the following fragments are created
           compatibility.rap
           compatibility.rcp
           maildemo.rap
           maildemo.rcp

  each workspace contains only the
  relevant fragments


Single Sourcing                Copyright Innoopract – made available under the EPL 1.0   page: 18
Extensions

Creation of the Fragment Projects

   using the new project wizard
           fragment project
           all fragments are filed in the projects
           folder

  the following fragments are created
           compatibility.rap
           compatibility.rcp
           maildemo.rap
           maildemo.rcp

  each workspace contains only the
  relevant fragments


Single Sourcing                Copyright Innoopract – made available under the EPL 1.0   page: 19
Extensions

RCP workspace after moving E-Ps into fragment.xml




Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 20
Agenda
                          Basics
                          Setup
                       Dependencies
                        Extensions
                     API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 21
API Differences

The problem of different APIs


   not all RCP APIs are available in RAP

           e.g. GC, MouseMove Events, FileDialog …



  additional RAP APIs for web specific requirements

           e.g. PhaseListener, ISessionStore …




Single Sourcing              Copyright Innoopract – made available under the EPL 1.0   page: 22
API Differences

The problem of different APIs

solution:


  abstract type in host-bundle, that encapsulates the problem

  type implementation in the fragment, that platform
  dependent, solves the problem

  loading the platform specific implementation at runtime by
   means of reflection




Single Sourcing        Copyright Innoopract – made available under the EPL 1.0   page: 23
API Differences

Example ‘About’ Action

the last compile error in the RAP workspace is caused by the
missing about action of the ActionFactory.

encapsulate the problem by using an ActionFactoryFacade
type:




Single Sourcing       Copyright Innoopract – made available under the EPL 1.0   page: 24
API Differences

Example ‘About’ Action II

implementation of ActionFactoryFacade:




Single Sourcing      Copyright Innoopract – made available under the EPL 1.0   page: 25
API Differences

Example ‘About’ Action III

implementation of ImplemenationLoader:




Single Sourcing      Copyright Innoopract – made available under the EPL 1.0   page: 26
API Differences

Example ‘About’ Action IV

platform specific implementations:

RAP                                              RCP




Single Sourcing       Copyright Innoopract – made available under the EPL 1.0   page: 27
Agenda
                          Basics
                           Setup
                       Dependencies
                        Extensions
                      API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 28
Lift Off

Start-up
help




Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 29
Lift Off




Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 30
Agenda
                          Basics
                          Setup
                       Dependencies
                        Extensions
                      API Differences
                          Lift Off
                    API Differences II
                  Multi-User Environment


Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 31
API Differences

Resources in RAP are different from RCP

   no public constructor
  no dispose
  shared between sessions
  differences are resolved at JFace layer




Single Sourcing            Copyright Innoopract – made available under the EPL 1.0   page: 32
Agenda
                           Basics
                           Setup
                       Dependencies
                         Extensions
                      API Differences
                           Lift Off
                     API Differences II
                  Multi-User Environment


Single Sourcing    Copyright Innoopract – made available under the EPL 1.0   page: 33
Multi-User Environment

Singletons

   classical singletons exist in application scope

  in RAP, most of the time, session scope is desirable




Single Sourcing          Copyright Innoopract – made available under the EPL 1.0   page: 34
Multi-User Environment

Singletons II

implementation in the host bundle:




fragment implementation:

RAP                                           RCP




Single Sourcing       Copyright Innoopract – made available under the EPL 1.0   page: 35
Multi-User Environment

Jobs

jobs can’t implicitly access session-singletons




Single Sourcing        Copyright Innoopract – made available under the EPL 1.0   page: 36
Multi-User Environment

Jobs II

implementations in the host bundle:




Single Sourcing       Copyright Innoopract – made available under the EPL 1.0   page: 37
Get RAP - http://eclipse.org/rap




Single Sourcing   Copyright Innoopract – made available under the EPL 1.0   page: 38
More Information

             http://www.eclipse.org/rap          -      RAP project page
             http://wiki.eclipse.org/RAP         -      RAP project wiki
             http://www.qooxdoo.org              -      qooxdoo js library




          Questions?
                  info@innoopract.com




Single Sourcing                 Copyright Innoopract – made available under the EPL 1.0   page: 39

More Related Content

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
Simplilearn
 

Featured (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

Single Sourcing Extend your RCP Application to the Web with RAP

  • 1. Extend your RCP Application to the Web with RAP Frank Appel Technical Lead, RAP fappel@innoopract.com Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 1
  • 2. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 2
  • 3. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 3
  • 4. What is RAP? rich internet application runtime platform based on the Eclipse programming model single sourcing for rich client- and web-applications Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 4
  • 5. Cobbler, stay with your trade Single Sourcing common codebase for rich- and web-clients reuse of existing RCP code 70% - 90% is possible RAP provides only a subset of RCP applications need to become multi-user enabled Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 5
  • 6. Problem Cases Differences between RCP and RAP RAP runs in a multi-user environment one OSGi instance for all sessions in RAP singletons are shared between sessions no implicit thread to session assignment resources (images, colors und fonts) are shared thin-client architecture API limitations (no GC, no MouseMove events) Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 6
  • 7. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 7
  • 8. Workplace 2 Workbench Instances RAP and RCP need different targets switching a target is time- consuming because the complete workspace is recompiled Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 8
  • 9. The Example Application RCP Mail Demo - created by using the new plug-in project wizard in the RCP workbench - filed in a common projects folder - created as Rich Client Application - runs immediately Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 9
  • 10. Import to the RAP Development Environment RAP Mail Demo - import using the import project wizard - after import 216 error markers - step by step conversion to support both runtimes Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 10
  • 11. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 11
  • 12. Dependencies The problem of different UI libraries possible solutions: package import OSGi specification section 3.13.2 problems caused by split-packages optional dependencies on both library versions warnings caused by missing bundle references UI abstraction layer Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 12
  • 13. Dependencies The compatibility plug-in location in projects folder import into both workspaces list of required bundles org.eclipse.rap.ui org.eclipse.ui properties ‘Optional’ ‘Reexport this dependency’ Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 13
  • 14. Dependencies RAP workspace after switching the UI dependencies Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 14
  • 15. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 15
  • 16. Extensions The problem of different Extension-Points not all RCP E-Ps are available in RAP e.g. bindings, helpSupport … additional RAP E-Ps for web specific requirements e.g. entrypoint, phaselistener … Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 16
  • 17. Extensions Fragment Solution 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 platform specific E-P contributions are moved into the corresponding fragment bundle structure stays intact Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 17
  • 18. Extensions Creation of the Fragment Projects using the new project wizard fragment project all fragments are filed in the projects folder the following fragments are created compatibility.rap compatibility.rcp maildemo.rap maildemo.rcp each workspace contains only the relevant fragments Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 18
  • 19. Extensions Creation of the Fragment Projects using the new project wizard fragment project all fragments are filed in the projects folder the following fragments are created compatibility.rap compatibility.rcp maildemo.rap maildemo.rcp each workspace contains only the relevant fragments Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 19
  • 20. Extensions RCP workspace after moving E-Ps into fragment.xml Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 20
  • 21. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 21
  • 22. API Differences The problem of different APIs not all RCP APIs are available in RAP e.g. GC, MouseMove Events, FileDialog … additional RAP APIs for web specific requirements e.g. PhaseListener, ISessionStore … Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 22
  • 23. API Differences The problem of different APIs solution: abstract type in host-bundle, that encapsulates the problem type implementation in the fragment, that platform dependent, solves the problem loading the platform specific implementation at runtime by means of reflection Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 23
  • 24. API Differences Example ‘About’ Action the last compile error in the RAP workspace is caused by the missing about action of the ActionFactory. encapsulate the problem by using an ActionFactoryFacade type: Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 24
  • 25. API Differences Example ‘About’ Action II implementation of ActionFactoryFacade: Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 25
  • 26. API Differences Example ‘About’ Action III implementation of ImplemenationLoader: Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 26
  • 27. API Differences Example ‘About’ Action IV platform specific implementations: RAP RCP Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 27
  • 28. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 28
  • 29. Lift Off Start-up help Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 29
  • 30. Lift Off Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 30
  • 31. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 31
  • 32. API Differences Resources in RAP are different from RCP no public constructor no dispose shared between sessions differences are resolved at JFace layer Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 32
  • 33. Agenda Basics Setup Dependencies Extensions API Differences Lift Off API Differences II Multi-User Environment Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 33
  • 34. Multi-User Environment Singletons classical singletons exist in application scope in RAP, most of the time, session scope is desirable Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 34
  • 35. Multi-User Environment Singletons II implementation in the host bundle: fragment implementation: RAP RCP Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 35
  • 36. Multi-User Environment Jobs jobs can’t implicitly access session-singletons Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 36
  • 37. Multi-User Environment Jobs II implementations in the host bundle: Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 37
  • 38. Get RAP - http://eclipse.org/rap Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 38
  • 39. More Information http://www.eclipse.org/rap - RAP project page http://wiki.eclipse.org/RAP - RAP project wiki http://www.qooxdoo.org - qooxdoo js library Questions? info@innoopract.com Single Sourcing Copyright Innoopract – made available under the EPL 1.0 page: 39