Sponsored Link •
For the first time since 1989, I'm attending OOPSLA. Some things have changed, others have not. Here are a couple of reflections...
I'm back at OOPSLA for the first time since 1989. I stopped going in 1989 because the conference had gotten too big; it has since expanded, contracted, and now seems to be growing again. It is somewhat larger than it was in 1989, but not unmanageably so.
The venue is Portland, a very nice city. We are in the Oregon conference center, which is a bit sterile for my tastes. When I come to a conference like this, I gain an additional appreciation for the Jini community's decision that we would not meet in "plastic" places. So Jini community meetings are in places like Brussels or downtown Chicago (at a hotel, not a conference center) or a brewery in London. One of the advantages of a smaller community.
I'm here to give a couple of talks. The one I gave today was part of the company talks track, which are half-hour sessions given to those companies that have given enough money to be conference sponsors. I guess that I was expected to give a sort of overview of the projects in Sun Labs, but neither I nor the director of the lab thought that would be a good idea. Instead, I took the opportunity to talk about something that has been bothering me for a long time.
I started off with the thought that object technology has been pretty successful. When I came to OOPSLA in 1989, the conference was partly a support group for those of us who thought that this object way of doing things might be useful. Now objects are just about everywhere-- designs are about objects; implementations are about objects; industry does objects; academics do objects. It has been a very successful idea.
What I find interesting is that the one place that objects don't seem to have taken hold is in distributed systems, where we still organize things around wire protocols. We've tried objects in everything from active networking to agent systems to Jini technology. Some people have found the use of objects in distributed systems persuasive, but the acceptance has been nowhere near that of objects within the address space. The challenge I presented to those in the OOPSLA audience was to either explain why objects weren't used in distributed computing, or what about distributed computing limited the applicability of the object paradigm.
I had my own theories. In part, I think this is because we have not freed objects from the expressions of those objects in a particular language-- even though we talk about objects in Java or Smalltalk or some other language, the notion of an object in each of these is significantly different. Smalltalk objects can't talk to Java objects, and vice versa. The Java type system and the ML type system are very different. So rather than unifying our notion of object, we have decided that we will translate into bits on the wire and let the two sides agree to disagree.
I then argued that part of the reason that we have agreed to disagree is that most of us in the object world don't actually believe what we say when we talk about objects. Oh, we are willing to talk about objects that are characterized by interfaces and which consist of the pairing of data and the code that manipulates that data. But deep down we know that code is code, and data is data, and that the two are really different. Objects are an interesting and convenient abstraction, but they aren't the real deep truth.
Of course, bytes aren't the real, deep truth either. But we have all agreed that bytes are the right level of abstraction, so we don't generally worry about going any lower. But we can't come to the same agreement about objects. Maybe this is something that will change when a new group of programmers and designers who have never known anything but object-oriented progamming takes over. I'd hate to think that it will take this long, but maybe that is the only way.
Or maybe there is a limit to the use of objects as a design principle. I actually think there might be, but I don't think it is the address space. But where the limits are is an interesting question, and I thought it would be interesting for someone to ask it.
|Jim Waldo is a Distinguished Engineer with Sun Microsystems, where he is the lead architect for Jini, a distributed programming system based on Java. Prior to Jini, Jim worked in JavaSoft and Sun Microsystems Laboratories, where he did research in the areas of object-oriented programming and systems, distributed computing, and user environments. Before joining Sun, Jim spent eight years at Apollo Computer and Hewlett Packard working in the areas of distributed object systems, user interfaces, class libraries, text and internationalization. While at HP, he led the design and development of the first Object Request Broker, and was instrumental in getting that technology incorporated into the first OMG CORBA specification.|