eclipse overview
DESCRIPTION
Overview about the Eclipse foundation, Plugin and RCP development and Eclipse e4.TRANSCRIPT
Eclipse – State of the union - with a little, little focus on Linux
Lars Vogelhttp://www.vogella.dehttp://www.twitter.com/vogella
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 ?
– 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
Todays talk will be about Java and programming for and based on Eclipse
Eclipse is written in Java
in little pieces (plugins)
Mini-Agenda
The Eclipse Ecosystem
Eclipse and modularity
Eclipse Plugin and RCP
development
Eclipse 4.0 / Eclipse e4
The Eclipse Ecosystem
Successful Open Source Projects
Unlike other (successful) OpenSource Projects Eclipse has no mascot
This is NOT the animal representing Eclipse
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
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
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.
Eclipse Foundation does not pay developers
Member companies and private persons develop the code
STRATEGIC MEMBERS
ALL MEMBERS
Members, there are 160 as of today.14 Strategic3 Enterprise74 Solutions69 Associate
Eclipse Projects
• Over 100 Eclipse projects• Originally very IDE focused but start getting divers
• http://www.eclipse.org/projects/listofprojects.php
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
Eclipse Download Statistics
Downloads bundle several projects
All Eclipse.org source code is released under the Eclipse Public License (EPL)
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
22
• Google– GWT– Google App Engine– Android Dev tools
• ZEND– PHP Studio
• IBM– Webspere– Jazz
• And many more
Eclipse & third parties
• Very welcoming– Eclipse forums– PlanetEclipse.org– #eclipse at IRC
• Seems to be individual driven rather then company driven
The Eclipse community
I use Eclipse for Kernel Development
* Quote complete made up by Lars
The modular architecture of Eclipse
Extensible Application - Firefox
Plugins The Browser
In Eclipse everything is a plugin (except the core runtime)
Runtime
Plugin
PluginPlugin
Plugin
Plugin
Platform vrs. Extensible Application
Runtime
Platform
Application
Extensible Application
Eclipse IDE
Runtime / Equinox (OSGi)SWT
JFace
Workbench
Resources
IDE personality
Help P2 Update Text Compare Debug Search Team/ cvs
Each Plugin defines its
available API
Each Plugin defines also its dependencies
Runtime (OSGi) makes sure the API contacts are
fulfilled
Plugin and RCP Development
Eclipse IDE
Your plugins
• 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
Extensions
Extension Points
Provide functionality to predefined slots (== extension points)
Define places where others (== extensions) can provide functionality
Eclipse extensibility is a little bit like Emacs, you can add easily functionality
But not in LISP
Eclipse RCP
Runtime / Equinox (OSGi)SWT
JFace
Workbench
…
…
Help P2 Update … … … … …
The future of Eclipse – Problems & Solutions
All Eclipse code must be free of IP problems
IP Due Dilligence take a lot of time
Eclipse.org moving to git (jgit)
Hope to enrich the ecosystem by making forking easy
Does Eclipse need a fork?
Eclipse.org moving towards git
Hope to enrich the ecosystem by making forking easy
Eclipse development got more and more complex over the years
Eclipse 4.0 (aka e4)
Developer Productivity
Eclipse 4.0
Eclipse e4 Scope
Targets development for Eclipse (plugins) or based on Eclipse (Eclipse RCP).
Eclipse e4 Targets
Make Eclipse development more effective and the result more visual appealing.
Eclipse e4 – Building blocks
Declarative Styling
Modeled Workbench
Rendering Engine
Dependecy Injection
IEclipseContext
Core Services
The Modeled Workbench
• 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
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
Model is FlexibleNo distinction between View and Editor
Perspectives are optional
Stack / Sash are optional
Several windows easily possible
Flexible Toolbars
Parts in Eclipse 4.0
Plain Old Java Objects (POJO‘s)
Inheriance Hierachy of Views Parts before Eclipse 4.0
VIEW
VIEWPART
WORKBENCHPART
EVENTMANAGER
OBJECT
Model available at runtime
© Lars Vogel and others, Licensed under Creative Commons by-nc-nd-3.0 (de)
How is this model translated into UI components?
Widget Renderer
• Each UI elements gets a renderer • Renderer manage Lifecycle of the UI-Element
– Creation– Model to widget binding– Rendering– Disposal
Renderer: flexible but complex
e4 CSS Styling
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
New Look & Feel for Eclipse e4 – SDK
https://bugs.eclipse.org/bugs/show_bug.cgi?id=293481
The e4 Programming Model
Dependency Injection
• Inversion of control: The necessary functionality is injected into the class
Java
Class
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
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
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
OpenSocial Gadgets
OpenSocial Gadgets in Eclipse
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
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
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