Eclipse more than a Java IDE pascal rapicault@ca.ibm.com Core / Equinox Committer Users Extenders Publishers Enablers Configurers.

Презентация:



Advertisements
Похожие презентации
The waterfall model is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to.
Advertisements

The waterfall model is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to.
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary November 4, 2014 Copyright © 2006 Eclipse Foundation, Inc., Made available.
Evgeniy Krivosheev Andrey Stukalenko Vyacheslav Yakovenko Last update: Nov, 2013 Spring Framework Module 1 - Introduction.
© 2005 by IBM; made available under the EPL v1.0 | March 1, 2005 Tim deBoer Gorkem Ercan Extend WTP Server Tools for your.
© 2005 Cisco Systems, Inc. All rights reserved.INTRO v Managing Your Network Environment Managing Cisco Devices.
While its always a good idea to think outside the box when approaching a creative task, this is not always the case. For example, when working with teams,
XjCharts A C++ / Java Statecharts Tool for Developers Experimental Object Technologies
© 2006 IBM Corporation Made available under the EPL v WebSphere Services Technical Conference world class skill building and technical enablement.
Be The Most Productive Developer You Can Be! Kristen Howell OpenEdge Product Manager Matt Baker Principal Software Engineer Session 108.
© 2006 Cisco Systems, Inc. All rights reserved. CIPT1 v Deployment of Cisco Unified CallManager Release 5.0 Endpoints Configuring Cisco Unified CallManager.
© Luxoft Training 2013 Annotations. © Luxoft Training 2013 Java reflection / RTTI // given the name of a class, get a "Class" object that // has all info.
Loader Design Options Linkage Editors Dynamic Linking Bootstrap Loaders.
© 2009 Avaya Inc. All rights reserved.1 Chapter Four, UMS Web Services Module One – UMS.
© 2005 Cisco Systems, Inc. All rights reserved. BGP v Optimizing BGP Scalability Implementing BGP Peer Groups.
© 2009 Avaya Inc. All rights reserved.1 Chapter Two, Voic Pro Components Module Two – Actions, Variables & Conditions.
Strategy / Business Development Technique Communication / Design.
© 2006 Cisco Systems, Inc. All rights reserved. MPLS v Complex MPLS VPNs Introducing Central Services VPNs.
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary © Wind River Systems, released under EPL 1.0. All logos are TM of their respective.
A new interface model for the Jazyki Mira typological database Oleg Belyaev The research is supported by RFBR grant ( а.
Транксрипт:

Eclipse more than a Java IDE Core / Equinox Committer Users Extenders Publishers Enablers Configurers

What is Eclipse?

Eclipse is a kind of universal tool platform - an open extensible IDE for anything and nothing in particular. Eclipse is more than a Java IDE… In many ways Eclipse is the Emacs for the 21st century. – Martin Fowler

More than a Java IDE Some Eclipse-based Open Source Projects Languages Languages – –C/C++ –C# –Python –Php – –Cobol –Several UML Programming Tools Programming Tools – –Graphical Editing Framework (GEF) – –AspectJ tools – –Modeling (EMF) –ANTLR Parser Generator –Several DB tools –Jalopy Java Source Code Formatter –Japple – RAD –Jasper report designer –Lomboz –Java Spider Source & configuration mgt. –Perforce –Microsoft VSS Plugin –Stellation –Clearcase Web development –Sysdeo - Eclipse Tomcat Launcher –WebLogic manager –Several Struts –Spindle for Tapestry Testing / Performance –Hyades –Resin Plugin –MockCreator –Solex

Eclipse Organization Eclipse Projectthe platform Eclipse Projectthe platform –Platform –JDT: Java Development Tools –PDE: Plug-in Development Environment Eclipse Tools product ready additions to the platform Eclipse Tools product ready additions to the platform –GEF: Graphical Editing Framework –CDT: C/C++ development tools –EMF: Modeling Framework –Cobol –VE: Visual editor for Swing (and SWT) –UML2: UML meta-model implementation Web-Toolsweb development support Web-Toolsweb development support –JSP and XML support –… Technology experimental / research efforts Technology experimental / research efforts –ECESIS: Eclipse Courseware –Equinox: new more dynamic plug-in architecture –… new

What is Eclipse? Java VM PlatformJDTPDE Eclipse is a universal platform for integrating development tools Eclipse is a universal platform for integrating development tools Open, extensible architecture based on plug-ins Open, extensible architecture based on plug-ins SDK Resources, Team, Debug, Help, Update, SWT, UI,… Compiler, Refactoring, JDT UI, JDT Debug,… PDE Core, PDE Build, PDE UI

Platform vs. Extensible IDE Platform Extensible IDE IDE Plug-ins » Eclipse is a platform with a small runtime kernel Runtime Plug-ins

Eclipse Plug-in Architecture Plug-in – set of contributions Plug-in – set of contributions –Smallest unit of Eclipse functionality Extension point – named entity for collecting contributions Extension point – named entity for collecting contributions –Example: extension point for adding software metrics Extension – a contribution Extension – a contribution –Example: a specific metric Plug-in Platform Plug-in Extension Extension point

Extension configuration in XML … <page id=com.example.myprefpage" icon="icons/image.gif" title=My title" class=com.example.mywizard"> … Extension contribution Extension point definition

Plug-in Goals… Easy to develop Easy to develop –Java Development Tools + Plug-in development environment Scale-up to hundreds of installed plug-ins Scale-up to hundreds of installed plug-ins –the problem is start-up time… –Eclipse consists of 80 plug-ins, WSAD IE is even larger > 1500 plug-ins lazy loading lazy loading Easy to discover, install, and update Easy to discover, install, and update –install/update support Easy to manage an installation Easy to manage an installation –managed configurations

Eclipse Involvements Users Users –Users of Eclipse Configurers Configurers –Adapt Eclipse to their personal needs by choosing and installing plug-ins and customizing them in anticipated ways Extenders Extenders –Provide extensions to existing extension points Publishers Publishers –Extenders who make their extensions available using the Eclipse mechanisms Enablers Enablers –Providers of extension points

The Contribution Cycle Users Extenders Publishers Enablers Configurers

Extender: Contribute an Icon View Goal: a plug-in to view the standard Eclipse images Goal: a plug-in to view the standard Eclipse images Steps: Steps: –read extension point specifications –use Plug-in Development Tools to create a plug-in project and to declare the extension –use the Java Development Tools to implement the extension

House Keeping Rules for Extenders * Program To API Contract Rule: Check and program to the Eclipse API contract Sharing Rule: Add, dont replace Sharing Rule: Add, dont replace Responsibility Rule: Clearly identify your plug-in as the source of problems Responsibility Rule: Clearly identify your plug-in as the source of problems Strata Rule: Separate language-neutral functionality from language-specific functionality and separate core functionality from UI functionality Conformance Rule: Contributions must conform to expected interfaces Conformance Rule: Contributions must conform to expected interfaces *Erich Gamma, Kent Beck - Contributing to Eclipse: Practices, Plug-Ins, Patterns

The Contribution Cycle Users Extenders Publishers Enablers Configurers

Publisher: Install/Update Features group plug-ins into installable chunks Features group plug-ins into installable chunks –Feature manifest file Plug-ins and features bear version identifiers Plug-ins and features bear version identifiers –major. minor. Service. qualifier –Multiple versions may co-exist on disk Features downloadable from web site Features downloadable from web site –Using Eclipse Platform update manager –Obtain and install new plug-ins –Obtain and install updates to existing plug-ins

Publisher: Create a Feature Feature describes Feature describes –Contained plug-ins and their versions –Pre-requisite plug-ins for the feature <feature id="org.demo.imageviewfeature version="1.0.0"> <plugin id="org.demo.imageview" download-size="0" install-size="0" version="1.0.0"/>

Publisher: Create an Update Site An update-site An update-site –is any URL addressable location –contains zips for the feature and plug-ins –version information encoded in the zip name –contents described by a site.xml file Eclipse Demo Plugins

House Keeping Rules for Publishers License Rule: Always supply a license with every contribution.

The Contribution Cycle Users Extenders Publishers Enablers Configurers

Enabler: Invite Others to Contribute extension-point imageFilters Declares extension point: Declares interface: interface IImageFilter { Image filter(Image image); } interface IImageFilter calls ImageViewer Plugin

Enabler: Invite Others to Contribute My Plug-in class GreyFilter extension-point imageFilters extension contributes Declares extension point: Declares interface: interface IImageFilter { Image filter(Image image); } Contributes extension: …class=GreyFilter Implements interface: class GreyFilter implements IImageFilter { } interface IImageFilter calls implements ImageViewer Plugin

Enabler: Invite Others to Contribute My Plug-in class GreyFilter extension-point imageFilters extension contributes Declares extension point: Declares interface: interface IImageFilter { Image filter(Image image); } Contributes extension: …class=GreyFilter Implements interface: class GreyFilter implements IImageFilter { } interface IImageFilter Instantiated via reflection calls implements ImageViewer Plugin uses

House Keeping Rules for Enablers Invitation Rule: Whenever possible, let others contribute to your contributions Invitation Rule: Whenever possible, let others contribute to your contributions Explicit API Rule: Separate the API from internals Fair Play Rule: All clients play by the same rules, even me. Fair Play Rule: All clients play by the same rules, even me. Diversity Rule: Extension points accept multiple extensions. Lazy Loading Rule: Contributions are only loaded when they are needed Lazy Loading Rule: Contributions are only loaded when they are needed Good Fences Rule: When passing control outside your code, protect yourself Stability Rule: Once you invite someone to contribute, dont change the rules Stability Rule: Once you invite someone to contribute, dont change the rules

Closing the Circle Now that we have published a plugin with extension points we have closed the circle: Now that we have published a plugin with extension points we have closed the circle: Extenders can now extend your extensions! Extenders can now extend your extensions! Users Extenders Publishers Enablers Configurers

Summary All functionality is provided by plug-ins and fragments All functionality is provided by plug-ins and fragments –Includes all aspects of Eclipse Platform itself Contributions are made via extension points Contributions are made via extension points –Extensions are created lazily Plug-ins are packaged into separately installable features Plug-ins are packaged into separately installable features –Downloadable

Whats Next: Beyond Java Stuff Eclipse Rich Client Platform Eclipse Web Project Open-up Java Tooling

Eclipse 3.0 Themes Platform Platform –improved user experience UI scalability in the face of tons of contributionsUI scalability in the face of tons of contributions Out of the box experienceOut of the box experience New look and feelNew look and feel –responsive UI background activitiesbackground activities –rich client platform generalize Eclipse into a platform for building non-IDE appsgeneralize Eclipse into a platform for building non-IDE apps –dynamic runtime Java Development Tools Java Development Tools –open-up for other Java family members (edition, index, refactoring) –improved user experience navigationnavigation –digesting Tiger (jdk 1.5)

What is Eclipse RCP ? Eclipse is a kind of universal tool platform – an open extensible IDE for anything and nothing in particular. Eclipse is more than a Java IDE…

What is Eclipse RCP? Java VM – ee.minimum Platform A refactoring of the platform A refactoring of the platform SDK IDE Specific Platform JDTPDE Runtime, Help, Update, SWT, Generic UI,… Resources, Team, Debug, IDE UI,…

Dynamic runtime Dynamic plug-in Dynamic plug-in –Addition of plug-ins –Removal of plug-ins (no magic, instances need to be freed) –Update of plug-ins OSGi runtime ( OSGi runtime ( –Standardized runtime –Improved class-loading –Finer grained management of plug-in dependencies –Smaller JDK required, embedded devices Why not Eclipse in your cell phone or palm?

The Way to Eclipse Eclipse Nov Open Source announcement VisualAge/Java VisualAge Micro edition March 2.1 Oct 1.0 June 2.0 June Tech Preview

Eclipse Supports Plug-in Development Platform Runtime Workspace Help Team Workbench JFace SWT Eclipse Project Java Development Tools (JDT) Their Tool Your Tool Another Tool Plug-in Development Environment (PDE) Eclipse Platform Debug Update

Monkey See/Monkey Do Eclipse Trio Eclipse Trio –tools –published APIs –Open Source source access Learn-by-example Learn-by-example –browse existing code –PDE –JSpider

Extending Eclipse for Fun and Profit… Eclipse SDK IBM Websphere Studio App. Developer Eclipse SDK SAP NetWeaver Developer Studio Commercial Development Environments Commercial Add-Ons Eclipse SDK IBM Websphere Studio App. Developer Eclipse SDK SAP NetWeaver Developer Studio Instantiations, Borland, Sitraka, SlickEdit…

Platform Implications Everybody can contribute plug-ins Everybody can contribute plug-ins –Every programmer can be a tool smith Creating opportunities for further extension makes it possible for the tool smith to benefit from the work of others Creating opportunities for further extension makes it possible for the tool smith to benefit from the work of others It has to be easy to install and manage plug-ins It has to be easy to install and manage plug-ins

Tip of iceberg Implementation of plug-in contributions Declarative definition of plug-in contributions startup time: O(#used plug-ins), not O(# installed plug-ins)