I'm not aware of anything comprehensive. Some of the drivers were to run in small embedded devices and to use a C-like syntax to ease the transition from C to Java and to make life easier on the developer than C++ did. They were probably aware that the ease of writing compilers helped spread C (like a bad internet hoax you might believe) so they kept things easy for themselves, too.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
the JLS explains a lot and so do the API docs. Problem is that many people never bother to read it (or anything really) and just shoot off questions when they find something doesn't work in Java like it does in some other language.
After all, Java looks similar to C++ so everything that works in C++ should work right?