Eclipse Rich Client Platform The amazing simplicity of creating RCP application Lars Vogel http://www.vogella.de Agenda What is an Eclipse RCP application? · Local running application using the native widget toolkit · Based on the Eclipse runtime and technology Eclipse (RCP) applications are written in Java in little pieces (plugins) Extensible Application - Firefox Plugins The Browser OSGi Dynamic module system in Java Bundle Smallest deployment and development component in OSGi Bundle == Plugin Bundle Plugin Each Plugin defines its available API Each Plugin defines also its dependencies MANIFEST.MF ­ Additional metadata for OSGi runtime Runtime (OSGi) makes sure the API contacts are fulfilled Demo OSGi ­ Enforced Modularity Standard Java App Modular Java App Anatomy of Eclipse RCP In Eclipse everything is a plugin (except the core runtime) Plugin Plugin Plugin Runtime Eclipse IDE Help P2 Update Text Compare Debug Search Team/ cvs IDE personality Workbench Resources JFace SWT Runtime / Equinox (OSGi) Why Eclipse RCP? · · · · · · Component model Rich user experience OS independent Extensible Community e4 Your plugins Eclipse Plugins Eclipse RCP Your Security P2 Update Help Workbench Your data model JFace SWT Runtime / Equinox (OSGi) Your UI Layer Your Server communication Other Stuff A closer look Your first RCP app in < 10 secs Important configuration file - MANIFEST.MF - · Defines OSGi bundle properties You said that already in the OSGi chapter .... Important configuration files - plugin.xml - · Defines extensions and extension points Extensions Extension Points Provide functionality to predefined slots (== extension points) Define places where others (== extensions) can provide functionality The building blocks SWT - Standard Widget Toolkit · Thin layer upon the native GUI libraries · JNI calls · Not a lot of convenient functionality JFace & Workbench · JFace ­ UI toolkit that provides helper classes for developing UI features ­ Makes SWT nicer but does not hide its complexity ­ Tables / TreeViewer / Dialogs / ­ Databinding · Workbench ­ multi-window environment ­ manages views, editors, perspectives Lets create a RCP app How did he do it? Excursus: Plug-in Spy · Find in Eclipse which parts you are looking at · Make coding analysis and re-use extremly easy · Shortcut Alt+Shift+F1 · Add org.eclipse.pde.runtime and org.eclipse.ui.forms as dependency to have Plugin Spy in your own RCP application Plugin Spy = Shortcut Alt+Shift+F1 Lars Vogel 4/22/2009 29 e4 ? Eclipse e4 Eclipse e4 is the incubator project which will produce the Eclipse 4.0 SDK Eclipse e4 Scope Make development for Eclipse easier Eclipse 3.x programming model · Complex · Lots of API · Platform functionality via singletons · Not easy to test · Not a consistent way to define the UI Eclipse e4 ­ Building blocks Modeled Workbench Rendering Engine Declarative Styling Dependecy Injection Context Core Services Summary Eclipse: Where to go from here: Eclipse Wiki http://wiki.eclipse.org/ Eclipse RCP Tutorial http://www.vogella.de/articles/RichClientPlatform/article.html Eclipse Plugin Development http://www.vogella.de/articles/EclipsePlugIn/article.html Eclipse e4 Tutorial http://www.vogella.de/articles/EclipseE4/article.html Photo credits · · · · · · · · · · · · · Clothes http://www.sxc.hu/photo/418618 Agenda http://www.sxc.hu/photo/1089869 Dotted guy http://www.sxc.hu/photo/1103660 RCP Definition http://www.sxc.hu/photo/930468 OSGI Defintion http://www.sxc.hu/photo/975495 Building block http://www.sxc.hu/photo/596908 Where to go http://www.sxc.hu/photo/448543 Hurt fingers http://www.sxc.hu/photo/906072 Police http://www.sxc.hu/photo/860421 API http://www.sxc.hu/photo/603920 Plugin vrs. bundles http://www.sxc.hu/photo/1010558 Manifst.mf http://www.sxc.hu/photo/764999 Structured vrs. chaos · · · · · · · · · · · · · · http://www.sxc.hu/photo/941292 Why RCP http://www.sxc.hu/photo/660438 Woman with phone http://www.sxc.hu/photo/485640 Funny guy http://www.sxc.hu/photo/1173019 Dependencies http://www.sxc.hu/photo/182575 Extension http://www.sxc.hu/photo/721092 Dog http://www.sxc.hu/photo/302062 Plugin spy http://www.sxc.hu/photo/130484 Lego http://www.sxc.hu/photo/338038 e4 target http://www.sxc.hu/photo/839037 Summary http://www.sxc.hu/photo/1184807 Question http://www.sxc.hu/photo/418215 Reading material http://www.sxc.hu/photo/406547 Thank you http://www.sxc.hu/photo/986313 Thank you For further questions: Lars.Vogel@gmail.com http://www.vogella.de http://www.twitter.com/vogella License & Acknowledgements · This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License ­ See http://creativecommons.org/licenses/by-ncnd/3.0/de/deed.en_US