I was wondering why Java has been designed without the friend
directive that is available in C++ to allow finer control over which methods and instance variables
In general i think it was because of the added cognitive complexity and low number of cases in which it creates an improvement.
I would say that the extremely huge number of lines of java in production at this moment can attest that the friend
keyword is not really a big loss :).
Please see @dwb's answer for some more specific reasons.