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