Les deux s'apprennent en autant de temps je dirai ...
C++ est un poil plus compliqué, vu que tu as une gestion explicite de la mémoire et des mécanismes un peu plus compliqué à comprendre (mais dont tu n'auras pas forcément besoin).
Java est compliqué de par son écosystème extrêmement vaste et sa gestion de la mémoire "cachée" (oui, il y a de la gestion de mémoire en Java).
De base, les 2 sont sur de l'orienté objet, bien que le C++ soit un poil plus laxiste de ce côté là.
Jave est multiplate-forme ... par contre, ça demande une certaine rigueur de programmation et des tests sur les diverses cibles assez fréquents, histoire de ne pas avoir de mauvaises surprises.
Au niveau des fonctionnalités pure, je dirai que les 2 sont équivalents de par leur écosystème respectif très vaste (bien que celui du Java est réputée pour être trop vaste).
Il n'y a pas de meilleurs langage, il n'y a que des besoins et des solutions adaptées à ceux-ci.