everything i always wanted to know about eclipse harry koehnemann rocket gang [email protected]...
TRANSCRIPT
Everything I Always Wanted to Know about Eclipse
Harry KoehnemannRocket Gang
Many slides in this presentation can be found at http://www.eclipse.org/eclipse/presentation/eclipse-slides.ppt
Objectives and Outline
Myth: “Eclipse is a Java IDE” How does Eclipse support
Application developer Platform developer System administrator
Outline Eclipse philosophy and architecture Plug-ins Eclipse productivity features for software developers Rational Software Architect (RSA)
Eclipse Project Aims
Provide open platform for application development tools “Open extensible platform for anything and nothing in particular”
Language agnostic Must teach Eclipse about types (editors, compilation, execution)
Accomplished with plug-ins – editors, views, perspectives Permit unrestricted content types - HTML, Java, C, JSP, EJB, XML,
Word, PPT Facilitate seamless tool integration
At UI and deeper through plug-in extension points Easily add new tools to existing products
Attract community of tool developers Including independent software vendors (ISVs) Capitalize on popularity of Java for writing tools Adopted by major vendors
Workbench Terminology
Tool bar
PerspectiveandFast Viewbar
ResourceNavigatorview
Stackedviews
Propertiesview
Tasksview
Outlineview
Bookmarksview
Menu bar
Messagearea
EditorStatusarea
Editor
Editors, Views, and Perspectives
Workbench (1) Window (0-N)
Page (0-1) – an arrangement of views and editors defined by a perspective Editors - Open, edit, save, close lifecycle
Customized for various content types – Java, XML, C++, … Views
Provide information on some object Views augment editors (ex/ Outline view summarizes content) Views augment other views (ex/ Properties view describes
selection) Perspectives
Arrangements of views and editors Different perspectives suited for different user task Task orientation limits visible views, actions
Brief History of Eclipse
1999 April - Work begins on Eclipse inside OTI/IBM
2000 June - Eclipse Tech Preview ships
2001 March - http://www.eclipsecorner.org/ opens June - Eclipse 0.9 ships October - Eclipse 1.0 ships November - IBM donates Eclipse source base
- eclipse.org board announced – independent control- http://www.eclipse.org/ opens
2002 June - Eclipse 2.0 ships
2004 June - Eclipse 3.0 ships
Eclipse Architecture
Microkernel – everything is a plug-in RCP – minimal set of plug-ins for a rich client application IDE – plugins for application development
Products simply sets of plug-ins – not necessarily hierarchical
Rich Client Platform (~6M)
IDE (factored out in 3.0)
JDT CDT
RCP Example - Eclipse Traderhttp://sourceforge.net/projects/eclipsetrader/
EMF
RSA (IBM Rational)
Partner
…
Base
Community
CommercialCustomer
What’s in the RCP?
Compelling value proposition Leverage large community of plug-ins Help, automatic update, search, compare, CM Branding
Focus effort on core competencies
Windows, Views, Perspectives Code compilation, execution, debugging Tool integration (ant, tomcat)
Eclipse DemoEclipse Demo
Eclipse Plug-ins
Eclipse is a microkernel architecture Everything is a plug-in Behavior provided through plug-ins that communicate via Eclipse APIs
Plug-in structure Set of contributions (menu actions, editors, views, tool tips,
preferences, etc.) Define extension points for integration between plug-ins
Scope Currently ~600 3rd party plug-ins Rational Software Architect has ~1700 plug-ins
Platform Runtime
Workspace
Help
Team
Workbench
JFace
SWT
Eclipse Project
JavaDevelopment
Tools(JDT)
Their Tool
Your Tool
AnotherTool
Eclipse Architecture Overview
Plug-inDevelopmen
tEnvironment
(PDE)
Eclipse Platform
Debug
Eclipse Plug-in Terminology
Plug-in - smallest unit of Eclipse function Big example: HTML editor Small example: Action to create zip files
Extension point - named entity for collecting “contributions” Example: extension point for workbench preference UI
Extension - a contribution Example: specific HTML editor preferences
Fragment - holds some of plug-in’s files Separately installable Logical plug-in = Base plug-in + fragments
Type of Plug-ins
Containment - contains all code for tool’s execution Must execute inside Eclipse Examples – AspectJ
Reference – connects to tool installed externally May or may not execute inside Eclipse Examples – Sysdeo Tomcat
Plug-in installation Install as zip file Use the plug-in installer
Installs plug-ins via the web Can automatically search for latest updates
Menu items and toolbars Descriptor information – plugin.xml, manifest
Simple Plug-in DemoSimple Plug-in Demo
Java Development Tools (JDT)
State of the art Java development environment Packed with productivity features and niceties
Built atop Eclipse Platform Implemented as Eclipse plug-ins Using Eclipse Platform APIs and extension points
Included in Eclipse Project releases Available as separately installable feature Part of Eclipse SDK drops
JDT Goals
Goal: To be #1 Java IDE
Goal: To make Java programmers smile
JDT elements Several views Java editor Incremental compiler Debugger Overkill of configurable preferences
Useful keystrokes - <ctrl>space, <ctrl>1, right-click
Java Editor
“When coding, code is centric” Put all everything (information and actions) around code Help Java developers write good code
Auxiliary views Package Explorer Outline Browse Type Hierarchy
Search Inside current editor with highlighting
Includes javadoc if source is available Across project or entire workspace
Spell check
Java Editor: At your fingertips
Text manipulation Tab indentation Comment/uncomment select code Add a comment Automatic reformatting Add overriding method Generate attribute getter and setter methods Externalize strings to resource bundle for internationalization
Code templates and completion Compound statements – for, while, try, etc. (control-space) Create inherited method stubs (Source-Override Methods) Callable methods (‘.’)
Lists methods – add javadoc!
Java Editor: At your fingertips (cont)
Code Review Semantic indications of issues in multiple locations – Explorer, Editor,
Problems pane Quick Fix automatically updates source for common solutions
Programming by intention Productivity tricks that mimic usage patterns Example – add a parameter to constructor and update rest of system Example – externalize Strings for internationalization
Refactoring
Refactoring actions rewrite source code Within a single Java source file Across multiple interrelated Java source files
Refactoring actions preserve program semantics Does not alter what program does Just affects the way it does it
Value add Encourages exploratory programming Facilitates Agile programming techniques Encourages higher code quality
Makes it easier to refactor poor code
Java Editor: Refactoring Examples
Promote/demote properties in inheritance hierarchy Create an interface from existing class Generalize a type to a supertype in declarations Inline a method invocation Move local variable to attribute Rename class
Updates all usages
Move a class to another package Adds imports for all usages
Can ‘undo’ all refactoring changes
Rational Software Architect
Part of the Software Development Platform (SDP) Merging of several Rational products “RSA is the most feature-rich product” – IT Manager’s Journal 3/25/05
Compared Borland, IBM, Oracle, Sun http://productguide.itmanagersjournal.com/pg/05/03/26/148205.shtml?tid=14487&tid=11105&tid=106
Rational Software Architect
Rose
Eclipse
WebSphereXDE
Clear CaseReq Pro
…
RSA Features
Modeling ala Rose/XDE (built on top of EMF) But, supports *all* UML diagrams and UML 2.0 Compare and merge models
Transformations from UML models (Java, C++, EJBs) Integration with application servers ‘Code Review’ – Preferences ->Java->Code Review Lots of opportunities for customer and partner enhancements
Built on the Eclipse open, extensible plug-in model Why extend?
Generate design and architecture documents Metrics reports Import/export “Integration” - duct tape and glue*
*credit to Joe Mooney, General Dynamics
Extending Eclipse and RSA
Looks Familiar?
Eclipse Domain Broader than Software
For More Information
Eclipse http://www.eclipse.org/
Rich Client Platform http://www.eclipse.org/rcp/
Eclipse plug-ins http://www.eclipseplugincentral.com/