72
Eclipse – State of the union - with a little, little focus on Linux Lars Vogel http:// www.vogella.de http://www.twitter.com /vogella

Eclipse Overview

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Eclipse Overview

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

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

– 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

Todays talk will be about Java and programming for and based on Eclipse

Page 5: Eclipse Overview

Eclipse is written in Java

in little pieces (plugins)

Page 6: Eclipse Overview

Mini-Agenda

The Eclipse Ecosystem

Eclipse and modularity

Eclipse Plugin and RCP

development

Eclipse 4.0 / Eclipse e4

Page 7: Eclipse Overview

The Eclipse Ecosystem

Page 8: Eclipse Overview

Successful Open Source Projects

Page 9: Eclipse Overview

Unlike other (successful) OpenSource Projects Eclipse has no mascot

This is NOT the animal representing Eclipse

Page 10: Eclipse Overview

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

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

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

Eclipse Foundation does not pay developers

Member companies and private persons develop the code

Page 15: Eclipse Overview

ALL MEMBERS

Page 16: Eclipse Overview

Members, there are 160 as of today.14 Strategic3 Enterprise74 Solutions69 Associate

Page 17: Eclipse Overview

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

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

Eclipse Download Statistics

Downloads bundle several projects

Page 20: Eclipse Overview

All Eclipse.org source code is released under the Eclipse Public License (EPL)

Page 21: Eclipse Overview

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

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

• 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

I use Eclipse for Kernel Development

* Quote complete made up by Lars

Page 25: Eclipse Overview

The modular architecture of Eclipse

Page 26: Eclipse Overview

Extensible Application - Firefox

Plugins The Browser

Page 27: Eclipse Overview

In Eclipse everything is a plugin (except the core runtime)

Runtime

Plugin

PluginPlugin

Plugin

Plugin

Page 28: Eclipse Overview

Platform vrs. Extensible Application

Runtime

Platform

Application

Extensible Application

Page 29: Eclipse Overview

Eclipse IDE

Runtime / Equinox (OSGi)SWT

JFace

Workbench

Resources

IDE personality

Help P2 Update Text Compare Debug Search Team/ cvs

Page 30: Eclipse Overview

Each Plugin defines its

available API

Page 31: Eclipse Overview

Each Plugin defines also its dependencies

Page 32: Eclipse Overview

Runtime (OSGi) makes sure the API contacts are

fulfilled

Page 33: Eclipse Overview

Plugin and RCP Development

Page 34: Eclipse Overview

Eclipse IDE

Your plugins

Page 35: Eclipse Overview

• 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

Extensions

Extension Points

Provide functionality to predefined slots (== extension points)

Define places where others (== extensions) can provide functionality

Page 37: Eclipse Overview

Eclipse extensibility is a little bit like Emacs, you can add easily functionality

But not in LISP

Page 38: Eclipse Overview

Eclipse RCP

Runtime / Equinox (OSGi)SWT

JFace

Workbench

Help P2 Update … … … … …

Page 39: Eclipse Overview

The future of Eclipse – Problems & Solutions

Page 40: Eclipse Overview

All Eclipse code must be free of IP problems

IP Due Dilligence take a lot of time

Page 41: Eclipse Overview

Eclipse.org moving to git (jgit)

Hope to enrich the ecosystem by making forking easy

Does Eclipse need a fork?

Page 42: Eclipse Overview

Eclipse.org moving towards git

Hope to enrich the ecosystem by making forking easy

Page 43: Eclipse Overview

Eclipse development got more and more complex over the years

Eclipse 4.0 (aka e4)

Developer Productivity

Page 44: Eclipse Overview

Eclipse 4.0

Page 45: Eclipse Overview

Eclipse e4 Scope

Targets development for Eclipse (plugins) or based on Eclipse (Eclipse RCP).

Page 46: Eclipse Overview

Eclipse e4 Targets

Make Eclipse development more effective and the result more visual appealing.

Page 47: Eclipse Overview

Eclipse e4 – Building blocks

Declarative Styling

Modeled Workbench

Rendering Engine

Dependecy Injection

IEclipseContext

Core Services

Page 48: Eclipse Overview

The Modeled Workbench

Page 49: Eclipse Overview

• 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

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

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

Parts in Eclipse 4.0

Plain Old Java Objects (POJO‘s)

Page 53: Eclipse Overview

Inheriance Hierachy of Views Parts before Eclipse 4.0

VIEW

VIEWPART

WORKBENCHPART

EVENTMANAGER

OBJECT

Page 54: Eclipse Overview

Model available at runtime

Page 55: Eclipse Overview

© 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

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

Renderer: flexible but complex

Page 58: Eclipse Overview

e4 CSS Styling

Page 59: Eclipse Overview

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

New Look & Feel for Eclipse e4 – SDK

https://bugs.eclipse.org/bugs/show_bug.cgi?id=293481

Page 61: Eclipse Overview

The e4 Programming Model

Page 62: Eclipse Overview

Dependency Injection

• Inversion of control: The necessary functionality is injected into the class

Java

Class

Page 63: Eclipse Overview

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

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

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

OpenSocial Gadgets

Page 67: Eclipse Overview

OpenSocial Gadgets in Eclipse

Page 68: Eclipse Overview

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

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
Page 71: Eclipse Overview

Thank you

For further questions:

[email protected]://www.vogella.dehttp://www.twitter.com/vogella

Page 72: Eclipse Overview

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