Eclipse
Under the Hood
Brian Kidney
bkidney at ieee dot org
What is Eclipse?
- Most people know the IDE
- This is part of what Eclipse is about
- Eclipse is a community
- Goal to produce open cross platform development tools
What is Eclipse? (Cont..)
- Industry involvement from:
- Borland
- IBM (and Rational Software)
- QNX Software Systems
- Red Hat
- SuSE
- TogetherSoft
- ... and many more
What is Eclipse? (Cont...)
- Eclipse is a platform
- Designed for building IDEs and arbitrary tools
- Runs their standard Java IDE
- Can run their C/C++ IDE
- Can be extended (or refocused) by you, the user
Overview
- Eclipse Java Development Environment
- Eclipse Platform
- Architecture
- Workspaces
- Workbenches (and UI Toolkits)
- Team Support and Help System
- Plug-ins
Eclipse Java Development Environment
Eclipse Platform - Architecture
- The Eclipse Platform is designed to: (from Eclipse Platform Technical Overview)
- Support the construction of a variety of tools for application development.
- Support an unrestricted set of tool providers, including independent software vendors (ISVs).
- Support tools to manipulate arbitrary content types (e.g., HTML, Java, C, JSP, EJB, XML,
and GIF).
- Facilitate seamless integration of tools within and across different content types and tool
providers.
- Support both GUI and non-GUI-based application development environments.
- Run on a wide range of operating systems, including Windows®, LinuxTM, Mac OSX, Solaris
AIX, and HP-UX
- Capitalize on the popularity of the Java programming language for writing tools.
Eclipse Platform - Architecture
Eclipse Platform - Workspaces
- Manages files
- Consists of Projects which map to file locations
- Each project has a nature
- Manages the history of files
- Provides a marker mechanism
Eclipse Platform - UI Toolkits and the Workbench
- SWT
- AWT did not implement high-level widgets
- Swing extended AWT, but lagged in look and feel
- SWT designed to provide high-level widgets with native look and feel
Eclipse Platform - UI Toolkits and the Workbench (Cont...)
- JFace
- Toolkit developed to ease common UI programming tasks
- Images, fonts, preferences, wizards
- Provides actions and viewer
- Action ties task and decorators to be used by mulitple ui components
- Viewers tie high-level ui components to data, handling the redering
Eclipse Platform - UI Toolkits and the Workbench (Cont...)
- Workbench provides
- Editors
- Open, edit and save functionality
- Open-save-close lifecycle
- Views
- Informational displays like properties or hierarchy
- Perspectives
- Action ties task and decorators to be used by mulitple ui components
- Viewers tie high-level ui components to data, handling the redering
Eclipse Platform - Team Support and Help System
- Team support provides source control extensions
- Help System provides management of HTML help
Eclipse Platform - Plug-ins
- Everything in Eclipse is a plug-in
- Small runtime loads main plug-in
- All other plug-ins are enumerated at startup
- Plug-ins not loaded until needed
Eclipse Platform - Plug-ins (Cont...)
- Plug-ins are a set of files
- Manifest file (Required)
- Resource files (HTML, images, icons...)
- Executable code (if plug-in is executable)
- All files are located in the "plugins" off the main program directory
Eclipse Platform - Plug-ins (Cont...)
- Plug-ins are a set of files
- Manifest file (Required)
- Resource files (HTML, images, icons...)
- Executable code (if plug-in is executable)
- All files are located in the "plugins" off the main program directory
Eclipse Platform - Plug-ins (Cont...)
- Plug-ins rely on Extension Point
- Extension points are defined methods for adding functionality
- New editors, menu items, etc..
- Plug-in can also offer new extension points
Resources (while I take Questions)