Well, here's my two cents.
You assertions are flawed, because they are too general. If you don't know how to program right now, then you won't understand a deep technical reply on the merits of one language over the other. I can provide some insight which I have found to be true for myself.
I prefer Java to C++ because of the following -
- I hate having to look in two source files to get an idea of whats going on. This is a personal peeve, so you should take it as such. Not all source code is well written in C++, which means I end up poking in two files, rather than one in java
- I enjoy not having to muck with pointers. (Don't believe the line that everything in java is a pointer, because its not. See this Java Pass By Value
for a nice explanation with lots of sarcasm and thought.
- The language syntax is great. I could not care less if it compiles down to bytecode vs assembly vs basic, as long as it does what I want. Such is the case for this language. This is also the reason I begrudgingly like C# as well. The syntax is so much 'cleaner'.
- In general, with the exception of using JNI and some other detailed Swing nits, it does work on the top three OSes - Mac, Lin, Win
Why I like C++
- Its better than C.
- Its object oriented and provides great flexibility to do whatever well thought out or really stupid implementation scheme I feel like.
- I can use it on any OS I happen to be forced to use.
So here's what I don't like about Java / C++ -
- I've lost touch with the newest cool features, since I currently work at a place that uses C++ only.
- It doesn't run everywhere perfectly, in fact performance can vary widely depending upon OS, JVM version, graphics card installed, memory, etc. Normally this is never an issue for the projects I've worked on, but I am familiar with what things could put a person in the 'bad lands.'
- Sun took too long in making an IDE with a strong GUI development component. There are still tons of ways to make guis by hand, using frameworks, etc. I would have preferred a nice GUI IDE earlier on. There are tons of opinions on this alone, so feel free to disagree.
- Most programs I've come across are C programs that tried to pretend to be C++. The results are silly and its obvious the programmer wasn't an OOP developer.
- A newbie will spend more time fighting tools when learning than programming. You can take someone who is excellent at C++ using MSStudio Vxxx and plop them in front of a Linux box, and they will be helpless to produce a hello world. Not always, but many times. This is the one thing about learning to program any language on any OS that is most annoying. Fighting the tools, just to get the application to compile, link, and execute.
- Makefiles are of the devil. I don't care what anyone says, they are evil. C++ is usually accompanied by these nasty things, regardless the OS.
Ok, so here's my advice. Do youself a favor and take the other posters advice and learn them both. Being a good programmer is like being a linguist. All languages express ideas, its just the words which change. If you understand programming concepts like factory methods, singletons, threads, looping, conditional logic, etc then the language is just a way to make your designs concrete. Some programming languages express some concepts more easily than others.