|-Compilation and portability don't give headhaches like C++ does sometimes.|
When you allow for more complex code, do you not expect more complex mistakes to result in more complex errors? You should have simply said "Java is simpler" (which is a plus)
|-Reflexivity wich is really a pain to emulates in C++.|
Java's reflection is my favorite, but it lacks built-in language support beyond .class - I mean, why not .method and .field?
|-Source and header in the same file, very annoying in C++.|
Well personally, some rather large implementations can be a pain to have entirely in one file.
|-Memory management? Smart pointers in C++.|
Low-level languages let you control the memory and even do bad with it if you want. High-level languages manage it for you. Remember high-level != better language. Java is a higher level language than C++.
|-Ressource handling? A pain in Java (improved with the new try with ressource but still) but very easy in C++ with RAII.|
I don't often manage resources, but when I do, I prefer try-with-resources. I agree, it's annoying.
|-Generic code and meta-programming? Generic in Java are nothing compared to templates.|
Agreed. Erasure is even worse.
|-Multithreading? tbb library of intel is very easy to use.|
Compared to the rest of Java the multithreading support is very low level and they STILL do not give any guarantees, which is a strange thing for a high-level memory-managing language to do.
|-Operator overloading? The great master of Java decided we are too dumb to use it.|
I would love operator overloading to be in vanilla Java.
|I could continue on others subject, really I don't see why it's easier to code in Java than in C++.|
Hm, maybe the massive standard library with all the popular stuff in it that you have to deal with the C way in C++ or find some libraries yourself? People are really lazy, you know, and Java provides a lot of stuff up front that in C++ you have to go out and find yourself, and then get binaries of, and most people are too impatient to do all that.