Des benchmarks standard ont démontré que le Java est aussi rapide que du C et du C++ dans les cas standards (avec prise en compte de la compilation JIT de la JVM).
Les 3 ont la même vitesse d'exécution dans des cas "normaux". Le C et le C++ sont beaucoup plus adaptés aux optimisations, ainsi qu'a la consommation mémoire limitée. Java doit lancer sa JVM (conso) et ne permet pas (ou très difficilement) de faire des opérations bas niveau.
Dans les 3 langages il y a une gestion de la mémoire (ce n'est pas parce qu'un ramasse-miette est présent qu'il faut magiquement ne plus faire attention à la mémoire et coder comme un porc).
Les 3 sont multiplateformes, avec un léger avantage côté Java. Mais pour les 3, si le code n'est pas testé, ou que des solutions techniques spécifiques à certaines machines ou OS sont utilisés, ça casse de suite.
Le C est un langage "basique" (dans le sens vieux, donc classique de nos jours), donc des ressources innombrables sont trouvables.
Le C++ est très permissif pour les nouveaux développeurs (langage multi-paradigme, tu fais ce que tu veux ... donc si tu n'es pas forcément à l'aise, tu risques de faire des erreurs de conceptions et/ou d'implémentation bête), ainsi que très difficile à maîtriser (et je parle bien de maîtriser, pas de savoir l'utiliser). Il y a énormément de ressources dessus.
Le Java est aussi très permissif, un brin moins que le C++. Son écosystème est un bordel sans nom perdant la plupart des personnes (débutant comme confirmé).
Ce texte peu se résumer en : si tu penses que tu auras besoin d'optimisation au poil de cul, prend le C ou le C++. Sinon, prend n'importe lequel.