Eclipse Overview

13,165 views

Published on

Overview about the Eclipse foundation, Plugin and RCP development and Eclipse e4.

0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
13,165
On SlideShare
0
From Embeds
0
Number of Embeds
6,148
Actions
Shares
0
Downloads
205
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Eclipse Overview

  1. 1. Eclipse – State of the union- with a little, little focus on Linux<br />Lars Vogel<br />http://www.vogella.de<br />http://www.twitter.com/vogella<br />
  2. 2. Lars Vogel<br />Working for SAP AG as a product manager<br />Privately contributing to in the Java and Eclipse ecosystem<br />Publish programming tutorials on http://www.vogella.de<br />Who am I ?<br />
  3. 3. I used to use Linux / Unix quite a bit but this a while ago<br />Emacs and KDE rules!<br />My server for http://www.vogella.de runs on Ubuntu <br />I still think that the command line is cool<br />Me and Linux<br />
  4. 4. Todays talk will be about Java and programming for and based on Eclipse<br />
  5. 5. Eclipse is written in Javain little pieces (plugins)<br />
  6. 6. Mini-Agenda <br />The Eclipse Ecosystem<br />Eclipse and modularity<br />Eclipse Plugin and RCP development<br />Eclipse 4.0 / Eclipse e4<br />
  7. 7. The Eclipse Ecosystem<br />
  8. 8. Successful Open Source Projects<br />
  9. 9. Unlike other (successful) OpenSource Projects Eclipse has no mascot<br />This is NOT the animal representing Eclipse<br />
  10. 10. Impact<br />Eclipse – History Book<br />Very disruptive for the pay IDE <br />Eclipse is a vendor independent Open Source Project<br />Nov. 2001 – Code released as <br />Open Source, still lead by companies<br />Febr. 2004 – Eclipse Foundation created <br />
  11. 11. Impact<br />Eclipse – History Book<br />Start of Eclipse as a platform, e.g. NASA starts using Eclipse for it‘s Mars mission<br />Market leader with a strong ecosystem<br />Re-gain innovation speed<br />Juni 2004 – Eclipse 3.0 based <br />on OSGi and enables Eclipse <br />RCP <br />2010 - Current Eclipse 3.5.2 <br />(aka Ganymede)<br />06.2010 Release of Eclipse 3.6<br />07.2010 Planned first release of Eclipse 4.0<br />
  12. 12. Eclipse Foundation <br />The Eclipse Foundation is a not-for-profit, member supported corporation that hosts the Eclipse projects and helps cultivate both an open source community and an ecosystem of complementary products and services.<br />
  13. 13. Eclipse Foundation does not pay developers<br />Member companies and private persons develop the code<br />
  14. 14. STRATEGIC MEMBERS<br />
  15. 15. ALL MEMBERS<br />
  16. 16. Members, there are 160 as of today.<br />14 Strategic<br />3 Enterprise<br />74 Solutions<br />69 Associate<br />
  17. 17. Eclipse Projects<br />Over 100 Eclipse projects<br />Originally very IDE focused but start getting divers<br />http://www.eclipse.org/projects/listofprojects.php <br />
  18. 18. CDT <br />C and C++ development<br />JDT <br />Java Development Tools<br />and much, much more…<br />Egit<br />Git with Java<br />PHP<br />Runtime<br />Equinox (OSGi)<br />RAP<br />…<br />WebtoolsPlatform<br />JSF <br />JPA<br />Webservices<br />HTML<br />JavaScript<br />PDE <br />Plugin Development Tools<br />
  19. 19. Eclipse Download Statistics<br />Downloads bundle several projects<br />
  20. 20. All Eclipse.org source code is released under the Eclipse Public License (EPL)<br />
  21. 21. EPL is business friendly<br />Do what you want with the code<br />Modification of the original code must be contributed back <br />NOT viral like the GPL which companies like<br />
  22. 22. 22<br />Eclipse & third parties<br />Google<br />GWT<br />Google App Engine<br />Android Dev tools<br />ZEND<br />PHP Studio <br />IBM<br />Webspere<br />Jazz<br />And many more<br />
  23. 23. The Eclipse community<br />Very welcoming<br />Eclipse forums<br />PlanetEclipse.org<br />#eclipse at IRC<br />Seems to be individual driven rather then company driven<br />
  24. 24. I use Eclipse for Kernel Development<br />* Quote complete made up by Lars<br />
  25. 25. The modular architecture of Eclipse<br />
  26. 26. Extensible Application - Firefox<br />Plugins<br />The Browser<br />
  27. 27. In Eclipse everything is a plugin (except the core runtime)<br />Plugin<br />Plugin<br />Plugin<br />Plugin<br />Plugin<br />Runtime <br />
  28. 28. Platformvrs. Extensible Application<br />Platform<br />Extensible Application<br />Application<br />Runtime<br />
  29. 29. Eclipse IDE<br />Help<br />P2 Update<br />Text<br />Compare<br />Debug<br />Search<br />Team/ cvs<br />IDE personality<br />Workbench<br />Resources<br />JFace<br />Runtime / Equinox (OSGi)<br />SWT<br />
  30. 30. Each Plugin defines its available API<br />
  31. 31. Each Plugin defines also its dependencies<br />
  32. 32. Runtime (OSGi) makes sure the API contacts are fulfilled<br />
  33. 33. Plugin and RCP Development<br />
  34. 34. Your plugins<br />Eclipse IDE<br />
  35. 35. MANIFEST.MF – Defines OSGi bundle<br />plugin.xml – Defines Eclipse extensions and extension points<br />PDE (Plug-in Development Environement) provides editors for these files.<br />Configuration files<br />
  36. 36. Extensions <br />Extension Points<br />Provide functionality to predefined slots (== extension points)<br />Define places where others (== extensions) can provide functionality<br />
  37. 37. Eclipse extensibility is a little bit like Emacs, you can add easily functionality<br />But not in LISP <br />
  38. 38. Thin layer upon the native GUI libraries <br />JNI calls<br />Not a lot of convenient functionality<br />SWT - Standard Widget Toolkit<br />Example Gnome GTK+ for Linux<br />*Screenshot from the Internet<br />
  39. 39. Eclipse RCP<br />Help<br />P2 Update<br />…<br />…<br />…<br />…<br />…<br />…<br />Workbench<br />…<br />JFace<br />Runtime / Equinox (OSGi)<br />SWT<br />
  40. 40. JFace<br />UI toolkit that provides helper classes for developing UI features<br />Tables / TreeViewer / Dialogs / <br />Can be based on models<br />Databinding<br />Workbench <br />multi-window environment <br />manages views, editors, perspectives  <br />JFace & Workbench<br />
  41. 41. Viewer: Table / Treeviewer: Responsible for the UI<br />LabelProvider: How is the domain model represented<br />ModelProvider: Delivery the domain model<br />ViewerSorter: Sorts values in the viewer<br />ViewerFilter: Filters values<br />Example: JFace Viewer<br />ContentProvider – <br />„Dao“ for viewer <br />LabelProvider – <br />Which data is represented how<br />Viewer – <br />UI, shows data<br />
  42. 42. The future of Eclipse – Problems & Solutions <br />
  43. 43. All Eclipse code must be free of IP problems<br />IP Due Dilligence take a lot of time<br />
  44. 44. Eclipse.org moving to git (jgit)<br />Does Eclipse need a fork?<br />Hope to enrich the ecosystem by making forking easy<br />
  45. 45. Eclipse.org moving towards git<br />Hope to enrich the ecosystem by making forking easy<br />
  46. 46. Eclipse development got more and more complex over the years<br /><ul><li> Eclipse 4.0 (aka e4)</li></ul>Developer Productivity<br />
  47. 47. Eclipse 4.0<br />
  48. 48. Eclipse e4 Scope<br />Targets developmentfor Eclipse (plugins) or based on Eclipse (Eclipse RCP).<br />
  49. 49. Eclipse e4 Targets<br />Make Eclipse development more effective and the result more visual appealing.<br />
  50. 50. Eclipse e4 – Building blocks<br />Declarative Styling<br />Rendering Engine<br />Modeled Workbench<br />Dependecy Injection<br />IEclipseContext<br />Core Services<br />
  51. 51. The Modeled Workbench<br />
  52. 52. Eclipse 4.0 Application model<br />Models the Application (UI) and the behavior (commands)<br />EMF based<br />Modeled Workbench<br />Content of the view not part of the e4 model<br />
  53. 53. The e4 Workbench Model<br />Each application has it‘s live model<br />Workbench window <br />Menu with menu items <br />Window Trim, e.g. toolbar with toolbar items <br />Parts Sash Container<br />Parts<br />Part Stack (CTabFolder)<br />Parts<br />Handlers<br />Key Bindings<br />Commands<br />
  54. 54. Model is Flexible<br />No distinction between View and Editor<br />Perspectives are optional<br />Stack / Sash are optional<br />Several windows easily possible<br />Flexible Toolbars <br />
  55. 55. Parts in Eclipse 4.0<br />Plain Old Java Objects (POJO‘s)<br />
  56. 56. InherianceHierachy of Views Parts before Eclipse 4.0<br />Object<br />EventManager<br />WorkbenchPart<br />ViewPart<br />View<br />
  57. 57. Model available at runtime<br />
  58. 58. How is this model translated into UI components?<br />© Lars Vogel and others, Licensed under Creative Commons by-nc-nd-3.0 (de) <br />
  59. 59. Widget Renderer<br />Each UI elements gets a renderer <br />Renderer manage Lifecycle of the UI-Element<br />Creation<br />Model to widget binding<br />Rendering<br />Disposal<br />
  60. 60. Renderer: flexible but complex<br />
  61. 61. e4 CSS Styling<br />
  62. 62. Eclipse3.X - IDE feeling<br />Eclipse e4 – CSS Styling<br />Example from Kai Toedter<br />Some elements cannot currently not be styled:<br /><ul><li> Menu bar background
  63. 63. Table headers </li></ul>e4 supports theme switching during runtime<br />
  64. 64. New Look & Feel for Eclipse e4 – SDK <br />https://bugs.eclipse.org/bugs/show_bug.cgi?id=293481<br />
  65. 65. The e4 Programming Model<br />
  66. 66. Dependency Injection<br />Inversion of control: The necessary functionality is injected into the class<br />Java Class<br />
  67. 67. Dependency Injection in e4<br />JSR 330 compatible injection implementation<br />@javax.inject.Inject – Field, Constructor and Method injection<br />@javax.inject.Named – Specify a custom qualifier to context object (default is fully qualified classname of the injected type)<br />e4 specific annotations, e.g. @Optional <br />
  68. 68. Java Class<br /> Services are injected via the the e4 framework<br />publicclassListView {<br /> @Inject<br /> privateIEclipseContextcontext;<br />@Inject<br /> private Loggerlogger;<br /> @Inject<br /> publicListView(Composite parent) {<br />// ...<br />
  69. 69. Eclipse and the web<br />Eclipse e4 targets to bring the Eclipse IDE closer to the web<br />One way would be to run Eclipse in the web, e.g. via Eclipse RAP<br />Another way would be to run the web inside Eclipse <br />
  70. 70. OpenSocial Gadgets<br />
  71. 71. OpenSocial Gadgets in Eclipse<br />
  72. 72. Photo credits<br />Not the Eclipse mascot http://www.sxc.hu/photo/666565<br />Blue Sky with corn: http://www.sxc.hu/photo/570500<br />Headless business man http://www.sxc.hu/photo/713927<br />Money http://www.sxc.hu/photo/767230<br />Old Book http://www.sxc.hu/photo/1273173<br />Plug 1 http://www.sxc.hu/photo/603920<br />Plug 2 http://www.sxc.hu/photo/182575<br />USB Plug http://www.sxc.hu/photo/951745<br />Lots of Plugs http://www.sxc.hu/photo/721092<br />Police 1 http://www.sxc.hu/photo/860421<br />Police 2 http://www.sxc.hu/photo/596144<br />Boy in the water http://www.sxc.hu/photo/1022035<br />Eye with the world in them http://www.sxc.hu/photo/928425<br />Electronic parts http://www.sxc.hu/photo/643720<br />Snail 1 http://www.sxc.hu/photo/1181451<br />Snail 2 http://www.sxc.hu/photo/1181452<br />Fork http://www.sxc.hu/photo/1186818<br />Hammer http://www.sxc.hu/photo/604247<br />Corn http://www.sxc.hu/photo/939151<br /><ul><li>Thinking man http://www.sxc.hu/photo/324541
  73. 73. Chess http://www.sxc.hu/photo/958410
  74. 74. Pill box http://www.sxc.hu/photo/510413
  75. 75. Under construction http://www.sxc.hu/photo/ 1268302
  76. 76. Singleton: http://www.sxc.hu/photo/ 988381
  77. 77. Thank you picture http://www.sxc.hu/photo/ 986313
  78. 78. Runtime model http://www.sxc.hu/photo/ 765733
  79. 79. Screws http://www.sxc.hu/photo/1148064
  80. 80. House with compartments http://www.sxc.hu/photo/494103
  81. 81. Stacked stones http://www.sxc.hu/photo/998524
  82. 82. Thinking Guy http://www.sxc.hu/photo/130484
  83. 83. Drawing Hand http://www.sxc.hu/photo/264208
  84. 84. Waiter http://www.sxc.hu/photo/157966
  85. 85. Syringe / Injection: http://www.sxc.hu/photo/ 468493
  86. 86. Smiley http://www.sxc.hu/photo/ 1211480
  87. 87. Lock http://www.sxc.hu/photo/ 352344
  88. 88. Life Cycle http://www.sxc.hu/photo/ 1265027</li></li></ul><li>Eclipse: Where to go from here:<br />Eclipse Wiki<br />http://wiki.eclipse.org/<br />Eclipse Plugin Development <br /> http://www.vogella.de/articles/EclipsePlugIn/article.html<br />Eclipse RCP Tutorial<br />http://www.vogella.de/articles/RichClientPlatform/article.html<br />Eclipse e4 Tutorial<br />http://www.vogella.de/articles/EclipseE4/article.html<br />Eclipse e4 Whitepaper <br />http://www.eclipse.org/e4/resources/e4-whitepaper.php<br />
  89. 89.
  90. 90. Thank you<br />For further questions:<br />Lars.Vogel@gmail.com<br />http://www.vogella.de<br />http://www.twitter.com/vogella<br />
  91. 91. License & Acknowledgements<br />This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License<br />See http://creativecommons.org/licenses/by-nc-nd/3.0/de/deed.en_US<br />

×