Not just utility functions, but also
* global variables like cin.
** think of them as fully initialized OBJECTS (or services), usable out of the box
* classes – as cookie cutters, very different from cookies the OBJECTS above
** and Families of classes
Java (and c#?), in contrast, only put TYPES in included libraries. To include (and then use) utility _OBJECTS_, they have to be presented as public static fields like System.out. These static member objects get created when the TYPE is loaded by the class loader. In contrast, c++ library objects (like cout) are typically part of a namespace.
Why the difference? I think reason is the so-called “free(standing)” variable outside any type. Java forbids it. Any language permitting it can package it along with types and free functions into a “unit” (package, module, namespace…) to be #included.
Python (and perl) is more like c++.