Eclipse Overview
-
Upload
lars-vogel -
Category
Documents
-
view
5.742 -
download
0
description
Transcript of Eclipse Overview
![Page 1: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/1.jpg)
Eclipse – State of the union - with a little, little focus on Linux
Lars Vogelhttp://www.vogella.dehttp://www.twitter.com/vogella
![Page 2: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/2.jpg)
Lars Vogel
– Working for SAP AG as a product manager– Privately contributing to in the Java and Eclipse
ecosystem– Publish programming tutorials on
http://www.vogella.de
Who am I ?
![Page 3: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/3.jpg)
– I used to use Linux / Unix quite a bit but this a while ago
– Emacs and KDE rules!– My server for
http://www.vogella.de runs on Ubuntu
– I still think that the command line is cool
Me and Linux
![Page 4: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/4.jpg)
Todays talk will be about Java and programming for and based on Eclipse
![Page 5: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/5.jpg)
Eclipse is written in Java
in little pieces (plugins)
![Page 6: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/6.jpg)
Mini-Agenda
The Eclipse Ecosystem
Eclipse and modularity
Eclipse Plugin and RCP
development
Eclipse 4.0 / Eclipse e4
![Page 7: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/7.jpg)
The Eclipse Ecosystem
![Page 8: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/8.jpg)
Successful Open Source Projects
![Page 9: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/9.jpg)
Unlike other (successful) OpenSource Projects Eclipse has no mascot
This is NOT the animal representing Eclipse
![Page 10: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/10.jpg)
Eclipse – History Book
Nov. 2001 – Code released as Open Source, still lead by companies
Febr. 2004 – Eclipse Foundation created
Very disruptive for the pay IDE
Eclipse is a vendor independent Open Source Project
Impact
![Page 11: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/11.jpg)
Eclipse – History Book
Juni 2004 – Eclipse 3.0 based on OSGi and enables Eclipse RCP
2010 - Current Eclipse 3.5.2 (aka Ganymede)
06.2010 Release of Eclipse 3.6
07.2010 Planned first release of Eclipse 4.0
Start of Eclipse as a platform, e.g. NASA starts using Eclipse for it‘s Mars mission
Market leader with a strong ecosystem
Re-gain innovation speed
Impact
![Page 12: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/12.jpg)
Eclipse Foundation
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.
![Page 13: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/13.jpg)
Eclipse Foundation does not pay developers
Member companies and private persons develop the code
![Page 14: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/14.jpg)
STRATEGIC MEMBERS
![Page 15: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/15.jpg)
ALL MEMBERS
![Page 16: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/16.jpg)
Members, there are 160 as of today.14 Strategic3 Enterprise74 Solutions69 Associate
![Page 17: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/17.jpg)
Eclipse Projects
• Over 100 Eclipse projects• Originally very IDE focused but start getting divers
• http://www.eclipse.org/projects/listofprojects.php
![Page 18: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/18.jpg)
and much, much more…
CDT C and C++
development
JDT Java
Development Tools
PHP
RuntimeEquinox (OSGi)RAP…
PDE Plugin Development
Tools
Webtools PlatformJSF JPA
WebservicesHTML
JavaScript
EgitGit with Java
![Page 19: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/19.jpg)
Eclipse Download Statistics
Downloads bundle several projects
![Page 20: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/20.jpg)
All Eclipse.org source code is released under the Eclipse Public License (EPL)
![Page 21: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/21.jpg)
EPL is business friendly
Do what you want with the code
Modification of the original code must be contributed back
NOT viral like the GPL which companies like
![Page 22: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/22.jpg)
22
• Google– GWT– Google App Engine– Android Dev tools
• ZEND– PHP Studio
• IBM– Webspere– Jazz
• And many more
Eclipse & third parties
![Page 23: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/23.jpg)
• Very welcoming– Eclipse forums– PlanetEclipse.org– #eclipse at IRC
• Seems to be individual driven rather then company driven
The Eclipse community
![Page 24: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/24.jpg)
I use Eclipse for Kernel Development
* Quote complete made up by Lars
![Page 25: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/25.jpg)
The modular architecture of Eclipse
![Page 26: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/26.jpg)
Extensible Application - Firefox
Plugins The Browser
![Page 27: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/27.jpg)
In Eclipse everything is a plugin (except the core runtime)
Runtime
Plugin
PluginPlugin
Plugin
Plugin
![Page 28: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/28.jpg)
Platform vrs. Extensible Application
Runtime
Platform
Application
Extensible Application
![Page 29: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/29.jpg)
Eclipse IDE
Runtime / Equinox (OSGi)SWT
JFace
Workbench
Resources
IDE personality
Help P2 Update Text Compare Debug Search Team/ cvs
![Page 30: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/30.jpg)
Each Plugin defines its
available API
![Page 31: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/31.jpg)
Each Plugin defines also its dependencies
![Page 32: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/32.jpg)
Runtime (OSGi) makes sure the API contacts are
fulfilled
![Page 33: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/33.jpg)
Plugin and RCP Development
![Page 34: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/34.jpg)
Eclipse IDE
Your plugins
![Page 35: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/35.jpg)
• MANIFEST.MF – Defines OSGi bundle• plugin.xml – Defines Eclipse extensions and
extension points
• PDE (Plug-in Development Environement) provides editors for these files.
Configuration files
![Page 36: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/36.jpg)
Extensions
Extension Points
Provide functionality to predefined slots (== extension points)
Define places where others (== extensions) can provide functionality
![Page 37: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/37.jpg)
Eclipse extensibility is a little bit like Emacs, you can add easily functionality
But not in LISP
![Page 38: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/38.jpg)
Eclipse RCP
Runtime / Equinox (OSGi)SWT
JFace
Workbench
…
…
Help P2 Update … … … … …
![Page 39: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/39.jpg)
The future of Eclipse – Problems & Solutions
![Page 40: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/40.jpg)
All Eclipse code must be free of IP problems
IP Due Dilligence take a lot of time
![Page 41: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/41.jpg)
Eclipse.org moving to git (jgit)
Hope to enrich the ecosystem by making forking easy
Does Eclipse need a fork?
![Page 42: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/42.jpg)
Eclipse.org moving towards git
Hope to enrich the ecosystem by making forking easy
![Page 43: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/43.jpg)
Eclipse development got more and more complex over the years
Eclipse 4.0 (aka e4)
Developer Productivity
![Page 44: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/44.jpg)
Eclipse 4.0
![Page 45: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/45.jpg)
Eclipse e4 Scope
Targets development for Eclipse (plugins) or based on Eclipse (Eclipse RCP).
![Page 46: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/46.jpg)
Eclipse e4 Targets
Make Eclipse development more effective and the result more visual appealing.
![Page 47: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/47.jpg)
Eclipse e4 – Building blocks
Declarative Styling
Modeled Workbench
Rendering Engine
Dependecy Injection
IEclipseContext
Core Services
![Page 48: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/48.jpg)
The Modeled Workbench
![Page 49: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/49.jpg)
• Models the Application (UI) and the behavior (commands)
• EMF based
Eclipse 4.0 Application model
Modeled Workbench
Content of the view not part of
the e4 model
![Page 50: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/50.jpg)
The e4 Workbench ModelEach application has it‘s live model
• Workbench window – Menu with menu items – Window Trim, e.g. toolbar
with toolbar items – Parts Sash Container
• Parts
– Part Stack (CTabFolder)• Parts
– Handlers– Key Bindings– Commands
![Page 51: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/51.jpg)
Model is FlexibleNo distinction between View and Editor
Perspectives are optional
Stack / Sash are optional
Several windows easily possible
Flexible Toolbars
![Page 52: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/52.jpg)
Parts in Eclipse 4.0
Plain Old Java Objects (POJO‘s)
![Page 53: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/53.jpg)
Inheriance Hierachy of Views Parts before Eclipse 4.0
VIEW
VIEWPART
WORKBENCHPART
EVENTMANAGER
OBJECT
![Page 54: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/54.jpg)
Model available at runtime
![Page 55: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/55.jpg)
© Lars Vogel and others, Licensed under Creative Commons by-nc-nd-3.0 (de)
How is this model translated into UI components?
![Page 56: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/56.jpg)
Widget Renderer
• Each UI elements gets a renderer • Renderer manage Lifecycle of the UI-Element
– Creation– Model to widget binding– Rendering– Disposal
![Page 57: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/57.jpg)
Renderer: flexible but complex
![Page 58: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/58.jpg)
e4 CSS Styling
![Page 59: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/59.jpg)
Eclipse 3.X - IDE feeling Eclipse e4 – CSS Styling
Example from Kai Toedter
Some elements cannot currently not be styled:
• Menu bar background• Table headers
e4 supports theme switching during runtime
![Page 60: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/60.jpg)
New Look & Feel for Eclipse e4 – SDK
https://bugs.eclipse.org/bugs/show_bug.cgi?id=293481
![Page 61: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/61.jpg)
The e4 Programming Model
![Page 62: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/62.jpg)
Dependency Injection
• Inversion of control: The necessary functionality is injected into the class
Java
Class
![Page 63: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/63.jpg)
Dependency Injection in e4
• JSR 330 compatible injection implementation– @javax.inject.Inject – Field, Constructor and
Method injection– @javax.inject.Named – Specify a custom qualifier
to context object (default is fully qualified classname of the injected type)
• e4 specific annotations, e.g. @Optional
![Page 64: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/64.jpg)
public class ListView {
@Inject private IEclipseContext context; @Inject private Logger logger;
@Inject public ListView(Composite parent)
{ // ...
Services are injected via the the e4 framework
Java
Class
![Page 65: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/65.jpg)
Eclipse and the web
• Eclipse e4 targets to bring the Eclipse IDE closer to the web• One way would be to run Eclipse in the web, e.g. via Eclipse
RAP• Another way would be to run the web inside Eclipse
![Page 66: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/66.jpg)
OpenSocial Gadgets
![Page 67: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/67.jpg)
OpenSocial Gadgets in Eclipse
![Page 68: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/68.jpg)
Photo credits• Not the Eclipse mascot
http://www.sxc.hu/photo/666565• Blue Sky with corn:
http://www.sxc.hu/photo/570500• Headless business man
http://www.sxc.hu/photo/713927• Money http://www.sxc.hu/photo/767230• Old Book http://www.sxc.hu/photo/1273173• Plug 1 http://www.sxc.hu/photo/603920• Plug 2 http://www.sxc.hu/photo/182575• USB Plug http://www.sxc.hu/photo/951745• Lots of Plugs
http://www.sxc.hu/photo/721092• Police 1 http://www.sxc.hu/photo/860421• Police 2 http://www.sxc.hu/photo/596144• Boy in the water
http://www.sxc.hu/photo/1022035• Eye with the world in them
http://www.sxc.hu/photo/928425• Electronic parts
http://www.sxc.hu/photo/643720• Snail 1 http://www.sxc.hu/photo/1181451• Snail 2 http://www.sxc.hu/photo/1181452• Fork http://www.sxc.hu/photo/1186818• Hammer http://www.sxc.hu/photo/604247• Corn http://www.sxc.hu/photo/939151
• Thinking man http://www.sxc.hu/photo/324541
• Chess http://www.sxc.hu/photo/958410• Pill box http://www.sxc.hu/photo/510413• Under construction
http://www.sxc.hu/photo/ 1268302• Singleton: http://www.sxc.hu/photo/
988381• Thank you picture http://www.sxc.hu/photo/
986313• Runtime model http://www.sxc.hu/photo/
765733• Screws http://www.sxc.hu/photo/1148064• House with compartments
http://www.sxc.hu/photo/494103• Stacked stones
http://www.sxc.hu/photo/998524• Thinking Guy
http://www.sxc.hu/photo/130484• Drawing Hand
http://www.sxc.hu/photo/264208• Waiter http://www.sxc.hu/photo/157966• Syringe / Injection:
http://www.sxc.hu/photo/ 468493• Smiley http://www.sxc.hu/photo/ 1211480• Lock http://www.sxc.hu/photo/ 352344• Life Cycle http://www.sxc.hu/photo/
1265027
![Page 69: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/69.jpg)
Eclipse: Where to go from here:
Eclipse Wikihttp://wiki.eclipse.org/
Eclipse Plugin Development http://www.vogella.de/articles/EclipsePlugIn/article.html
Eclipse RCP Tutorialhttp://www.vogella.de/articles/RichClientPlatform/article.html
Eclipse e4 Tutorialhttp://www.vogella.de/articles/EclipseE4/article.html
Eclipse e4 Whitepaper http://www.eclipse.org/e4/resources/e4-whitepaper.php
![Page 70: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/70.jpg)
![Page 72: Eclipse Overview](https://reader036.fdocuments.net/reader036/viewer/2022062303/55561ab4d8b42a3f168b5440/html5/thumbnails/72.jpg)
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-nc-nd/3.0/de/deed.en_US