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 bit of history (not too much) How’s the big scheme of thing? How’s the big scheme of thing? –Projects –Subprojects Graphic’s War (OK by now!) Graphic’s War (OK by now!)
Eclipse overview Plug-ins architecture Plug-ins architecture Major Components Major Components Strengths Strengths Weaknesses Weaknesses Conclusions Conclusions
What’s an IDE? An all-in-one tool for: An all-in-one tool for: –Writing, editing, –compiling, running, debugging, –Documenting, –Testing and deliver Computer applications
A little bit of history November 2001: IBM released $40 million worth of software tools into the public domain. November 2001: IBM released $40 million worth of software tools into the public domain. Several organizations create a consortium of IDE providers: Eclipse Foundation, Inc. Several organizations create a consortium 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 independent not-for-profit organization 2004: Eclipse Foundation turn into an independent not-for-profit organization
Versions evolution 1.0 Nov Nov Jun Jun Aug Aug Nov Nov Mar Mar Jun Jun Nov Nov Mar Mar Jun Jun Sept Sept Mar Mar Jun Jun Sept Sept Jan Jan 2006
How’s the big scheme of thing? Division into projects and subprojects Division into projects and subprojects Projects (3) Projects (3) –Eclipse project –Eclipse Tools project –Eclipse Technology project
Eclipse project Eclipse Foundation’s major backbone Eclipse Foundation’s major backbone Divided in three subprojects: Divided in three subprojects: –Platform subproject –Java Development Tools subproject (JDT) –Plug-in Development subproject
Platform subproject Deals with things common to all aspects of Eclipse: Deals with things common to all aspects of Eclipse: –Text editing –Searching –Help pages –Debugging –versioning
Platform subproject (Core) Consists of the barebones necessities: Consists of the barebones necessities: –Code for starting and running Eclipse –Creation and management of plug-ins –Management of basic program resources
Platform subproject Defines the general look and feel Defines the general look and feel It is based on two technologies: It is based on two technologies: –Standard Widget Toolkit (SWT): controversial –JFace: not-so-controversial
Standard Widget Toolkit Collection of basic graphical interface classes and methods, including: Collection of basic graphical interface classes and methods, including: –Buttons –Menus –Labels –Events
JFace A set of higher-level graphical interface tools, including: A set of higher-level graphical interface tools, including: –Wizards –Viewers –Text formatters Jface builds on the work that SWT starts.
Java Development Tools subproject People’s minds: an IDE for Java development People’s minds: an IDE for Java development Start running Eclipse, you’ll see: Start running Eclipse, you’ll see: –Java perspective –Java projects –Java search tools –A bunch of Java-specific stuff
Java Development Tools subproject But, Eclipse is language-neutral But, Eclipse is language-neutral Happens to house a mature Java development environment, it’s wrong? Happens to house a mature Java development environment, it’s wrong? The JDT subproject includes: The JDT subproject includes: –Java compiler –Java editor enhancements –Integrated debugger –And, more, much more than this
Plug-in Development subproject Plug-in Development Environment (PDE) Plug-in Development Environment (PDE) Eclipse is nothing but a bony frame on which dozens of plug-ins have been added Eclipse is nothing but a bony frame on which dozens of plug-ins have been added A plug-in is a piece of code, people who create plug-ins use and IDE too, so … A plug-in is a piece of code, people who create plug-ins use and IDE too, so … –For them Eclipse is a tool and a target –They use Eclipse in order to write plug-ins for Eclipse
Eclipse Tools project Houses subprojects that are a bit farther from Eclipse’s heart (well, kernel, I mean) Houses subprojects that are a bit farther from Eclipse’s heart (well, kernel, I mean) Some of them: (no priority) Some of them: (no priority) –Visual Editor subproject –CDT and COBOL IDE subprojects –UML2 subproject
Visual Editor subproject Are you familiar with VB? Things like: Are you familiar with VB? Things like: –Drag-and-drop tools for: Buttons, text fields, objects from palettes Buttons, text fields, objects from palettes GUI’s building not from scratch GUI’s building not from scratch Drag-and-drop are not integrated in Eclipse, they are a separate download: Drag-and-drop are not integrated in Eclipse, they are a separate download: –Visual Editor (VE)
CDT and COBOL IDE subprojects C/C++ Development Tools (CDT): C/C++ Development Tools (CDT): –A complete IDE for C/C++ family of languages COBOL IDE: COBOL IDE: –A completely different IDE, that’s because COBOL don’t look anything like Java code
UML2 subproject Helps you create models Helps you create models Strictly use of standards Strictly use of standards Provide automated pathways from models to code Provide automated pathways from models to code Now: plug-ins (Omondo, Violet) Now: plug-ins (Omondo, Violet) Eclipse Modeling Framework (EMF): MOF compliant Eclipse Modeling Framework (EMF): MOF compliant
Eclipse Technology project Is all about outreach: helping the rest of the world become involved in Eclipse Is all about outreach: helping the rest of the world become involved in Eclipse It foster research, educates the masses It foster research, educates the masses Act as home for ideas that are on their way to becoming major subprojects Act as home for ideas that are on their way to becoming major subprojects Some examples: Some examples: –Voice Tools –AspectJ
Graphic’s War (OK by now!) Write Once, Run Anywhere? Java lemma Write Once, Run Anywhere? Java lemma –That’s fine for programs dealing with text –What about windows, buttons, and all that “good” stuff? Each OS has its own graphics idiosyncracy Each OS has its own graphics idiosyncracy –Problems with the OS’s calls
Graphic’s War (OK by now!) Java solution (to preserve its lemma): Java solution (to preserve its lemma): –Abstract Windowing Toolkit (AWT) Runs on any OS (JVM) Runs on any OS (JVM) Awkward relationship with each OS’s code Awkward relationship with each OS’s code Use of peers Use of peers –Extra layer of code –Between the AWT and the OS’s graphical interface code Disadvantage: AWT can’t do anything that’s not similar across all OS (LCD) Disadvantage: AWT can’t do anything that’s not similar across all OS (LCD)
Graphic’s War (OK by now!) People at Sun agreed that AWT was not ideal, so they created Swing. People at Sun agreed that AWT was not ideal, so they created Swing. Swing doesn’t rely on peers Swing doesn’t rely on peers –AWT call: “MS-Windows, please display a button for me” –Swing says: “draw some lines, fill in a rectangle, put some text in it, …” MS-Windows doesn’t know (or care) that you’ve drawn a button. MS-Windows doesn’t know (or care) that you’ve drawn a button. –Swing is “pure Java”, and Swing is slow
Graphic’s War (OK by now!) The Standard Widget Toolkit (SWT): The Standard Widget Toolkit (SWT): –Widget: a component in a GUI –People from Object Technology Intl. and IBM –First they created widgets for SmallTalk then moved to Java. –Eclipse’s SWT is very fast and efficient, Why?: Ignores Java’s lemma Ignores Java’s lemma Like AWT, it isn’t pure Java Like AWT, it isn’t pure Java Unlike AWT, it has no peer layer Unlike AWT, it has no peer layer
Graphic’s War (OK by now!) SWT isn’t nearly as portable as Swing SWT isn’t nearly as portable as Swing NetBeans IDE calls Swing classes to display its dialogs and editors. NetBeans IDE calls Swing classes to display its dialogs and editors. Eclipse calls SWT classes. Eclipse calls SWT classes. This difference has several important consequences: (next slide) This difference has several important consequences: (next slide)
Graphic’s War (OK by now!) Consequences: Consequences: –Eclipse runs faster than NetBeans –Eclipse’s GI isn´t merely an imitation, it’s the real thing –Eclipse can use tools specific to each OS –In theory, Eclipse isn’t as portable as NetBeans But you can download versión for: But you can download versión for: –Windows, Linux, Solarix, QNX, UNIX, and Mac OS X
Graphic’s War (OK by now!) Conclusion: Conclusion: Using Eclipse you can write Swing, SWT, AWT, and text-based applications. You can write whatever Java (or C, or COBOL, or PHP, or …) code you’re used to. Using Eclipse you can write Swing, SWT, AWT, and text-based applications. You can write whatever Java (or C, or COBOL, or PHP, or …) code you’re used to. Relax, and enjoy the ride. Relax, and enjoy the ride.
Copyright and Licenses The following slides were extracted from a courseware which is part of the Open Source “ECESIS” project, available from:
Summing Up Strengths Strengths –Multi-level architectures Plug-ings Plug-ings –Plug-ings Plug-ins –Explicit ports (extension points) –Self-description (manifest file (xml)) Before it has loaded its Java classes Before it has loaded its Java classes –Containers to encapsulate components
Summing Up Weaknesses Weaknesses –Strict requirements are not possible All Eclipse plug-ins are optional All Eclipse plug-ins are optional They can “extend” but never “include” the functionality of existing components. They can “extend” but never “include” the functionality of existing components. –No explicit connectors Each plug-in extends “specific” extension points in “specific” components. Each plug-in extends “specific” extension points in “specific” components. It is not possible to have alternative implementations of the same functionality (two plug-ins offering the same service) It is not possible to have alternative implementations of the same functionality (two plug-ins offering the same service)