Regardless how much I enjoyed programming in Java I have to admit that
For a disciplined programmer Java is worse than C++ in all possible respects.
That is not a mere assertion. I came to this conclusion after fair amount of programming in Java which I actually enjoyed. The underline is that Java represents a narrow stylistic paradigm which is just a specific style among many possible in C++. In all language constructions comparing to C++ Java limits the expressiveness to different levels without any semantic advantages.
A humorous analogy with a natural language would be: F is a rude word letter in English; let us remove all the words from English starting with the letter F, then adjust the grammar a little bit to compensate for the introduced deficiency, and then you have a new wonderful language English-a-la-Java, in which the kids cannot swear.