>   Perhaps this is why people say that "Ada is hard to learn"...
>
>   Aliasing (on the surface) seems like a pretty
>   straight forward concept.

Yes, "on the surface" it is pretty simple.  But "under the hood" it makes
it pretty easy to screw things up.

Ada only allows this kind of aliasing* when the _programmer_ decides the
benefits of pointers outweigh the risks for a particular data structure.

Java's designers apparently decided for us that the benefits of pointers
outweigh the risks for almost all data structures.

Decide for yourselves which approach is better.

*There is another kind that is in most languages--aliasing within a
routine when the caller uses the same entity for two parameters.