Strange, because underscores are easier on the eyes than helloJavaWorld (compare with hello_java_world, I can better separate the words).
By separating the words inside identifiers more easily, you make separating the identifiers themselves harder. In other words, it's more important to see the space between identifiers rather than the space inside them. By using underscores, which look like spaces, the limit between words-inside-identifiers and identifiers themselves gets thiner, which makes the code harder to decode.
Which one is the easiest to read?
my object.the member = some strange value;
myobject.themember = somestrangevalue;
For a book, the first one. For a source code, definitely the second one. Because we don't care if the object name or its member is made of several words or just one -- for the programmer it's still a single identifier, and it must be seen as such
I think it's the most common complain about this naming convention.