17
Copyright © IBM Corp., 2008. All rights reserved. From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP Benjamin Pasero

Copyright © IBM Corp., 2008. All rights reserved. From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP Benjamin Pasero

Embed Size (px)

Citation preview

Page 1: Copyright © IBM Corp., 2008. All rights reserved. From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP Benjamin Pasero

Copyright © IBM Corp., 2008. All rights reserved.

From SWT to RCP: Experiences implementing

RSSOwl 2.0 with RCP

Benjamin Pasero

Page 2: 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?

Page 3: 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.

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

Page 4: 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.

Page 5: 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.

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

Page 6: 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.

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

Page 7: 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.

Page 8: 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.

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,…)

Page 9: 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.

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

Page 10: 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.

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?

Page 11: 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.

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

Page 12: 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.

Eclipse RCP vs RCP Essentials (1/2)

SWT

JFace

Equinox

Runtime

ICUWorkbench

Data Bind. Jobs

UI Core

Eclipse RCP

Monolithic org.eclipse.rcp Feature

Page 13: 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.

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

Page 14: 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.

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

Page 15: 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.

Thank’s for yourattention

E-Mail: [email protected]

Page 16: 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.

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.

Page 17: 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.

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.