-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.