Eclipse Paolo Gasti. The Problem ■ There is the need for a new development environment ■ It has to help software designers and implementers to do their.

Slides:



Advertisements
Similar presentations
Extending Eclipse CDT for Remote Target Debugging Thomas Fletcher Director, Automotive Engineering Services QNX Software Systems.
Advertisements

Extending Eclipse Kai-Uwe Mätzel IBM OTI Labs Zurich
Introduction to Eclipse plugin development for CSU 670 course project, Selector language (Xaspect) editor plugin implementation.
Developing an Eclipse Plug-in David Gallardo. Platform Runtime Workspace Help Team Workbench JFace SWT Eclipse Project Java Development Tools (JDT) Their.
Goals Give you a feeling of what Eclipse is.
Web Applications Development Using Coldbox Platform Eddie Johnston.
Eclipse Architecture Dwight Deugo Nesa Matic
20-Jun-15 Eclipse. Most slides from: 2 About IDEs An IDE is an Integrated Development Environment.
Eclipse Introduction Dwight Deugo Nesa Matic
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
1 Plug-in Development Environment (PDE) Guide. 2 Introduction to PDE l What is PDE: »a tool designed to help you develop platform plug-ins while working.
On Platform-Plugin Architecture Take Eclipse as an Example 魏恒峰.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
© 2008 Zend Technologies; made available under the EPL v March 2008 PDT – The PHP Development Toolkit Assaf Almaz, PDT co-Project Leader Zend Technologies.
Eclipse IDE. 2 IDE Overview An IDE is an Interactive Development Environment Different IDEs meet different needs BlueJ and DrJava are designed as teaching.
03 Using Eclipse. 2 IDE Overview An IDE is an Interactive Development Environment Different IDEs meet different needs BlueJ and DrJava are designed as.
Eclipse is an open source IDE (Integrated Development Environment) for developing applications in Java, C/C++, HTML, Cobol, Perl, etc. The official Eclipse.
1 eclipse the open platform for tool integration.
EclipseME Java Micro Edition The Eclipse Way Craig Setera April 19, 2006.
DEVSENSE s.r.o.. Visual Studio Industry Partner DEVSENSE s.r.o. NEXT STEPS Contact us at: In 2009, DEVSENSE was founded by four software.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Xactium xDSLs Run Models Not Code Tony Clark
© 2005 by IBM; made available under the EPL v1.0 | March 1, 2005 Tim deBoer Gorkem Ercan Extend WTP Server Tools for your.
ECLIPSE and UML Onur Demir
Duke University Program Design & Construction Course Application Development Tools Sherry Shavor
TOOLS FOR DESIGN AND DEVELOPMENT ENVIRONMENTS. Case study - ECLIPSE Lecture notes 3.
1 v1.6 08/02/2006 Overview of Eclipse Lectures 1.Overview 2.Installing and Running 3.Building and Running Java Classes 4.Refactoring 5.Debugging 6.Testing.
Definition of the SDK for FIspace Augusto Morales & Hector Bedón UPM.
© 2006 IBM Corporation Jazz Foundation Deep Dive Agile Planning’s Scripting Tools.
Capture and Replay Often used for regression test development –Tool used to capture interactions with the system under test. –Inputs must be captured;
Everything I Always Wanted to Know about Eclipse Harry Koehnemann Rocket Gang Many slides in this presentation can be found at
Introduction to Eclipse Plug-in Development. Who am I? Scott Kellicker Java, C++, JNI, Eclipse.
Android for Java Developers Denver Java Users Group Jan 11, Mike
The Eclipse IDE Gareth Davies. Relevant Bio Professional Developer since 1994 Mostly Microsoft platform, using successive versions of Visual Studio Serious.
Eclipse more than a Java IDE Core / Equinox Committer Users Extenders Publishers Enablers Configurers.
Extending the Eclipse Framework and Rich Client Platform Jeff Myers Languages for Lunch 10/13/2004.
Ontology Engineering and Plugin Development with the NeOn Toolkit Plug-in Development for the NeOn Toolkit June 1st, 2008 Michael Erdmann, Peter Haase,
Introduction to Eclipse CSC 216 Lecture 3 Ed Gehringer Using (with permission) slides developed by— Dwight Deugo Nesa Matic
Jan Hatje, DESY CSS ITER March 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
[________________________] Eclipse project briefing materials. Copyright (c) 2002, 2003 IBM Corporation and others. All rights reserved. This.
Selected Topics in Software Engineering - Distributed Software Development.
Eclipse Eclipse An IDE is an Integrated Development Environment Different IDEs meet different needs – BlueJ, DrJava are designed as teaching.
CMSC 466 / 666 Yong Rao Feb. 11, 2004 Revised Mar. 15, 2004.
A (very brief) intro to Eclipse Boyana Norris June 4, 2009.
DEV-8: OpenEdge® Architect – Extensibility & Third Party Integration Sunil Belgaonkar Principal Software Engineer Architect Phillip Magnay.
CSS – Control System Studio
Eclipse 24-Apr-17.
Eclipse. An IDE is an Integrated Development Environment Different IDEs meet different needs BlueJ, DrJava are designed as teaching tools Emphasis is.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Jan Hatje, DESY CSS GSI Feb. 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
® IBM Software Group © 2007 IBM Corporation Module 1: Getting Started with Rational Software Architect Essentials of Modeling with IBM Rational Software.
Introduction 1 Lars Vogel 4/22/2009.  Who am I?  Eclipse as a platform  What is Eclipse RCP?  Extension Points / Extensions  Equinox  SWT & JFace.
Eclipse 27-Apr-17.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Java IDE Dwight Deugo Nesa Matic
ECLIPSE RICH CLIENT PLATFORM Part 1 Introduction.
CSC 222: Object-Oriented Programming
Goals Give you a feeling of what Eclipse is.
A (very brief) intro to Eclipse
COSC-4840 Software Engineering
Eclipse 20-Sep-18.
Introduction to Eclipse
Architecture, Components, Configuration
Java IDE Dwight Deugo Nesa Matic Portions of the notes for this lecture include excerpts from.
An Introduction to Eclipse
Presentation transcript:

Eclipse Paolo Gasti

The Problem ■ There is the need for a new development environment ■ It has to help software designers and implementers to do their jobs faster and easier ■ There are so many approaches to software development that no tool can be the solution ■ We need to fill the blank left by tools such as Emacs

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

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

Design Goals Provide an open platform for the construction of tools for application development Support an unrestricted set of tool providers Support tools to manipulate arbitrary content types (language neutral) Seamless integration of tools within and across different content types and tool providers Availability on a wide range of platforms

Plug-in Architecture Goals ■ Easy to develop –Java Development Tools + Plug-in development environment ■ Scale-up to hundreds of installed plug-ins –It tries to reduce start-up time –Out-of-the-shelf Eclipse consists of 80 plug-ins –Lazy loading ■ Easy to discover, install, and update –install/update support ■ Easy to manage an installation –managed configurations

Why Open Source ■ Many partners can contribute during all the life cycle of a tool ■ It provides less dependency on a single vendor ■ Every partner can implement its own product without the need to stipulate any contract with IBM ■ The community can –provide feedback to the developers –submit patches –answering user’s questions

Implications ■ Vendors can concentrate on their own special area of expertise providing higher value ■ Improved integration of tools from multiple vendors ■ The interface can be customized to fit any function, format or style ■ Plug-ins can be free or commercial ■ A flourishing business gravitates around Eclipse (WebSphere etc…)

Eclipse Architecture ■ Plug-in, the smallest unit of Eclipse function ■ Eclipse is a platform with a small runtime Kernel and several layers of plug-in built on it ■ Everybody can be a tool smith ■ SWT (Standard Widget Toolkit) offers significant advantages over AWT and Swing Platform Extensible IDE IDE Plug-ins Runtime Plug-ins

Eclipse Architecture Java VM PlatformJDTPDE SDK Resources, Team, Debug, Help, Update, SWT, UI,… Compiler, Refactoring, JDT UI, JDT Debug,… PDE Core, PDE Build, PDE UI

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

Eclipse Platform Start Up ■ Eclipse Platform Runtime handles start up –Discovers plug-ins installed on disk –Matches up extensions with extension points –Builds global plug-in registry –Caches registry on disk for next time

Eclipse Platform ■ The Platform is divided into components ■ The standard components, provided with the installation file freely downloadable from eclipse.org, are –Ant – Universal Compare –Core– Release Engineering –Platform CVS Integration– Debug framework –Platform help system– Text editor framework –Support for Platform scripting – Platform user interface –Integrated search facility – WebDAV integration –SWT (Standard Widget Toolkit) – Generic Team support –Dynamic Update/Install Service

Plug-in Architecture ■ Extension point - named entity for collecting “contributions” ■ Extension - a contribution ■ Each plug-in –Contributes to 1 or more extension points –Optionally declares new extension points – programmers can extend good plug-ins to fit their needs –Depends on a set of other plug-ins –Contains Java code libraries and other files ■ Details spelled out in the plug-in manifest –Manifest declares contributions –Code implements contributions and provides API

Extension Points Principles ■ Let others contribute to your contributions ■ Lazy loading rule: load extensions only when they are about to be called ■ Contributions do not –override existing behavior –remove or replace existing component –harm existing or future contributions

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 Manifest <plugin id = “com.example.tool“ version = “2.1.0” name = “Example Plug-in Tool" class = "com.example.tool.ToolPlugin"> <page id = "com.example.tool.preferences" icon = "icons/knob.gif" title = “Tool Knobs" class = "com.example.tool.ToolPreferenceWizard“/> Declare contribution this plug-in makes Declare new extension point open to contributions from other plug-ins Location of plug-in’s code Other plug-ins needed Plug-in identification

Contribution architecture 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

Contribution architecture 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

Plug-in Activation ■ Each plug-in gets its own Java class loader and has its own class path –Delegates class load requests to required plug-ins ■ Contributions processed without plug-in activation –Example: Menu constructed from manifest info for contributed items ■ Plug-ins are activated only as needed –When a class is loaded by the class loader  Scalable for large base of installed plug-ins Java UI UI Resources Java Core requires

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

The UML 2 plug-ins ■ There are several UML 2 compliant plug-ins ■ Most of them provide support for –Reverse-engineering of source code (often also from binaries) –Code generation –Code Synchronization –Code analysis –Documentation generation –Automatic diagram altering after code altering

Slime UML 2 plug-in ■ Guides the team through all the development process ■ It is very light-weight: only 1 MB

Refactoring Support ■ Refactoring is changing the structure of a program without changing its functionality ■ There are many reasons to do refactoring –The team of a project disappears and you need to add/improve the functionality of its (quite obscure) code –A new requirement is introduced because of a design mistake or an iterative approach (such as XP) –Once familiar with this tool, a programmer can generate code in the first place, then use it to conform its code to some standards (such as the use of getter/setter methods)

Refactoring Support ■ Eclipse provides three types of Refactoring –Physical organization and renaming –Logical organization at the class level –Change the code within a class

Physical organization and renaming ■ Avoid the need to edit many files to update import and package statements ■ Automatically checks the context, not only the names ■ Allows to automatically –Rename fields –Rename variables –Rename classes and interfaces –Move packages and classes

Logical organization at the class level ■ While not as useful as the other kind of refactorings, it allows to automatically –Turn anonymous classes into nested classes –Turn nested classes into top-level classes –Create interfaces from concrete classes –Move methods or fields from a class to a subclass or superclass

Change the code within a class ■ Allows you to automatically –Turn local variables into class fields –Turn selected code in a method into a separate method –Generate getter and setter methods for fields –Change method signature (doesn’t fit exactly here…)

Refactoring Support ■ The power of Eclipse’s refactoring capability is to allow an user to do a safe refactoring with some mouse clicks

Eclipse’s Cons ■ Windows-centric (ActiveX, OLE) ■ Slow and often unstable under Unix ■ Forces developers to use its own directory structure ■ Sun does not like it exists, having its own NetBeans (but Eclipse is supported by IBM…)

Case of Study: the JavaCard Plug-in ■ It offers the complete class library of the JavaCard platform ■ Allows developers to simulate IBM’s smart card hardware ■ Offers an advanced debugger ■ Lets Eclipse connect to real smart cards ■ Offer complex functionalities

Case of Study: the JavaCard Plug-in ■ Offers concrete advantages against the stand-alone version ■ The Java Editor provided with Eclipse is much better than the editor provided with JavaCard ■ Allows the developer to edit and test the code with the same interface ■ Can be used together with other tools such us an UML 2 plug-in ■ Shows the power of the Eclipse platform when developing highly specialized software

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

Summary  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  The same environment can be used to develop applications and to develop tools for itself

References ■ Refactoring For Everyone by IBM ( 106.ibm.com/developerworks/opensource/library/os- ecref/) ibm.com/developerworks/opensource/library/os- ecref/ 106.ibm.com/developerworks/opensource/library/os- ecref/ ■ Eclipse Platform Technical Overview – eclipse.org ■ The Mathaino Project - Department of Computing Science, University of Alberta ■ Eclipse Platform on-line help ■ Omondo whitepaper – ■ Eclipse.org plug-ins documentation ■ OOPSLA 2003 documentation –