> I suppose it has something to do with an urge to streamline and simplify > -- if you can only do OO one way (either value-oriented or reference > oriented), the Java way is not a bad choice, but I think that it > turns out to make things more complicated rather than simpler. Well, with enough Java experience, you probably don't have much problem with it. But the biggest gripe is that Java does it two ways. "Primitive" types do assignment and comparison of the values the way Ada does. All others do assignment and comparison of the references. This is, technically speaking, the same as Ada's assignment and comparison of access values. What is awkward for the Java beginner (or at least THIS Java beginner) is the need to remember that the language has decided to use an access type, and the need to use the Java equivalent of A.all := B.all -- and the fact that the Java equivalent is not nearly as simple in syntax.