USENIX - COOTS '98


4th USENIX Conference on Object-Oriented Technologies and Systems

April 27-30, 1998, Eldorado Hotel, Santa Fe, New Mexico

What is Included and Our Guarantee
Continuing Education Credits
About the Instructors
Register now to guarantee your first choice.

Tutorial Program

Each tutorial runs from either 9:00 am to 12:30 pm or from 1:30 pm to 5:00 pm. Please select one morning and one afternoon tutorial. Sorry, no partial or split day registrations are allowed.

Monday, April 27

Morning Session: 9:00 am - 12:30 pm

M1am Designing Concurrent Object-Oriented Programs in Java Part 1
David Holmes, Microsoft Research Institute, Macquarie University; Doug Lea, SUNY Oswego

M2am Understanding COM and MTS
David Chappell, Chappell & Associates

M3am Building Distributed CORBA Applications In C++
Steve Vinoski, IONA Technologies, Inc.

Afternoon Session: 1:30pm - 5:00 pm
M4pm Designing Concurrent Object-Oriented Programs in Java Part 2
David Holmes, Microsoft Research Institute, Macquarie University; Doug Lea, SUNY Oswego

M5pm Designing with Patterns
John Vlissides, IBM Research

M6pm Distributed COM and MTS: The Programming Model, the Protocol and the Runtime Architecture
Don Box, DevelopMentor

Tuesday, April 28

Morning Session: 9:00 am - 12:30 pm

T1am Framework and Component Modeling for Java with UML
Desmond D'Souza, Icon Computing, Inc.

T2am Distributed Computing with Java Remote Method Invocation
Jim Waldo and Ann Wollrath, Sun Microsystems, Inc.

T3am High-Performance C++ Programming
Scott Meyers, Software Development Consultant

Afternoon Session: 1:30pm - 5:00 pm
T4pm Java/RMI, DCOM, and CORBA Interworking
Keith Moore, Hewlett-Packard Laboratories

T5pm Three Cool Things in C++
Scott Meyers, Software Development Consultant

T6pm Java Beans
Prithvi Rao, KiwiLabs

Master the newest technology

Technology is changing more rapidly than ever before. No matter what your special expertise is, you are expected to stay on top of the latest improvements and do your job. Sign up for tutorials and you will get an immediate payoff. Gain command of the newest developments and put them to work at your site.

USENIX tutorials aim to provide the critical information you need. Delivered by experts with hands-on experience, tutorials are practical, intensive, and essential to your professional development.

Our guarantee: If you feel a tutorial does not meet the high standards you have come to expect from USENIX, let us know by the first break and we will either change you to any available tutorial immediately or arrange for you to attend another tutorial at another USENIX event without paying another fee.

Tutorial fees include:

  • Admission to the tutorials you select
  • Printed and bound tutorial materials from your sessions
  • Lunch

Continuing Education Units

USENIX provides Continuing Education Units (CEUs) for a small additional administrative fee. The CEU is a nationally recognized standard unit of measure for continuing education and training, and is used by thousands of organizations. Each full-day USENIX tutorial qualifies for 0.6 CEUs. You can request CEU credit by completing the CEU section on the registration form. USENIX provides a certificate for each attendee taking a tutorial for CEU credit, and maintains transcripts for all CEU students. CEUs are not the same as college credits. Consult your employer or school to determine their applicability.

Register now to guarantee your first choice. Seating is limited.

Tutorial Descriptions

M1am Designing Concurrent Object-Oriented Programs in Java (Part 1)
David Holmes, Microsoft Research Institute, Macquarie University; Doug Lea, SUNY Oswego

Who should attend: Anyone involved, or planning to get involved, in the development of concurrent OO applications. Basic familiarity with the Java is a prerequisite.

Concurrent programming has mostly been the domain of systems programmers rather than application developers. Concurrent object-oriented programming has seen a resurgence recently, due mainly to the widespread acceptance of the Java programming language. Java's support for concurrent programming has enticed many developers to try their hand at concurrent applications. Yet the use of concurrency within a Java application poses many traps for the unwary.

This tutorial demonstrates various design patterns and techniques for constructing concurrent object-oriented applications in Java and for managing that concurrency in an effective way. On the language side we look at what Java provides to support concurrent programming. On the design side we look at object structures and design rules that can successfully resolve the competing forces (safety, liveness, efficiency, coordination, reusability) present in concurrent software design problems.

This morning tutorial includes:

  • Java concurrency mechanisms and classes (threads, locks, monitors)
  • Design for multithreaded safety and liveness
    • Locking, containment, controlling access and mutability
    • Examples from selected Java library components
  • Designing and implementing state dependent actions (waiting, notification, exceptions, retries)
  • Dealing with Java scheduling and run-time properties (creating your own notification-based constructions)

Although focusing on Java, most of the patterns and techniques discussed are applicable in other language environments. For those interested in Java, you will get a detailed working knowledge of its concurrency mechanisms. More broadly, you will be exposed to a variety of design strategies for managing concurrency within applications.

M2am Understanding COM and MTS
David Chappell, Chappell & Associates

Who should attend: Architects and developers familiar with general object-oriented design and programming techniques and who need to understand the basics of these key Microsoft technologies. Knowledge of a specific programming language, such as C++, is not required - this is not a programming course.

The Component Object Model (COM), introduced in 1993, has become fundamental to software development in the Windows and Windows NT environment. More recently, the COM-based Microsoft Transaction Server (MTS) has been released. MTS supports the creation of scalable, transaction-oriented servers by combining the relatively new notion of component software with familiar concepts from transaction processing monitors.

This tutorial provides an introduction to COM and MTS, with an emphasis on MTS. The topics will include:

  • Defining COM: Interfaces, classes, life cycle, and more
  • How MTS adds automatic support for transactions to COM
  • How MTS adds scalability to COM servers
  • Comparing MTS components and Enterprise JavaBeans

M3am Building Distributed CORBA Applications In C++
Steve Vinoski, IONA Technologies, Inc.

Who should attend: Experienced C++ developers who want to understand the fundamentals of CORBA-based programming in C++ to develop practical distributed object systems. A good understanding of C++ is required, but no CORBA experience is necessary.

This tutorial provides the basics that developers need to begin writing industrial-strength systems based on CORBA technology.

You will learn about the basics of the Object Management Group's (OMG) Object Management Architecture (OMA), and the fundamentals of the CORBA component of the OMA. C++ examples will demonstrate how to develop simple clients and servers based on static stubs and skeletons. All server examples in the tutorial are based on the new Portable Object Adapter (POA) recently added to CORBA. Details concerning use of the Dynamic Invocation Interface (DII) are provided.

The second half of the tutorial introduces a number of CORBA services, including Naming, Events, and Trading, and through the use of more C++ examples, shows how they can be used in real applications. The tutorial concludes with a brief description of some of the other work currently in progress within the OMG.

This tutorial presents a significant amount of working C++ code, along with detailed handouts that afterwards can serve as a CORBA C++ programming reference.

M4pm Designing Concurrent Object-Oriented Programs in Java (Part 2)
David Holmes, Microsoft Research Institute, Macquarie University; Doug Lea, SUNY Oswego

This is a continuation of the tutorial M1am. You may also take this tutorial if you have equivalent concurrent Java programming experience.

This afternoon tutorial covers:

  • Introducing concurrency into Java applications (Threads, message passing, cancellation)
  • Concurrent application architectures (DataFlow, demand-driven services, groups)
  • Abstracting concurrency control into reusable support classes
  • (Locks, conditions, channels)
  • Documenting concurrent components and programs (Guidelines, checklists)

M5pm Designing with Patterns
John Vlissides, IBM Research

Who should attend: Software developers, architects, and programmers. You should be well-grounded in object technology and should be familiar with the design patterns in Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, et al.

Design patterns are making the transition from curiosity to familiarity. Now that many people know what they are, they want to knowhow best to apply them. You will learn how to leverage patterns in the software design process and the thinking behind pattern application---including when not to use a seemingly applicable pattern. You will learn how the right patterns can improve a design and how the wrong patterns can degrade one, allowing you to apply design patterns to maximum benefit.

You will gain experience in learning how to apply design patterns to your own OO systems, solving real problems.

Topics covered include:

  • Designing a file system
  • Structure
  • Symbolic links
  • Open-ended functionality
  • Single-user protection
  • Multi-user protection
  • Notification
  • Summary, observations, references

M6pm Distributed COM and MTS: The Programming Model, the Protocol and the Runtime Architecture
Don Box, DevelopMentor

Who should attend: Developers of distributed object systems who need to understand how COM and MTS work and why. David Chappell's tutorial (M2am) is recommended but not strictly necessary.

The goal of this tutorial is to demystify many of the common misconceptions surrounding COM and MTS by examining the core service model of the COM and MTS runtime architecture.

This session offers an intensive view of the COM and MTS programming models from a developer's perspective. Topics will include the core semantics of COM and MTS, COM/MTS architectural overview, interface-based development, COM and MTS activation models, advanced lifecycle management, concurrency under COM and MTS, the role of context, security, the impact of transactions on state management. There will also be a discussion of future extensions to the COM/MTS architecture namely, COM+.

T1am Framework and Component Modeling for Java with UML Catalysis
Desmond F. D'Souza, Icon Computing, Inc.

Who should attend: Programmers using or intending to use patterns, component-based design, UML or Fusion, and who are seeking clearly defined techniques of models, composition, and refinement; programmers looking for design methods suited for newer languages like Java. You should be familiar with Java, with object modeling and programming, and design patterns as defined by Gamma et al. Familiarity with OO language features vs. abstract system models is a plus.

OO design is about the division and delegation of responsibilities, and the specification of collaboration patterns between objects, from the system/use-case level down to code. Frameworks are themselves compositions of partial collaborations, and using frameworks is greatly aided by a clear description of the underlying collaboration patterns. Java offers some unique support for higher-level models and design, including interfaces, packages, reflection, and the composition-friendly component model of Java Beans.

This tutorial describes advanced techniques to effectively model and design Java components and frameworks. It is not just another UML tutorial

Serious modeling and composition of Java components and frameworks in the UML is not trivial. In this tutorial, you will learn about a set of modeling tools with precise notions of interface, type, class, collaboration, role, frameworks, package, and composition, from the UML-based Catalysis method. The instructor will use these to capture key aspects of design patterns, frameworks, and components in a way which is both abstract and precise. For more information on the Catalysis method, see http://www.iconcomp.com/catalysis

Topics will include:

  • Interfaces as types
  • Type modeling
  • Collaborations as design patterns
  • Specifying properties and events
  • Components and composition
  • Component architectures
  • Packages in Modeling and Java
  • Refinement in Modeling and Java
  • Frameworks

T2am Distributed Computing with Java Remote Method Invocation
Jim Waldo and Ann Wollrath, Sun Microsystems, Inc.

Who should attend: Programmers and developers who understand the basics of programming in Java and have some familiarity with distributed systems.

One of the major enhancements added to Java at the 1.1 release is the Remote Method Invocation (RMI) facility. RMI allows calls to be made between Java objects in different virtual machines, perhaps on different physical machines. Unlike most previous distributed computing infrastructures, RMI was designed to be language-centric. This allows RMI programming to be done entirely in Java, utilizing such language features as the rich Java type system and garbage collection. Coupled with the code portability of the Java platform, this language specificity simplifies distributed programming and also allows the passing of objects by value as well as by reference.

This tutorial will introduce the design of RMI, show how to build distributed applications using the facility, and discuss the new functions being added to the system in the next release of the JDK. The tutorial will be about evenly divided between theory and practice, and will include discussions of the garbage collection mechanisms, code loading and polymorphism in distributed systems as well as working through a number of examples of actual code implementing RMI-based distributed programs.

You will gain an understanding of the basic mechanisms used in Java RMI, why the system was designed the way it was, and the new features to expect in JDK1.2. At the end of the tutorial, you should be able to design your own RMI-based applications.

T3am High Performance C++ Programming
Scott Meyers, Software Development Consultant

Who should attend: Systems designers, programmers, and technical managers involved in the design, implementation, and maintenance of production libraries and applications using C++. Participants should already know the basic features of C++ (e.g., classes, inheritance, virtual functions, templates), but expertise is not required. Whether you have learned C++ recently or have been programming in C++ for some time, you will come away from this seminar with useful, practical, proven information. Recommended reading: much of the material in this seminar is taken from Scott's books, Effective C++ and More Effective C++.

This tutorial will give you a detailed examination of the factors that affect the performance of C++ software. Whether your primary concern is high system speed, small system size, fast recompilation, or a combination of these, you will get the information necessary to come up with C++ software systems that offer maximum performance.

The reasons for bottlenecks in C++ programs can be surprising. Contrary to popular belief, virtual functions usually exact a negligible performance cost, while unexpected calls to constructors and destructors frequently hamstring applications. In this tutorial, you will learn what is really important if you want to deliver high performance, and you will take away the techniques you need to achieve it.

Topics covered include the following:

  • General approaches to efficiency:
    • Choosing suitable algorithms and data structures
    • The 80-20 rule and program profiling
    • Lazy evaluation and reference counting
    • Prefetching and caching
  • Strategies specific to C++:
    • Avoiding superfluous calls to constructors and destructors
    • Eliminating unnecessary temporary objects
    • Facilitating the return value optimization
    • Mastering inlining
    • Minimizing compilation dependencies

T4pm Java/RMI, DCOM, and CORBA Interworking
Keith Moore, Hewlett-Packard Laboratories

Who should attend: Systems integrators trying to compare COM and CORBA technologies or faced with the challenge of building scalable heterogeneous systems out of a mixture of COM and CORBA components. Familiarity with C++ and OO programming is assumed. Attendees should be familiar at least one remote object invocation system (e.g., COM/ActiveX, CORBA, or Java RMI).

While the popular press may enjoy writing about the Object Wars system integrators are faced with the issue of how to build systems out of these disparate components, particularly in systems that span heterogeneous platforms. This tutorial focuses on the interworking between two distributed object models: OMG CORBA and Microsoft COM/ActiveX.

Although these systems have many similarities, they differ principally in their notions of object identity, type system expressiveness, interface composition and navigation, and their intrinsic services (such as object life cycle, security and transactions). In this tutorial, you will learn details of the OMG COM/CORBA interworking specification. Examples will show the COM/Automation view of CORBA objects as well as the CORBA view of COM/Automation objects. By the end of the tutorial, you should be able to map concepts from one object system to the other and have a good understanding of what will map well (and what doesn't) when building systems out of COM and CORBA components.

T5pm Three Cool Things in C++
Scott Meyers, Software Development Consultant

Who should attend: Systems designers and software developers involved in the design, implementation, and maintenance of challenging applications using C++. Participants should be quite comfortable with the fundamental features of C++ (e.g., classes, inheritance, virtual functions, templates), but expertise is not required.

Over the years, Scott Meyers has amassed a gallery of novel ways to use C++. Each "cool" technique demonstrates how C++ language features can be combined in unusual ways to produce elegant solutions to real problems. The material in this tutorial is not found in any of Scott's books on C++. In this tutorial, youÕll learn the following:

1. Barton and NackmanÕs Template-Based Approach to Dimensional Analysis Long before the STL showed that templates were for more than just type-safe containers, Barton and Nackman demonstrated that templates could be employed to add strong typing to problems that otherwise defied it. Their technique is worth knowing, not just because it helps solve problems that are otherwise intractable, but because the runtime cost of their approach -- in both space and speed -- is zero.

2. Various Views of the GOF Visitor Pattern The Visitor Pattern gets its name from the way it supports iteration over heterogeneous data structures without requiring downcasts. That's a boon for class clients. But Visitor helps class authors too, because it offers a way to add virtual-acting functions without requiring any changes to header files. This talk describes both views of Visitor, plus various embellishments that can be used to improve it.

3. Adding Trap Doors to Classes Under normal circumstances, classes specify who has access to their encapsulated parts by explicitly listing their member and friend functions. For some problems, this isn't good enough. It's interesting that it's possible to add "trap doors" to classes so that anybody who knows about the secret entrances can create functions that have the access privileges of a friend. It's perhaps most interesting if your classes provide such trap doors without your realizing it.

T6pm Java Beans
Prithvi Rao, KiwiLabs

Who should attend: Programmers with an interest in Java programming and component models. Knowledge of the concepts of OO programming and the Java language are required.

Component-based application development has gained prominence because it promotes code reusability. Java Beans provide a mechanism to develop sophisticated applications based on reusable software components.

Java Beans are Java classes which have some or all of the following properties which make it possible to compose entire programs or Beans using other Beans as components.

  • It must publish its interfaces so other beans can interact with it.
  • It must be able to save its internal state (persistence) so that it may be used in different ways by other Beans.

Beans also generally have the ability to handle and generate events as another mode of interaction with their environment. They usually have a visual representation and can be manipulated by tools for building applications.

Beginning with AWT components and the event model in Java, this tutorial will discuss the properties of Java Beans by developing examples that highlight them, paying particular attention to Event Adapters and Properties.

We will also discuss the ActiveX Bridge which makes it possible to embed a Java Bean into an OLE/ActiveX control.

About the Instructors

Don Box is the author of Essential COM and has been working in the field of distributed computing since 1990. In 1993 he co-founded DevelopMentor, where he oversees the COM education program. He is a former columnist for The C++ Report and is a contributing editor to Microsoft Interactive Developer and Microsoft Systems Journal, where he writes the ActiveX/COM column.

David Chappell is principal of Chappell & Associates, an education and consulting firm in Minneapolis, Minnesota. He has worked as a senior software engineer at Cray Research, chaired a US national standardization group, and presented seminars around the world. His articles have appeared in Byte, Network World, and many other publications, and he writes a regular column for Object Magazine. His most recent book, Understanding ActiveX and OLE, was published in 1996.

Desmond D'Souza is the president and CTO of ICON Computing, Inc. and a member of the faculty at the Software Quality Institute at the University of Texas at Austin. He is an author of the Catalysis method, writes the ÒModeling for JavaÓ column in the Journal of Object-Oriented Programming and in Report on Object Analysis and Design. Mr. D'Souza publishes and speaks regularly at various object forums, and has used object technology since 1985 and Java since 1995.

David Holmes is a PhD student with the Microsoft Research Institute at Macquarie University, Sydney, researching more adaptable, flexible and re-usable approaches to synchronization in concurrent object-oriented programs. He has practical experience with concurrent programming through work on operating systems, distributed systems and real-time embedded systems, within a university environment.

Doug Lea is a professor of computer science at the State University of New York at Oswego. He is author of the Java Series book, Concurrent Programming in Java: Design Principles and Patterns , soon to have a second edition. He is also a co-author of Object-Oriented System Development and the author of several widely-used software packages, as well as articles and reports on OO software development.

Scott Meyers is a recognized authority on C++, and provides consulting services to clients worldwide. He is the author of Effective C++ and More Effective C++, a former columnist for the C++ Report, and a featured speaker at technical conferences internationally.

Keith Moore is co-author of the 1996 OMG COM/CORBA interworking specification and author of HP's 1997 response to COM/CORBA interworking using Microsoft's DCOM. He has written C++ and Java-based ORBs and is co-architect of the integration framework that supports HP ORB Plus (a CORBA 2.0-compliant ORB that supports multiple simultaneous communication protocols). Keith is a senior technical contributor at Hewlett-Packard Laboratories where his primary research interests are in designing systems for evolution, and in particular, the support of real-time constraints in distributed and parallel systems.

Prithvi Rao is the founder of KiwiLabs which specializes in software engineering methodology and Java training. He has worked on the development of the MACH operating system and a Real-Time version of MACH at Carnegie Mellon, and holds two patents resulting from his work on mobile robots. He has worked with the SPHINX speech recognition system to develop a speech interface to Netscape.

Steve Vinoski is a senior architect for IONA Technologies, Inc., maker of the Orbix and OrbixWeb object request brokers. A frequent speaker at technical conferences, Steve has also participated in several important OMG specifications, notably CORBA 1.2 and 2.0, the OMG IDL C++ Language Mapping, the ORB Portability Specification, and the Objects By Value RFP submission. In 1996 he served on the OMG Architecture Board and is currently the chair of the OMG IDL C++ Mapping Revision Task Force. Together with Dr. Douglas C. Schmidt, he writes the "Object Interconnections" column for the C++ Report and he is currently writing Advanced CORBA Programming With C++ with Michi Henning.

John Vlissides is a member of the research staff at the IBM T.J. Watson Research Center. He has practiced OO technology for over a decade as a designer, implementer, researcher, lecturer, and consultant. John is co-author of Design Patterns and Object-Oriented Application Frameworks, and he is co-editor of Pattern Languages of Program Design 2. He is also consulting editor of Addison-Wesley's Software Patterns Series. He has published numerous technical papers and is a columnist for the C++ Report.

Jim Waldo is a senior staff engineer with Sun Microsystems, Inc., where he works on the overall architecture of pure Java distributed systems. He has also worked in JavaSoft, and was principle investigator for the large scale distribution project in Sun Microsystems Laboratories. He has worked on object-oriented distributed systems for over a decade, and was one of the lead architects of the original CORBA specification.

Ann Wollrath is a senior staff engineer with Sun Microsystems, Inc, where she is the lead designer and project lead of the Java Remote Method Invocation system. Ann has also worked in JavaSoft, and did research in reliable, large-scale distributed systems in Sun Microsystems Laboratories and in parallel computation at MITRE corporation.


?Need help? Use our Contacts page.
Last changed: Feb 12, 1998 efc
Conference Index
Events Calendar
USENIX home