Optimizing Distributed Objects

Influencing another researcher or company is about the best that can happen to a piece of academic research. The proposal in my paper on Safe Query Objects was implemented and shipped by db4objects as a key feature of their product, within 6 months of publishing my paper.
They are an amazing company, and they even gave me a little research grant to do more work. Thanks!

More recently, my paper on Web Services versus Distributed Objects:
A Case Study of Performance and Interface Design
involved some manual transformations that were hard to do. Eli Tilevich picked up the idea and implemented it as an extension of RMI. We started working together and the design evolved into a full paradigm for optimizing remote object systems. We wrote it up as a nice paper, called Explicit Batching for Distributed Objects. The idea is that client proxies don't perform remote communication; instead they just create a batch of operations. All the method results are futures, because the calls haven't been made yet. But it looks pretty much like an ordinary object-oriented program. When the client calls flush, the operations are performed and the futures filled in with results. We evolved the design by two more iterations, to handle batched operations on remote collections, exceptions, and chained batches, or a series of batches that share common state. Each client can optimize their own server access, without any custom server objects (as required by the Data Transfer Object pattern). Amazing!

The result is so obviously better than RMI, in terms of managing latency and optimizing communication, that it is hard to imagine why nobody has tried this before. I keep thinking somebody probably did (and there is some related work that is similar, but not complete). As far as we can tell its new.

It might actually make RMI be able to compete with Web Services :-)