SlideShare a Scribd company logo
Eclipse 4.0
   and e4


Chris Aniszczyk
Principal Software Engineer
zx@redhat.com
http://aniszczyk.org
http://twitter.com/caniszczyk
Howdy!
• Hack Eclipse/OSGi/Git
• Evangelist at Red Hat
• Involved heavily at Eclipse
  – Eclipse Foundation Board of Directors
  – Co-lead PDE and EGit
• Hacking on open source for a decade
  – Gentoo Linux, Eclipse, Fedora...
• I like running (5K @ ~18min)
Agenda

Why e4?

Eclipse 3.X and e4
                  l
e4 workbench mode

Styling and Services

Compatibility Layer

 Conclusion and Q&A
Lexicon
e4 is an Eclipse.org project for
platform-related incubation, it’s not a
product!

Eclipse 4.0 is a release that contains
some technology from the e4 project
Why e4?
• Innovate or become irrelevant
• Use e4 technologies as a
  basis for Eclipse 4.X (some
  will show up in the 3.x
  stream)
• Engage the open source
  community
• Build a better Eclipse
   – Make it more flexible
   – Prepare for the web
   – Dynamic languages
   – Fix our mistakes
Eclipse Competition...
Why change?



“We’ve already built all our plug-ins.

The most important thing is
                     don’t break us.”



                           (Yes, there is a compatibility layer.)
Eclipse is mature and huge...




                            8
Foundations need to evolve...
   Eclipse Competition...




           Francois Schnell, http://www.flickr.com/photos/frenchy/30217773/
Eclipse 4.0 SDK
Early Adopter Release
       July 2010
11
12
e4 Example
Applications
So, what’s wrong with
Eclipse 3.X?
Problems with Eclipse 3.x

• Complex
• Lots of API
• Platform functionality
  via singletons
• Not easy to test
• Not a consistent way to
  define the UI
• UI makes assumptions,
  e.g. Editors / Views
• Easy Skinning

• The browser is more
  powerful now... RIAs...
If only Eclipse application
development would be
easier...




                              8
Eclipse e4 – Building blocks
        Declarative Styling



          Rendering Engine


             Modeled Workbench


                    Dependency Injection


                IEclipseContext


             Core Services
The Modeled Workbench
The e4 Workbench Model
Each application has its live model... think of the browser DOM...



                                                • Built using EMF
                                                • 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
The Model is Flexible
No distinction between View/ Editor

Perspectives are optional

Stack / Sash are optional

Several windows easily possible

Flexible Toolbars
Parts in e4


Plain Old Java Objects
(POJO‘s)
Before e4... inheritance ruled...




OBJECT



    EVENTMANAGER



         WORKBENCHPART

                   VIEWPART

                              VIEW
How is this model
translated into UI
components?
Model and UI Renderers
Model

              I don’t care
             who draws me




            • The Workbench model
              is independent of a
              specific UI toolkit
Renderers
Renderer Factory

Eclipse default is the
SWT Renderer

Can be selected at
Startup via parameter
Renderers
Renderer Factory                          Widget Renderer




                      Returns for every
                      model element
Widget Renderer
• Each UI elements gets a renderer
• Renderer manage Lifecycle of the UI-
  Element
  – Creation
  – Model to widget binding
  – Rendering
  – Disposal
e4 and Styling
Styling in Eclipse 3.x

• UI styling via
  – The Presentation API
  – Custom Widgets
• Very limited
In reality all
RCP apps look
like the an IDE
Eclipse 3.X - IDE                             Eclipse e4 – CSS Styling
feeling




 Example from Kai Toedter

 Some elements cannot currently not be styled:

 • Menu bar background
 • Table headers

 e4 supports theme switching during runtime
How to enable CSS Styling
Property "applicationCSS” in extension point
  org.eclipse.core.runtime.products

<extension
   id="product"
   point="org.eclipse.core.runtime.products">
   <product
     application="org.eclipse.e4.ui.workbench.swt.application"
     name="E4 Contacs Demo">
     <property
        name="applicationCSS"
        value="platform:/plugin/contacts/css/dark.css">
     </property>
   </product>
</extension>
Example CSS
Label {
   font: Verdana 8px;
   color: rgb(240, 240, 240);
}

Table {
   background-color: gradient radial #575757 #101010 100%;
   color: rgb(240, 240, 240);
   font: Verdana 8px;
}

ToolBar {
   background-color: #777777 #373737 #202020 50% 50%;
   color: white;
   font: Verdana 8px;
}
Assign custom attributes
• Java

  Label label =
     new Label(parent, SWT.NONE);
  label.setData("org.eclipse.e4.ui.css.id",
                   "SeparatorLabel");

• CSS
  #SeparatorLabel {
      color: #f08d00;
  }
The e4 Programming
       Model
Dependency Injection
• Inversion of control: The necessary
  functionality is injected into the class



                                              s
                                       va Clas
                                  Ja
Dependency Injection in e4

• JSR 330 compatible injection
  implementation (think Google Guice)
  – @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... @Optional
s
                va Clas
           Ja
                                        
 Services are injected
                                          via the the e4
                                          framework

public class ListView {

  @Inject
  private IEclipseContext context;
  @Inject
   private Logger logger;

  @Inject
  public ListView(Composite parent) {
      // ...
CODE EXAMPLES
  rs-photo, http://www.flickr.com/photos/rs-foto/2129343084/sizes/l/
Access preference values
IPreferenceStore store =
   IDEWorkbenchPlugin.getDefault()
     .getPreferenceStore();

boolean saveBeforeBuild = store
                                      3.x
    .getBoolean(SAVE_BEFORE_BUILD);



@Inject
 @Preference(SAVE_BEFORE_BUILD)
 boolean saveBeforeBuild;
                                      4.x
Associate help context with control
getSite()
  .getWorkbenchWindow()
   .getWorkbench()
      .getHelpSystem().setHelp(
                                         3.x
        viewer.getControl(), some_id);

@Inject

IWorkbenchHelpSystem helpSystem;

...                                      4.x
helpSystem.setHelp(
        viewer.getControl(), some_id);
Services
Eclipse Application Services (“Twenty
                  Things”)

   Editor lifecycle                Long-running
   Receiving input                  operations
   Producing selection             Progress reporting
   Standard dialogs                Error handling
   Persisting UI state             Navigation model
   Logging                         Resource management
   Interface to help               Status line
    system                          Drag and drop
   Menu contributions              Undo/Redo
   Authentication                  Accessing preferences
   Authorization

                         Don‘t forget: OSGi services are also
                          available via dependency injection
Compatibility Layer
Compatibility Layer

• Compatibility layer centers around
  org.eclipse.ui.workbench
  – Contains code to host 3.x API on e4
• Note: The 3.x workbench API with
  some exceptions...
  – org.eclipse.ui.presentations
  – org.eclipse.ui.themes
  – Activities and Capabilities
• API clean plug-ins will run fine
Eclipse 4.0 SDK
Thanks for listening!
For further questions:
caniszczyk@gmail.com
http://aniszczyk.org
http://twitter.com/caniszczyk
Where to go from here
Eclipse e4 Website
  http://www.eclipse.org/e4
Eclipse e4 Wiki
  http://wiki.eclipse.org/E4
Eclipse e4 Whitepaper
  http://www.eclipse.org/e4/resources/e4-whitepaper.php


Eclipse 4.1 will most likely ship
as part of the Indigo release...
License & Acknowledgements
• This work is licensed under:

  –   http://creativecommons.org/licenses/by-nc-nd/3.0/de/deed.en_US




• Thank you...
  –   Boris Bokowski, IBM
  –   Tom Schindl, BestSolution
  –   Kai Tödter, Siemens AG
  –   Lars Vogel, SAP AG

More Related Content

What's hot

WordPress Under Control
WordPress Under ControlWordPress Under Control
WordPress Under ControlMatt Bernhardt
 
How to Contribute to Pinax
How to Contribute to PinaxHow to Contribute to Pinax
How to Contribute to Pinaxjtauber
 
What every successful open source project needs
What every successful open source project needsWhat every successful open source project needs
What every successful open source project needsSteven Francia
 
Intro to open source - 101 presentation
Intro to open source - 101 presentationIntro to open source - 101 presentation
Intro to open source - 101 presentationJavier Perez
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationAnne Gentle
 
Osgeo incubation-2014
Osgeo incubation-2014Osgeo incubation-2014
Osgeo incubation-2014Jody Garnett
 
DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"
DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"
DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"Daniel Bryant
 
Django Package Thunderdome by Audrey Roy & Daniel Greenfeld
Django Package Thunderdome by Audrey Roy & Daniel GreenfeldDjango Package Thunderdome by Audrey Roy & Daniel Greenfeld
Django Package Thunderdome by Audrey Roy & Daniel GreenfeldAudrey Roy
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationAnne Gentle
 
OpenStack Documentation in the Open
OpenStack Documentation in the OpenOpenStack Documentation in the Open
OpenStack Documentation in the OpenAnne Gentle
 
Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)dmgerman
 

What's hot (11)

WordPress Under Control
WordPress Under ControlWordPress Under Control
WordPress Under Control
 
How to Contribute to Pinax
How to Contribute to PinaxHow to Contribute to Pinax
How to Contribute to Pinax
 
What every successful open source project needs
What every successful open source project needsWhat every successful open source project needs
What every successful open source project needs
 
Intro to open source - 101 presentation
Intro to open source - 101 presentationIntro to open source - 101 presentation
Intro to open source - 101 presentation
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source Documentation
 
Osgeo incubation-2014
Osgeo incubation-2014Osgeo incubation-2014
Osgeo incubation-2014
 
DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"
DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"
DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"
 
Django Package Thunderdome by Audrey Roy & Daniel Greenfeld
Django Package Thunderdome by Audrey Roy & Daniel GreenfeldDjango Package Thunderdome by Audrey Roy & Daniel Greenfeld
Django Package Thunderdome by Audrey Roy & Daniel Greenfeld
 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source Documentation
 
OpenStack Documentation in the Open
OpenStack Documentation in the OpenOpenStack Documentation in the Open
OpenStack Documentation in the Open
 
Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)
 

Similar to Eclipse e4

Learn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUGLearn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUGMarakana Inc.
 
Eclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayEclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayLars Vogel
 
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Lars Vogel
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Lars Vogel
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Lars Vogel
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 OverviewLars Vogel
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsLars Vogel
 
Java 8 selected updates
Java 8 selected updatesJava 8 selected updates
Java 8 selected updatesVinay H G
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUlrich Krause
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceAntonio García-Domínguez
 
Typesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayTypesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayLuka Zakrajšek
 
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpChalermpon Areepong
 
Alfresco Business Reporting - Tech Talk Live 20130501
Alfresco Business Reporting - Tech Talk Live 20130501Alfresco Business Reporting - Tech Talk Live 20130501
Alfresco Business Reporting - Tech Talk Live 20130501Tjarda Peelen
 
iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)Netcetera
 

Similar to Eclipse e4 (20)

Learn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUGLearn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUG
 
Eclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayEclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse Day
 
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 Overview
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 
Java 8 selected updates
Java 8 selected updatesJava 8 selected updates
Java 8 selected updates
 
Creation&imitation
Creation&imitationCreation&imitation
Creation&imitation
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
Protractor survival guide
Protractor survival guideProtractor survival guide
Protractor survival guide
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
Typesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and PlayTypesafe stack - Scala, Akka and Play
Typesafe stack - Scala, Akka and Play
 
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
 
Alfresco Business Reporting - Tech Talk Live 20130501
Alfresco Business Reporting - Tech Talk Live 20130501Alfresco Business Reporting - Tech Talk Live 20130501
Alfresco Business Reporting - Tech Talk Live 20130501
 
iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)
 

More from Chris Aniszczyk

Bringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationBringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationChris Aniszczyk
 
Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Chris Aniszczyk
 
Open Container Initiative Update
Open Container Initiative UpdateOpen Container Initiative Update
Open Container Initiative UpdateChris Aniszczyk
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Chris Aniszczyk
 
Rise of Open Source Programs
Rise of Open Source ProgramsRise of Open Source Programs
Rise of Open Source ProgramsChris Aniszczyk
 
The Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsThe Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsChris Aniszczyk
 
Open Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupOpen Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupChris Aniszczyk
 
Getting Students Involved in Open Source
Getting Students Involved in Open SourceGetting Students Involved in Open Source
Getting Students Involved in Open SourceChris Aniszczyk
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Chris Aniszczyk
 
Evolution of The Twitter Stack
Evolution of The Twitter StackEvolution of The Twitter Stack
Evolution of The Twitter StackChris Aniszczyk
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonChris Aniszczyk
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with EclipseChris Aniszczyk
 
Evolution of Version Control In Open Source
Evolution of Version Control In Open SourceEvolution of Version Control In Open Source
Evolution of Version Control In Open SourceChris Aniszczyk
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseChris Aniszczyk
 
Helios in Action: Git at Eclipse
Helios in Action: Git at EclipseHelios in Action: Git at Eclipse
Helios in Action: Git at EclipseChris Aniszczyk
 
Introduction to EclipseRT (JAX 2010)
Introduction to EclipseRT (JAX 2010)Introduction to EclipseRT (JAX 2010)
Introduction to EclipseRT (JAX 2010)Chris Aniszczyk
 
EclipseRT, Equinox and OSGi
EclipseRT, Equinox and OSGiEclipseRT, Equinox and OSGi
EclipseRT, Equinox and OSGiChris Aniszczyk
 
Open Source From The Trenches: How to Get Involved with Open Source and be Su...
Open Source From The Trenches: How to Get Involved with Open Source and be Su...Open Source From The Trenches: How to Get Involved with Open Source and be Su...
Open Source From The Trenches: How to Get Involved with Open Source and be Su...Chris Aniszczyk
 
Understanding and Using Git at Eclipse
Understanding and Using Git at EclipseUnderstanding and Using Git at Eclipse
Understanding and Using Git at EclipseChris Aniszczyk
 

More from Chris Aniszczyk (20)

Bringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationBringing an open source project to the Linux Foundation
Bringing an open source project to the Linux Foundation
 
Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)
 
Open Container Initiative Update
Open Container Initiative UpdateOpen Container Initiative Update
Open Container Initiative Update
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)
 
Rise of Open Source Programs
Rise of Open Source ProgramsRise of Open Source Programs
Rise of Open Source Programs
 
The Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsThe Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 months
 
Open Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupOpen Source Lessons from the TODO Group
Open Source Lessons from the TODO Group
 
Getting Students Involved in Open Source
Getting Students Involved in Open SourceGetting Students Involved in Open Source
Getting Students Involved in Open Source
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)
 
Evolution of The Twitter Stack
Evolution of The Twitter StackEvolution of The Twitter Stack
Evolution of The Twitter Stack
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with Eclipse
 
Evolution of Version Control In Open Source
Evolution of Version Control In Open SourceEvolution of Version Control In Open Source
Evolution of Version Control In Open Source
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in Eclipse
 
SWTBot Tutorial
SWTBot TutorialSWTBot Tutorial
SWTBot Tutorial
 
Helios in Action: Git at Eclipse
Helios in Action: Git at EclipseHelios in Action: Git at Eclipse
Helios in Action: Git at Eclipse
 
Introduction to EclipseRT (JAX 2010)
Introduction to EclipseRT (JAX 2010)Introduction to EclipseRT (JAX 2010)
Introduction to EclipseRT (JAX 2010)
 
EclipseRT, Equinox and OSGi
EclipseRT, Equinox and OSGiEclipseRT, Equinox and OSGi
EclipseRT, Equinox and OSGi
 
Open Source From The Trenches: How to Get Involved with Open Source and be Su...
Open Source From The Trenches: How to Get Involved with Open Source and be Su...Open Source From The Trenches: How to Get Involved with Open Source and be Su...
Open Source From The Trenches: How to Get Involved with Open Source and be Su...
 
Understanding and Using Git at Eclipse
Understanding and Using Git at EclipseUnderstanding and Using Git at Eclipse
Understanding and Using Git at Eclipse
 

Recently uploaded

Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...Elena Simperl
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...Sri Ambati
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Alison B. Lowndes
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaRTTS
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsPaul Groth
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1DianaGray10
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...Product School
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
 

Recently uploaded (20)

Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 

Eclipse e4

  • 1. Eclipse 4.0 and e4 Chris Aniszczyk Principal Software Engineer zx@redhat.com http://aniszczyk.org http://twitter.com/caniszczyk
  • 2. Howdy! • Hack Eclipse/OSGi/Git • Evangelist at Red Hat • Involved heavily at Eclipse – Eclipse Foundation Board of Directors – Co-lead PDE and EGit • Hacking on open source for a decade – Gentoo Linux, Eclipse, Fedora... • I like running (5K @ ~18min)
  • 3. Agenda Why e4? Eclipse 3.X and e4 l e4 workbench mode Styling and Services Compatibility Layer Conclusion and Q&A
  • 4. Lexicon e4 is an Eclipse.org project for platform-related incubation, it’s not a product! Eclipse 4.0 is a release that contains some technology from the e4 project
  • 5. Why e4? • Innovate or become irrelevant • Use e4 technologies as a basis for Eclipse 4.X (some will show up in the 3.x stream) • Engage the open source community • Build a better Eclipse – Make it more flexible – Prepare for the web – Dynamic languages – Fix our mistakes
  • 7. Why change? “We’ve already built all our plug-ins. The most important thing is don’t break us.” (Yes, there is a compatibility layer.)
  • 8. Eclipse is mature and huge... 8
  • 9. Foundations need to evolve... Eclipse Competition... Francois Schnell, http://www.flickr.com/photos/frenchy/30217773/
  • 10. Eclipse 4.0 SDK Early Adopter Release July 2010
  • 11. 11
  • 12. 12
  • 14.
  • 15.
  • 16. So, what’s wrong with Eclipse 3.X?
  • 17. Problems with Eclipse 3.x • Complex • Lots of API • Platform functionality via singletons • Not easy to test • Not a consistent way to define the UI • UI makes assumptions, e.g. Editors / Views • Easy Skinning • The browser is more powerful now... RIAs...
  • 18. If only Eclipse application development would be easier... 8
  • 19. Eclipse e4 – Building blocks Declarative Styling Rendering Engine Modeled Workbench Dependency Injection IEclipseContext Core Services
  • 21. The e4 Workbench Model Each application has its live model... think of the browser DOM... • Built using EMF • 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
  • 22. The Model is Flexible No distinction between View/ Editor Perspectives are optional Stack / Sash are optional Several windows easily possible Flexible Toolbars
  • 23. Parts in e4 Plain Old Java Objects (POJO‘s)
  • 24. Before e4... inheritance ruled... OBJECT EVENTMANAGER WORKBENCHPART VIEWPART VIEW
  • 25. How is this model translated into UI components?
  • 26. Model and UI Renderers Model I don’t care who draws me • The Workbench model is independent of a specific UI toolkit
  • 27. Renderers Renderer Factory Eclipse default is the SWT Renderer Can be selected at Startup via parameter
  • 28. Renderers Renderer Factory Widget Renderer Returns for every model element
  • 29. Widget Renderer • Each UI elements gets a renderer • Renderer manage Lifecycle of the UI- Element – Creation – Model to widget binding – Rendering – Disposal
  • 31. Styling in Eclipse 3.x • UI styling via – The Presentation API – Custom Widgets • Very limited
  • 32. In reality all RCP apps look like the an IDE
  • 33. Eclipse 3.X - IDE Eclipse e4 – CSS Styling feeling Example from Kai Toedter Some elements cannot currently not be styled: • Menu bar background • Table headers e4 supports theme switching during runtime
  • 34. How to enable CSS Styling Property "applicationCSS” in extension point org.eclipse.core.runtime.products <extension id="product" point="org.eclipse.core.runtime.products"> <product application="org.eclipse.e4.ui.workbench.swt.application" name="E4 Contacs Demo"> <property name="applicationCSS" value="platform:/plugin/contacts/css/dark.css"> </property> </product> </extension>
  • 35. Example CSS Label { font: Verdana 8px; color: rgb(240, 240, 240); } Table { background-color: gradient radial #575757 #101010 100%; color: rgb(240, 240, 240); font: Verdana 8px; } ToolBar { background-color: #777777 #373737 #202020 50% 50%; color: white; font: Verdana 8px; }
  • 36. Assign custom attributes • Java Label label = new Label(parent, SWT.NONE); label.setData("org.eclipse.e4.ui.css.id", "SeparatorLabel"); • CSS #SeparatorLabel { color: #f08d00; }
  • 38. Dependency Injection • Inversion of control: The necessary functionality is injected into the class s va Clas Ja
  • 39. Dependency Injection in e4 • JSR 330 compatible injection implementation (think Google Guice) – @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... @Optional
  • 40. s va Clas Ja Services are injected via the the e4 framework public class ListView { @Inject private IEclipseContext context; @Inject private Logger logger; @Inject public ListView(Composite parent) { // ...
  • 41. CODE EXAMPLES rs-photo, http://www.flickr.com/photos/rs-foto/2129343084/sizes/l/
  • 42. Access preference values IPreferenceStore store = IDEWorkbenchPlugin.getDefault() .getPreferenceStore(); boolean saveBeforeBuild = store 3.x .getBoolean(SAVE_BEFORE_BUILD); @Inject @Preference(SAVE_BEFORE_BUILD) boolean saveBeforeBuild; 4.x
  • 43. Associate help context with control getSite() .getWorkbenchWindow() .getWorkbench() .getHelpSystem().setHelp( 3.x viewer.getControl(), some_id); @Inject IWorkbenchHelpSystem helpSystem; ... 4.x helpSystem.setHelp( viewer.getControl(), some_id);
  • 45. Eclipse Application Services (“Twenty Things”)  Editor lifecycle  Long-running  Receiving input operations  Producing selection  Progress reporting  Standard dialogs  Error handling  Persisting UI state  Navigation model  Logging  Resource management  Interface to help  Status line system  Drag and drop  Menu contributions  Undo/Redo  Authentication  Accessing preferences  Authorization  Don‘t forget: OSGi services are also available via dependency injection
  • 47. Compatibility Layer • Compatibility layer centers around org.eclipse.ui.workbench – Contains code to host 3.x API on e4 • Note: The 3.x workbench API with some exceptions... – org.eclipse.ui.presentations – org.eclipse.ui.themes – Activities and Capabilities • API clean plug-ins will run fine
  • 49. Thanks for listening! For further questions: caniszczyk@gmail.com http://aniszczyk.org http://twitter.com/caniszczyk
  • 50. Where to go from here Eclipse e4 Website http://www.eclipse.org/e4 Eclipse e4 Wiki http://wiki.eclipse.org/E4 Eclipse e4 Whitepaper http://www.eclipse.org/e4/resources/e4-whitepaper.php Eclipse 4.1 will most likely ship as part of the Indigo release...
  • 51. License & Acknowledgements • This work is licensed under: – http://creativecommons.org/licenses/by-nc-nd/3.0/de/deed.en_US • Thank you... – Boris Bokowski, IBM – Tom Schindl, BestSolution – Kai Tödter, Siemens AG – Lars Vogel, SAP AG

Editor's Notes