Il n'y a pas de meilleur langage, les 2 se valent, ont leurs défauts/qualités.
Le C/C++ est généralement utilisé car il est rapide (car directement compilé en langage Assembleur), mais pas portable. Il est bas niveau (Cela veut dire que tu manipules presque directement ce que l'ordinateur manipule vraiment), donc introduit des notions qui sont généralement dur à assimiler si on est pas du milieu informatique.
Le Java est un langage interpreté (Comme le Html), qui a l'avantage d'être plus haut-niveau que le C++ (Globalement plus facile donc), qui automatise plusieurs mécaniques comme celle du ramasse-miettes, ou encore celle des pointeurs. Il est plus lent car il est interpreté par un "traducteur", différent sur chaque Os, ce qui lui permet d'être multi-portable.
Personnellement, je l'ai choisi pour sa philosophie de l'orientée objet complet (Comme le C# ou Vb) et son utilisation dans le milieu professionnel, et son vraie rôle dans l'informatique proprement dit.