Java and other higher-level languages provides (and arguably incites) code that is more maintainable through the use of abstraction. In other words, they consider lower-level features like memory management not as "function" but as "structure" which is only noise mixed on top of the business goal.

sources:

Jon Pearce (1998) Programming and Meta-Programming in Scheme: "Structure and function should be independent".

Lack of distinction between an object and a reference to it in Java.For example it makes concurrent programming more challenging if we cannot distinguish between local/our and shared objects by looking at the objects type.