Eclipse for
Eclipse for
Smalltalkers
Smalltalkers
Eric Clayberg
Eric Clayberg
Sr. Vice President of Product Development
Sr. Vice President of Product Development
Instantiations, Inc.
Instantiations, Inc.
July 14, 2003
July 14, 2003
clayberg
clayberg
@instantiations.com
@instantiations.com
http://www.instantiations.com
http://www.instantiations.com
978
978
-
-
750
750
-
-
3621
3621
What a difference a year makes!
Who Am I?
Who Am I?
z First used Smalltalk in late ‘80s; full-time since 1991; First used Java in 1996; Eclipse in 2000
z Co-Founder of (the original) ObjectShare in 1992;
V.P. of Product Development for ParcPlace-Digitalk 1996-97 V.P. of Product Development for Instantiations since 1997
z Developer & Chief Architect of WindowBuilder Pro and over a dozen other commercial Smalltalk add-on products (VA Assist Pro, WidgetKits, etc.)
z Multi-faceted Software Company - founded in 1997
(out of the ashes of ParcPlace, Digitalk and ObjectShare)
z Advanced Tier IBM Business Partner;
Winner of the 2001 IBM Solutions Excellence Award for “Cool Tool”
(for a product built with Smalltalk)
z VisualAge Smalltalk product line: VA Assist Pro, WindowBuilder Pro,
WidgetKits, VSE to VAST Translation Tool, GF/ST; Also known for: JOVE, VA Assist/J, jFactor, jKits, CodePro Studio for WebSphere & JBuilder
Agenda
Agenda
z
What is Eclipse?
z
Eclipse Mechanics
What is Eclipse?
What is Eclipse?
The Eclipse Project is an open source software
development project dedicated to providing a robust, full-featured, commercial-quality, industry platform for the development of highly integrated tools.
The Eclipse Platform is an open extensible IDE.
“Eclipse” provides building blocks and a foundation for constructing and running integrated software
development tools. It is composed of three primary sub-components: Platform, Java Development Tools (JDT), and Plug-in Development Environment (PDE).
“An IDE for anything, and for nothing in particular”
What is WebSphere Studio
What is WebSphere Studio
Workbench?
Workbench?
IBM WebSphere Studio Workbench is based on the Eclipse platform and is fully supported by IBM. This is the basis for all of IBM’s Eclipse-based commercial tools
IBM WebSphere Studio Application Developer is a J2EE application development tool optimized for the WebSphere software platform. Application Developer represents the next generation of IBM offerings and is the successor to VisualAge for Java Enterprise.
Eclipse Overview
Eclipse Overview
z
Created by OTI & IBM – the same folks who brought you
ENVY
and
VisualAge Smalltalk
z
The technology is organized around a
workbench
into which any
number of
tools
can be installed.
z
The workbench provides the
run-time
context in which these
tools run.
z
Tools generally operate on the tree of
resources
managed by the
workbench.
z
Resources are regular files and folders, arranged into larger units
called
projects
.
z
The
desktop
is built on top of the platform to provide a
general-purpose graphical user interface (GUI) to the
workbench
and its
resources.
z
Tools
integrate seamlessly into the platform by contributing
Key Components
Key Components
z
Platform Services
z Resource Management
z Team Programming Model
z Interoperability with non-WebSphere Tools
z Debugging
z Extensibility Mechanism
z
Common Frameworks
z Standard Widget Toolkit (SWT)
z User Interface Framework (JFace)
z Source Editing Framework (SEF)
z Graphical Editing Framework (GEF)
z
Platform Extensions
z Desktop
z Java Tools
Eclipse Mechanics
Eclipse Mechanics
z
User’s Perspective
z General Characteristics
z Multi-Pane, MDI Interface
z Standard IDE Features
z Semantic Searching
z Refactoring
z
Developer’s Perspective
z General Characteristics
z Extension API
z Workbench Extension Points
User’s Perspective
User’s Perspective
General Characteristics
General Characteristics
z
Eclipse is a state-of-the-art IDE…for any language
Every change saved forever (ENVY) Configurable “local history”
Change Tracking
ENVY, StORE, etc. CVS, PVCS, ClearCase, etc.
Repository
Everything Windows, Linux, Mac, Solaris, QNX, AIX
Platforms
Incremental with hot code replacement Incremental or batch, decent hot code
replacement with JDK 1.4
Compilation
Excellent Good, especially with hot code replacement
Debugger
Virtually unlimited for a moderately skilled developer
Limited to exposed preferences and plugin points
Customization
Problematic (IDE dependent) Easy, well defined
Deployment SUnit JUnit Testing Smalltalk Java, HTML, XML, C++, C#, etc. Languages Multi-window Single window, MDI-like
UI Style
Classes & Methods, very OO Mostly File based with some nice OO views
Navigation
Smalltalk IDE Eclipse
Multi
Standard IDE Features
Standard IDE Features
z Eclipse includes most “modern” IDE features like drag/drop, syntax coloring, code assist, etc. Various commercial and open-source GUI builders are
available.
z Eclipse also includes most “standard” Smalltalk IDE features like true semantic searching (e.g., senders & implementors with various scoping options)
Great choices IBM JVE, SWT Workbench,
Many Open Source Projects
GUI Builder
Yes Yes (some scoping issues)
Workspace/Scrapbook Yes Yes Macros Limited Excellent Code Assist Yes Yes Formatter
Yes (IDE dependent) Yes
Syntax Coloring
Very powerful, semantic-based, easily Very powerful, semantic-based,
Searching
Yes (IDE dependent) Yes
Drag & Drop
Smalltalk IDE Eclipse
Semantic Searching
Semantic Searching
z
Declaration and Reference searches for types, methods and fields
Refactoring
Refactoring
z Eclipse includes extensive built-inrefactoring capabilities with a comprehensive API
z The Refactoring Browser is available for most Smalltalk dialects and
includes a very nice scriptable replacement engine Both Both Encapsulate/Inline InstVar Both Both
Pull Up/Push Down InstVar/Method
Rename, Add Rename, Add,
Rearrange
Modify Method Parameters
Both Both
Extract/Inline Method
Both Both
Inline/Extract Local Variable
All All
Rename Class/InstVar/Method
Smalltalk IDE Eclipse
Demo
Developer’s Perspective
Developer’s Perspective
Highly coupled, easy for one plugin to kill entire IDE, easy for tools to collide Very little, good isolation provided,
no chance of collision Plugin Coupling Excellent Moderate Reflection Tends to be monolithic Highly Modular, dynamically built
based on available plugins
Modularity
All classes are visible Controlled by plugins and special
class loaders Visibility Full Source Full Source Source Access Image-Based File-Based Structure Smalltalk IDE Eclipse
General Characteristics
General Characteristics
z
Eclipse is a well-designed, well-factored, OO environment
z
Its few weaknesses are due to Java language restrictions
Extension API
Extension API
Easy, Ad-hoc, Unlimited Rigid, Formal, Well defined, Limited
Extensibility
Startup hook available Startup hook available
Plugin Activation
Smalltalk Java, XML
Extension Language
Unlimited access, fully public Nearly unlimited access (some is
marked private or internal)
API Access
Native or Emulated (Dialect dependent), no LCD Native, SWT, JFace, ActiveX, no LCD
UI Library
Smalltalk IDE Eclipse
z Eclipse provides a full-featured API
z Plugins are written in Java and integrated via XML
z Plugins aren’t activated until actually needed (a startup hook is available just in case)
<objectContribution
objectClass="org.eclipse.core.resources.IFile"
nameFilter="*.java“ id="com.foo.openMyJavaEditor"> <action label=“Edit File“ icon="images/my_editor.gif"
id="com.foo.openMyEditorAction" class="com.foo.OpenMyEditorActionDelegate" enablesFor="1“ menuBarPath="additions" helpContextId=“my_editor_action_context"> </action> </objectContribution>
Workbench Extension Points
Workbench Extension Points
z Workbenchz Action Sets - used to add menus, menu items and toolbar buttons to the common areas in the workbench window
z Editors- used to add new editors to the workench
z Editor Actions - used to add actions to the menu and toolbar for editors
z Export Wizards - used to register export wizard extensions
z Import Wizards - used to register import wizard extensions
z New Wizards - used to register resource creation wizard extensions
z Perspectives - used to add perspective factories to the workbench
z Perspective Extensions - used to extend perspectives
z Popup Menus - used to add new actions to pop-up menus
z Preference Pages- used to add pages to the preference dialog box
z Property Pages - used to add additional property page for objects of a given type
z Views– used to define additional views for the workbench
Other Extension Points
Other Extension Points
z Workspacez Builders - The job of a builder is to process a set of resource changes
z Markers - A marker is a kind of metadata (similar to properties) which can be used to tag resources with user information
z Natures - A nature associates lifecycle behavior with a project
z Compare – content viewers, merge viewers
z Ant – objects, tasks, types
z Targets (Repositories)
Demo
Conclusion
Conclusion
z Eclipse is a state-of-the-art IDE that is as good as or better than almost anything found anywhere in the world (it is certainly the best “popular” IDE available)
z Smalltalk still has a slight edge in building highly reflexive and extensible tools
z Java, the language, is Eclipse’s weakest link, but this weakness is minimized by the strength of the Eclipse architecture
z The Java IDE world has (finally) caught up and continues to move forward
z Eclipse is powerful enough to support the creation of almost any IDE tool or facility (including a Smalltalk IDE!)
z High quality semantic searching and refactoring capabilities are no longer unique to the Smalltalk world
z Smalltalk vendors should not rest on their laurels and assume that Smalltalk IDEs will always be better…
Eclipse Resources
Eclipse Resources
z Eclipse & WebSphere Studioz Eclipse.org Home Page
http://www.eclipsecorner.org/ z Downloads http://www.eclipsecorner.org/downloads/ z Technical Articles http://www.eclipsecorner.org/articles/ z Mailing Lists http://www.eclipsecorner.org/mail/ z FAQ http://www.eclipse.org/eclipse/faq/eclipse-faq.html z IBM WebSphere Studio Family
http://www-3.ibm.com/software/ad/adstudio/ z Eclipse Plugins http://eclipse-plugins.2y.net/ z Newsgroups news://www.eclipse.org/eclipse.platform news://news.software.ibm.com/ibm.software.websphere.studio.application-site-developer z Other
z Instantiations’ Web Site