> 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.