48

Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Embed Size (px)

Citation preview

Page 1: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 2: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Eclipse overviewEclipse overview

• An IDE for anything and nothingAn IDE for anything and nothing– What’s an IDE? What’s an IDE? – What for?What for?

• A little bit of history (not too much)A little bit of history (not too much)• How’s the big scheme of thing?How’s the big scheme of thing?

– ProjectsProjects– SubprojectsSubprojects

• Graphic’s War (OK by now!)Graphic’s War (OK by now!)

Page 3: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Eclipse overviewEclipse overview

• Plug-ins architecturePlug-ins architecture

• Major ComponentsMajor Components

• StrengthsStrengths

• WeaknessesWeaknesses

• ConclusionsConclusions

Page 4: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

What’s an IDE? What’s an IDE?

• An all-in-one tool for:An all-in-one tool for:– Writing, editing, Writing, editing, – compiling, running, debugging, compiling, running, debugging, – Documenting, Documenting, – Testing and deliver Testing and deliver

Computer applicationsComputer applications

Page 5: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

A little bit of historyA little bit of history

• November 2001: IBM released $40 million November 2001: IBM released $40 million worth of software tools into the public worth of software tools into the public domain.domain.

• Several organizations create a consortium Several organizations create a consortium of IDE providers: Eclipse Foundation, Inc.of IDE providers: Eclipse Foundation, Inc.

• IBM build WebSphere (based on eclipse)IBM build WebSphere (based on eclipse)

• Sun build NetBeans (based on Java)Sun build NetBeans (based on Java)

• 2004: Eclipse Foundation turn into an 2004: Eclipse Foundation turn into an independent not-for-profit organizationindependent not-for-profit organization

Page 6: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Versions evolutionVersions evolution

• 1.0 Nov 20011.0 Nov 2001

• 2.0 Jun 20022.0 Jun 2002

• 2.0.1 Aug 20022.0.1 Aug 2002

• 2.0.2 Nov 20022.0.2 Nov 2002

• 2.1 Mar 20032.1 Mar 2003

• 2.1.1 Jun 20032.1.1 Jun 2003

• 2.1.2 Nov 20032.1.2 Nov 2003

• 2.1.3 Mar 20042.1.3 Mar 2004

• 3.0 Jun 20043.0 Jun 2004

• 3.0.1 Sept 20043.0.1 Sept 2004

• 3.0.2 Mar 20053.0.2 Mar 2005

• 3.1 Jun 20053.1 Jun 2005

• 3.1.1 Sept 20053.1.1 Sept 2005

• 3.1.2 Jan 20063.1.2 Jan 2006

Page 7: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

How’s the big scheme of How’s the big scheme of thing?thing?

• Division into projects and subprojectsDivision into projects and subprojects

• Projects (3)Projects (3)– Eclipse projectEclipse project– Eclipse Tools projectEclipse Tools project– Eclipse Technology projectEclipse Technology project

Page 8: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Eclipse projectEclipse project

• Eclipse Foundation’s major backboneEclipse Foundation’s major backbone

• Divided in three subprojects:Divided in three subprojects:– Platform subprojectPlatform subproject– Java Development Tools subproject (JDT)Java Development Tools subproject (JDT)– Plug-in Development subprojectPlug-in Development subproject

Page 9: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Platform subprojectPlatform subproject

• Deals with things common to all Deals with things common to all aspects of Eclipse:aspects of Eclipse:– Text editingText editing– SearchingSearching– Help pagesHelp pages– DebuggingDebugging– versioningversioning

Page 10: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Platform subproject (Core)Platform subproject (Core)

• Consists of the barebones Consists of the barebones necessities:necessities:– Code for starting and running EclipseCode for starting and running Eclipse– Creation and management of plug-insCreation and management of plug-ins– Management of basic program Management of basic program

resourcesresources

Page 11: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 12: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Platform subprojectPlatform subproject

• Defines the general look and feelDefines the general look and feel

• It is based on two technologies:It is based on two technologies:– Standard Widget Toolkit (SWT): Standard Widget Toolkit (SWT):

controversialcontroversial– JFace: not-so-controversialJFace: not-so-controversial

Page 13: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 14: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Standard Widget ToolkitStandard Widget Toolkit

• Collection of basic graphical interface Collection of basic graphical interface classes and methods, including:classes and methods, including:– ButtonsButtons– MenusMenus– LabelsLabels– EventsEvents

Page 15: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

JFaceJFace

• A set of higher-level graphical A set of higher-level graphical interface tools, including:interface tools, including:– WizardsWizards– ViewersViewers– Text formattersText formatters

Jface builds on the work that SWT starts.Jface builds on the work that SWT starts.

Page 16: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Java Development Tools Java Development Tools subprojectsubproject

• People’s minds: an IDE for Java People’s minds: an IDE for Java developmentdevelopment

• Start running Eclipse, you’ll see:Start running Eclipse, you’ll see:– Java perspectiveJava perspective– Java projectsJava projects– Java search toolsJava search tools– A bunch of Java-specific stuffA bunch of Java-specific stuff

Page 17: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Java Development Tools Java Development Tools subprojectsubproject

• But, Eclipse is language-neutralBut, Eclipse is language-neutral• Happens to house a mature Java Happens to house a mature Java

development environment, it’s wrong?development environment, it’s wrong?• The JDT subproject includes:The JDT subproject includes:

– Java compilerJava compiler– Java editor enhancementsJava editor enhancements– Integrated debuggerIntegrated debugger– And, more, much more than thisAnd, more, much more than this

Page 18: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Plug-in Development Plug-in Development subprojectsubproject• Plug-in Development Environment (PDE)Plug-in Development Environment (PDE)• Eclipse is nothing but a bony frame on Eclipse is nothing but a bony frame on

which dozens of plug-ins have been which dozens of plug-ins have been addedadded

• A plug-in is a piece of code, people who A plug-in is a piece of code, people who create plug-ins use and IDE too, so …create plug-ins use and IDE too, so …– For them Eclipse is a tool and a targetFor them Eclipse is a tool and a target– They use Eclipse in order to write plug-ins They use Eclipse in order to write plug-ins

for Eclipsefor Eclipse

Page 19: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Eclipse Tools projectEclipse Tools project

• Houses subprojects that are a bit Houses subprojects that are a bit farther from Eclipse’s heart (well, farther from Eclipse’s heart (well, kernel, I mean)kernel, I mean)

• Some of them: (no priority)Some of them: (no priority)– Visual Editor subprojectVisual Editor subproject– CDT and COBOL IDE subprojectsCDT and COBOL IDE subprojects– UML2 subprojectUML2 subproject

Page 20: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Visual Editor subprojectVisual Editor subproject

• Are you familiar with VB? Things like:Are you familiar with VB? Things like:– Drag-and-drop tools for:Drag-and-drop tools for:

•Buttons, text fields, objects from palettesButtons, text fields, objects from palettes

•GUI’s building not from scratchGUI’s building not from scratch

• Drag-and-drop are not integrated in Drag-and-drop are not integrated in Eclipse, they are a separate Eclipse, they are a separate download:download:– Visual Editor (VE)Visual Editor (VE)

Page 21: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

CDT and COBOL IDE CDT and COBOL IDE subprojectssubprojects

• C/C++ Development Tools (CDT):C/C++ Development Tools (CDT):– A complete IDE for C/C++ family of A complete IDE for C/C++ family of

languageslanguages

• COBOL IDE:COBOL IDE:– A completely different IDE, that’s A completely different IDE, that’s

because COBOL don’t look anything like because COBOL don’t look anything like Java codeJava code

Page 22: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

UML2 subprojectUML2 subproject

• Helps you create modelsHelps you create models

• Strictly use of standardsStrictly use of standards

• Provide automated pathways from Provide automated pathways from models to codemodels to code

• Now: plug-ins (Omondo, Violet)Now: plug-ins (Omondo, Violet)

• Eclipse Modeling Framework (EMF): Eclipse Modeling Framework (EMF): MOF compliantMOF compliant

Page 23: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Eclipse Technology projectEclipse Technology project

• Is all about outreach: helping the rest Is all about outreach: helping the rest of the world become involved in of the world become involved in EclipseEclipse

• It foster research, educates the massesIt foster research, educates the masses• Act as home for ideas that are on their Act as home for ideas that are on their

way to becoming major subprojectsway to becoming major subprojects• Some examples:Some examples:

– Voice ToolsVoice Tools– AspectJAspectJ

Page 24: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Graphic’s War (OK by now!)Graphic’s War (OK by now!)

• Write Once, Run Anywhere? Java Write Once, Run Anywhere? Java lemmalemma– That’s fine for programs dealing with textThat’s fine for programs dealing with text– What about windows, buttons, and all What about windows, buttons, and all

that “good” stuff?that “good” stuff?

• Each OS has its own graphics Each OS has its own graphics idiosyncracyidiosyncracy– Problems with the OS’s callsProblems with the OS’s calls

Page 25: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Graphic’s War (OK by now!)Graphic’s War (OK by now!)

• Java solution (to preserve its lemma):Java solution (to preserve its lemma):– Abstract Windowing Toolkit (AWT)Abstract Windowing Toolkit (AWT)

•Runs on any OS (JVM)Runs on any OS (JVM)

•Awkward relationship with each OS’s codeAwkward relationship with each OS’s code

•Use of peersUse of peers– Extra layer of codeExtra layer of code– Between the AWT and the OS’s graphical Between the AWT and the OS’s graphical

interface codeinterface code

•Disadvantage: AWT can’t do anything that’s Disadvantage: AWT can’t do anything that’s not similar across all OS (LCD)not similar across all OS (LCD)

Page 26: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Graphic’s War (OK by now!)Graphic’s War (OK by now!)

• People at Sun agreed that AWT was not People at Sun agreed that AWT was not ideal, so they created Swing.ideal, so they created Swing.

• Swing doesn’t rely on peersSwing doesn’t rely on peers– AWT call: “MS-Windows, please display a AWT call: “MS-Windows, please display a

button for me”button for me”– Swing says: “draw some lines, fill in a Swing says: “draw some lines, fill in a

rectangle, put some text in it, …”rectangle, put some text in it, …”• MS-Windows doesn’t know (or care) that you’ve MS-Windows doesn’t know (or care) that you’ve

drawn a button.drawn a button.

– Swing is “pure Java”, and Swing is slowSwing is “pure Java”, and Swing is slow

Page 27: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Graphic’s War (OK by now!)Graphic’s War (OK by now!)

• The Standard Widget Toolkit (SWT):The Standard Widget Toolkit (SWT):– Widget: a component in a GUIWidget: a component in a GUI– People from Object Technology Intl. and IBMPeople from Object Technology Intl. and IBM– First they created widgets for SmallTalk First they created widgets for SmallTalk

then moved to Java.then moved to Java.– Eclipse’s SWT is very fast and efficient, Eclipse’s SWT is very fast and efficient,

Why?:Why?:• Ignores Java’s lemmaIgnores Java’s lemma•Like AWT, it isn’t pure JavaLike AWT, it isn’t pure Java•Unlike AWT, it has no peer layerUnlike AWT, it has no peer layer

Page 28: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Graphic’s War (OK by now!)Graphic’s War (OK by now!)

• SWT isn’t nearly as portable as SwingSWT isn’t nearly as portable as Swing

• NetBeans IDE calls Swing classes to NetBeans IDE calls Swing classes to display its dialogs and editors.display its dialogs and editors.

• Eclipse calls SWT classes.Eclipse calls SWT classes.

• This difference has several important This difference has several important consequences: (next slide)consequences: (next slide)

Page 29: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Graphic’s War (OK by now!)Graphic’s War (OK by now!)

• Consequences:Consequences:– Eclipse runs faster than NetBeansEclipse runs faster than NetBeans– Eclipse’s GI isn´t merely an imitation, Eclipse’s GI isn´t merely an imitation,

it’s the real thingit’s the real thing– Eclipse can use tools specific to each OSEclipse can use tools specific to each OS– In theory, Eclipse isn’t as portable as In theory, Eclipse isn’t as portable as

NetBeansNetBeans•But you can download versión for:But you can download versión for:

– Windows, Linux, Solarix, QNX, UNIX, and Mac OS Windows, Linux, Solarix, QNX, UNIX, and Mac OS XX

Page 30: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Graphic’s War (OK by now!)Graphic’s War (OK by now!)

• Conclusion:Conclusion:

• Using Eclipse you can write Swing, Using Eclipse you can write Swing, SWT, AWT, and text-based SWT, AWT, and text-based applications. You can write whatever applications. You can write whatever Java (or C, or COBOL, or PHP, or …) Java (or C, or COBOL, or PHP, or …) code you’re used to.code you’re used to.

• Relax, and enjoy the ride.Relax, and enjoy the ride.

Page 31: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 32: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 33: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Copyright and LicensesCopyright and Licenses

The following slides were extracted The following slides were extracted from a courseware which is part of from a courseware which is part of the Open Source “ECESIS” project, the Open Source “ECESIS” project, available from:available from:

http://www.eclipse.org/ecesishttp://www.eclipse.org/ecesis

Page 34: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 35: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 36: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 37: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 38: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 39: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 40: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 41: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 42: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 43: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 44: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 45: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 46: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little
Page 47: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Summing UpSumming Up

• StrengthsStrengths– Multi-level architecturesMulti-level architectures

•Plug-ingsPlug-ings– Plug-ingsPlug-ings

Plug-insPlug-ins

– Explicit ports (extension points)Explicit ports (extension points)– Self-description (manifest file (xml))Self-description (manifest file (xml))

•Before it has loaded its Java classesBefore it has loaded its Java classes

– Containers to encapsulate componentsContainers to encapsulate components

Page 48: Eclipse overview An IDE for anything and nothing An IDE for anything and nothing –What’s an IDE? –What for? A little bit of history (not too much) A little

Summing UpSumming Up

• WeaknessesWeaknesses– Strict requirements are not possibleStrict requirements are not possible

• All Eclipse plug-ins are optionalAll Eclipse plug-ins are optional

• They can “extend” but never “include” the They can “extend” but never “include” the functionality of existing components.functionality of existing components.

– No explicit connectorsNo explicit connectors• Each plug-in extends “specific” extension points in Each plug-in extends “specific” extension points in

“specific” components.“specific” components.

• It is not possible to have alternative implementations It is not possible to have alternative implementations of the same functionality (two plug-ins offering the of the same functionality (two plug-ins offering the same service)same service)