A new abstraction mechanism in which objects "inherit" properties from the containment hierarchy they're in.

Application Embedding

A novel approach to application development that allows all aspects of an application, including its business-logic, to be programmed declaratively.


A data representation and query language for a new family of NoDatalog deductive databases.

Component-Based Design

“Pluggable Reflection: Decoupling Meta-Interface and Implementation.” Co-authored with John Vlissides, observes that reflection remains a second-class citizen in current programming models, where it’s assumed to be imperative and tightly bound to its implementation.

Domain Driven Web Development With WebJinn

Web-application development cuts across the HTTP protocol, the client-side data presentation languages (HTML, XML), the server-side technology (Servlets, JSP, ASP, PHP), and the underlying resource (files, database, information system). Consequently, …

Pluggable Reflection: Decoupling Meta-Interface and Implementation

Reflection remains a second-class citizen in current programming models, where it's assumed to be imperative and tightly bo und to its implementation. In contrast, most object-oriented APIs all ow interfaces to vary independently of their …

Designing Components versus Objects: A Transformational Approach

A good object-oriented design does not necessarily make a good component-based design, and vice versa. What design principles do components introduce? This paper examines component-based programming and how it expands the design space in the context …

Execution Patterns in Object-Oriented Visualization

Execution patterns are a new metaphor for visualizing execution traces of object-oriented programs. We present an execution pattern view that lets a programmer visualize and explore a program's execution at varied levels of abstraction. The view …

Design Patterns and Language Design

Despite many similarities, there are important differences between design patterns and programming language mechanisms. Nevertheless, we can classify patterns in terms of how far they are from becoming actual language features. Treating patterns as …

Tiling Design Patterns: A Case Study Using the Interpreter Pattern

This paper explains how patterns can be used to describe the implementation of other patterns. It is demonstrated how certain design patterns can describe their own design. This is a fundamental reflexive relationship in pattern relationships. The …