Jazz : A Toolkit for Object-Oriented 2D Graphics in Java (with zooming)
by Benjamin B. Bederson and Britt McAlister
Summary by Bongwon Suh
Comments
This paper clearly demonstrates the motivation and the architecture of Jazz.
I think Jazz toolkit can be a nice guide to implement ZUI applications. Jazz
provides developers a general ,easy and powerful way to build it. Jazz has clear
structure (fig. 1) and its components are easy to extend. So far, so good.
But Jazz is so brand-new system that there is only a few application which
was implemented in it - even Jazz itself is under construction. I think this
could be one of major problems for justifying the usefulness of Jazz. I hope
that nice applications built in Jazz could prove it soon.
Sharing nodes over distributed systems.
I think sharing nodes over networks would be valuable. I remember a short
video clip about Pad. In that, two systems shared one zoomable space and two
users were drawing each own part of a face (one was drawing eyes, the other was
drawing outline?)
I think this could be implemented easily by sharing ZNode
references over RMI. There might be problems such as network overhead, security
checking etc. But It seems that including this feaure is not a bad idea.
Questions
Jazz.IO : How does it work?
ZWriteObjectRecurse() method name.
Summary
- Introduction
2D graphics toolkit : renderer only
3D graphics toolkit :
renderer + scenegraph
Jazz : 2D but supports scenegraph
;
general-purpose toolkit to help developers of application that use
object-oriented 2D graphics for multiple platforms
- Why another ZUI Toolkit (Reason for upgrading from Pad++)
Tightly coupled with X and Tcl/Tk
Class structure problem (hard
to extend)
Aiming Synergy effect with Java
- Risk
- Design trade-Offs
Clean design over speed
Speed over memory usage
No specific
object policy
No specific visual or interaction policy
Support for
complex applications
- Jazz Architecture
Scenegraphs
Optimized renderer
Visual components : Fig. 2
sticky Objects
Cameras : surfaces or internal cameras
Drawing
order
Coordinate system
Object storage
Lenses
Events
Layout
- Creating new visual components
Extend ZVisualComponent class and define paint(), computeLocalBounds()
and pick() method
- Model Based Objects
ZModel : whenever data model changes, a visual component would be
notified and would re-render itself.
- Multiple representations of objects
- Java.IO
Conventional Java serialization
: not all core Java classes
implement the Serialization interface
: Lack of version safety
- Current Status
Do it right state
Performance issue
Faster JVM, Java2D library
Optimizing code
Implement potion of
Java2D into native code.