Java dal canto suo ti permette di creare applicazioni da console, applicazioni visuali ad eventi, applet, app per cellulari, applicazioni server (servlet). Permettendo così di essere molto versatile su diversi sistemi operativi! Tutto questo però ha l'unico svantaggio circa la compilazione dei programmi java che vengono "compilati a metà", generando il famoso bytecode che viene eseguito dalla Java Virtual Machine dove un altro elemento provvederà a "interpretare".
Mentre per quanto riguarda C++ si può dire che a livello di sintassi diventa leggermente più complicato però permette di partire da un semplice sorgente e creare un eseguibile valido solo per quel sistema operativo (anche senza aver installato il compilatore/interprete).
Quindi ripeto, dipende dall'utilizzo che devi farne.