05-830, User Interface
Software, Spring, 1999
Lecture 17, April 21,
1999
Copyright © 1999 - Brad A. Myers
Previous
Lecture . . .
Final Exam Instructions
Component Technologies
Overview
- Andrew Toolkit, OLE, OpenDoc, Java Beans
- Goals:
- Allow different applications to co-exist closely
- Data from one to another be "active", unlike Cut and Paste
- No need for an application to have a viewer for all kinds of data
- Just invoke the right editor
- Allow smaller applications because don't have to implement redundant
functions
- No need for Microsoft Word to implement a drawing program
- PowerPoint and Excel can share a charting program
- Reusable pieces
- Allow applications from different vendors to cooperate
- Concepts:
- Components -- Andrew "Insets" = OLE "Embedded Object"
= OpenDoc "Parts" = Java "Beans"
- Containers -- also called "Shells", "Frames", "Forms", "BeanBox":
what the
components are embedded in.
- Issues:
- Sharing and Controlling the menus, which might be global menubars
- Sharing and Controlling the mouse pointer: who gets the clicks?
- "Use" vs. "Mention" problem
- How save contents to a file ("persistence")
- Sharing and Controlling the space: How layout the components?
- How big are components? Who decides?
- Component, user or container?
- Where do they go?
- How embed a new kind of object?
- Pick from a list of all possible applications?
- Components register themselves when loaded. (network?)
- Dynamic loading of code for component
- Need to dynamically load and link to the code of the new component
- Components have to be (one) rectangle?
- Shapes?
- Multi-line text flow? (e.g., for an equation)
- Drag and drop among components, and of components
- OLE: How find out which protocols the component supports?
- JavaBeans: How interface to an Interactive Builder?
Approximate Chronology
- Andrew ~1985
- Apple Publish & Subscribe (System 7 ~ 1990)
- Apple Events & Apple Scripting
- OLE 1
- OLE 2
- OpenDoc
- Java Beans
Andrew Toolkit
- Main development, 1985-1987
- Goal: embed any kind of editor inside of a text editor (recursively)
- Custom object system in C
- Embedding new kinds of objects: type in the Unix file name
- Originally with its own window system, eventually with X/11
- Model-View architecture
- not WYSIWYG
- fonts correct, but layout based on window size
- assumed tiled window manager so user has less control over window size.
- External representation for saving documents
- Textual, so easy to mail, etc.
- Protocol to tell components when to start writing to the file
OLE
- Microsoft's technology for components
- "Object Linking and Embedding"
- Quite complicated due to need to be
- backwards compatible
- language independent (multiple programming languages)
- not shared address space
- Somewhat easier if use MFC framework rather than raw C or
C++ calls
- Based on "COM" = "Component Object Model"
- Commercial Third-party components:
"COM supports the only currently viable component marketplace.
The market for third-party components based on COM has been estimated at
US$670 million dollars in 1998, with a projected 65 percent compound annual
growth rate, growing to approximately US$3 billion dollars by 2001. (Source:
Giga Information Group)"
http://www.microsoft.com/com/default.asp
- also:
- OLE Automation (control app from Visual Basic, etc.)
- Also for spell checkers, EndNote, etc.
- OLE Controls (how create new widgets, especially for use with Visual
Basic)
- Query OLE objects to ask them what "interfaces" (protocols) they
support
- Then use the protocols for communication
- Embedded Object vs. Linked Object -- where the "real" data is
- "In-place activation" (not in OLE 1.0)
- Double click to open
- Modifies main menubars
- Renamed "ActiveX", which is designed for use with
the Web
- Allows OLE controls to run inside Internet Explorer and for
regular applications
- Java (or VB, Delphi, C, etc.) applications in an OLE wrapper
- "Encapsulation" of components
- Only runs on Win32 machines
- Thousands of controls and components available
"ActiveX controls are among the many types of components
that use COM technologies to provide interoperability with other
types of COM components and services. ActiveX controls are the third version
of OLE controls (OCX), providing a number of enhancements
specifically designed to facilitate distribution of components over high-latency
networks and to provide integration of controls into Web browsers. These
enhancements include features such as incremental rendering
and code signing, to allow users to identify the authors of controls before
allowing them to execute."
- http://www.microsoft.com/oledev/
OpenDoc
- From Apple
- Officially "CI Labs" consortium (with IBM, Novell, Adobe, 300 others...)
- Now officially not to be supported by Apple -- abandoned
- All C++, so easier to use
- True object system with inheritance
- Addressed some perceived shortcomings of OLE:
- Overlapping and non-rectangular shaped frames
- Editing of multiple objects at same time
- Active ("Live") objects
- Better network support (CORBA compliant)
- Claims less development effort than OLE
- OpenDoc provides OLE compatibility
- Formerly: http://www.opendoc.apple.com// now disappeared, also www.cilabs.org
and www.cil.org are apparently gone also.
- Pretty cool network browser "CyberDog" made with OpenDoc
Java Beans
- Component technology for Java
- Different from Applets, since Applets don't interact with each other
- Takes advantage of features of Java
- Some added specifically to make components easier
- "Platform Neutral" -- fully portable
- Security for untrusted components
- "Java Core Reflection" - for Introspection - to find out what methods
a class supports
- If follow "Design Patterns", then don't have to explicitly specify
the interface
- e.g., GetFoo, SetFoo for the foo property
- "Java Object Serialization" - to store to files ("persistence")
- AWT - for layout and graphics
- Goal: to be simple and small
- Can be easily integrated into a builder tool (and edit exposed properties)
- "Bridge" to OLE and OpenDoc
- Uses CORBA and remote method invocation for networking
- "Real" support for networking and distributed computation
- Each component runs in a separate address space (for security)
- Beans Development Kit (BDK)
- "BeanBox" -- container
- Implements a kind of constraints with property-change-listeners
- Features:
- Introspection: enables a builder tool to analyze how a
Bean works
- Customization: enables a developer to use an
app builder tool to customize the appearance and behavior of a Bean
- Events: enables Beans to communicate and connect
together
- Properties: enable developers to customize
and program with Beans
- Persistence: enables developers to customize
Beans in an app builder, and then retrieve those Beans, with customized features
intact, for future use
- "Glasgow" version, part of "Java 2"
- The Extensible Runtime Containment and Services Protocol (v0.99,
Aug.24) - find out about the container of the bean
- The Drag and Drop Subsystem for the Java Foundation
Classes (v0.96, Aug.24) - interoperate with native drag-and-drop
- The JavaBeans Activation Framework (Released, Mar.17)
- find type of data and what operations are available for it
- Future: Menubar merging, etc.
- InfoBus architecture
- Developed by Lotus, endorsed by Sun
- Extends JavaBeans by providing a set of enhanced interfaces to share
and exchange dynamic data.
- E.g., data "wrappers" for legacy databases and visualization systems
- Communication among beans on the client side in the same JVM
- JavaBeans Web Pages
(http://java.sun.com/beans/)
- List of Commercial Beans (about 257 as of 4/19/99):
http://beans.cuesta.com/
Back to 05-830 main page