Hi, I definitely agree with what you say.
Even if in my comp science student life, and/or professional worklife I have found no equivalents of C++.
With shared_ptr, auto_ptr and STL containers memory management is
for newbies and you get all benefits of a properly compiled/optimized language.
The only thing that made me consider Java as a language
son of a lesser god is the fact you can't actually manage memory as you wish. You can call the garbage collector, do tricks, but is not the same as telling the OS
"look mate free/delete that chunk of memory, restrict my data segment (brk/sbrk)". Or is it possible in Java?
I'm saying this because just the other day a 32 bit (Java run-time process) has reached the limit of 4 GiB and...bye bye.
This is the event that makes me think
"hey, why is difficult to use C++ with smart pointers?".
Still I consider Java a good language better than many others, for the reasons you stated before.
Ciao!