Eclipse Overview

Post on 15-May-2015

5.743 views 0 download

Tags:

description

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

Transcript of Eclipse Overview

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

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

Thank you

For further questions:

Lars.Vogel@gmail.comhttp://www.vogella.dehttp://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-nc-nd/3.0/de/deed.en_US