copyright © ibm corp., 2008. all rights reserved. from swt to rcp: experiences implementing rssowl...
TRANSCRIPT
Copyright © IBM Corp., 2008. All rights reserved.
From SWT to RCP: Experiences implementing
RSSOwl 2.0 with RCP
Benjamin Pasero
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
What is RSSOwl?
A newsreader for newsfeeds
What do users expect from such an application?
Leightweight, Fast, Responsive
Little Footprint
Small Download Size
Clean User Interface
Add-Ons and integrated Update Manager
Is this even possible with Eclipse RCP?
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Brief overview of RSSOwl 1.x
started in summer 2003 with 700.000 downloads till today
SWT only and a small cup of JFace
No Viewers
No Ressource Management
Great to discover bugs in SWT due to uncommon usage
Always running on latest Integration Build of SWT
Single, monolithic JAR
Build & Deployment via ANT
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
RSSOwl 2.0 on RCP
started in summer 2005 with 70.000 downloads till today
Reasons
Catching up with features of other newsreaders was becoming hard
Take advantage of using Eclipse RCP
Design Decisions
Java 5
Real Database
Eclipse RCP
Open the application for others to contribute extensions
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Architecture and Extensibility of RSSOwl 2.0
Code is split up in a core and a ui bundle
in addition one bundle per library
db4o, Lucene, HTTPClient, mime4j
> 18 extension points
Support for new protocols (e.g. nntp, mail, ftp,…)
Support for new feed formats (any XML will do)
Support for new namespaces in existing feed formats (e.g. itunes)
Support for custom elements or attributes in existing feed formats
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Benefits using Eclipse RCP over SWT-only
Equinox with support for bundles and extensibility
Support for updating Bundles
JFace Viewer & Ressource Management
Jobs API to perform background tasks and showing progress
Keybinding Support
UI Extensibility (Menus, Toolbar, Object Contributions, Views,…)
…
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Pain Points using RCP in RSSOwl 2.0 (1/2)
Overlay complex to make the UI not look like an IDE
Wishful thinking: simple CSS-Theming in Eclipse 4.0
Think about why there are so many themes for apps like Firefox
Can't fully hide IDE aspects in RCP
Monolithic org.eclipse.ui with lots of contributions
Most visible in preferences (Keybindings)
Size and Footprint concerns
Runtime > 12 MB
~2700 classes loaded for simple Hello World
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Pain Points using RCP in RSSOwl 2.0 (2/2)
Annoying gap between RCP and SDK Integration
Overhead making a plug-in ready for being added into RCP or SDK
ICU (International Components for Unicode) dilemma
Adds 4 MB to the RCP runtime
Replacement exists, but requires to patch RCP feature
Summing up
RCP was created from the existing SDK and not vice-versa
Would it be possible to do it the other way round?
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Announcing RCP Essentials
Minimal RCP: Let's begin from scratch
Equinox
SWT & JFace
Essential Workbench
Can be plugged into the Minimal RCP
Simple default presentation without Multiple Document Interface
No default UI-Contributions (no Commands, etc.)
Avoid restrictions of Views and Editors
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Eclipse RCP vs RCP Essentials (1/2)
SWT
JFace
Equinox
Runtime
ICUWorkbench
Data Bind. Jobs
UI Core
Eclipse RCP
Monolithic org.eclipse.rcp Feature
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Eclipse RCP vs RCP Essentials (2/2)
SWT
JFace
Equinox
Runtime
ICUThemes
Data Bind. Jobs
UI Core
RCP Essentials
EssentialWorkbench
Eclipse 4.0: Get rid of features and allow updates to any configuration
Help
Update
Forms
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Conclusion & Pointers
Using RCP for your application
Great to use in most cases
Some pain points when used for non-enterprise / non-IDE applications
High Hopes for Eclipse 4.0
Think of RCP as the foundation for any application
Pointers
More info on RSSOwl 2.0: http://boreal.rssowl.org
General info on RSSOwl: http://www.rssowl.org
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Thank’s for yourattention
E-Mail: [email protected]
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Legal Notices (1/2)
Copyright © IBM Corp., 2008. All rights reserved. This presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.
IBM and the IBM logo are trademarks or registered trademarks of IBM
Corporation, in the United States, other countries or both.
Java and all Java-based marks, among others, are trademarks or registered
trademarks of Sun Microsystems in the United States, other countries or both.
OSGi is a trademark or registered trademark of the OSGi Alliance in the United
States and other countries.
Eclipse and the Eclipse logo are trademarks of Eclipse Foundation, Inc.
Other company, product and service names may be trademarks or service
marks of others.
From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP | Copyright © IBM Corp., 2008. All rights reserved.
Legal Notices (2/2)
THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH INFORMATION. ANY INFORMATION CONCERNING IBM'S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE.