Il C++ sicuramente oggi è molto meno richiesto di java. Questo dipende da piu motivi, innanzitutto il campo di utilizzo. C++ è principalemnte indicato per realizzare applicazioni desktop, con Java riesci a fare applicazioni desktop (anche se questo non è il suo utilizzo principale), ma anche applicazioni e servizi orientati al web. I vantaggi che il c++ offre rispetto a java sono:
1 - magiore velocita e minore consumo di memoria;
2 - produce eseguibili che non hanno bisogno di runtime, quindi programmi che possono essere facilmente distribuiti, laddove java richiede la presenza del runtime java per far funzionare i suoi programmi.
3 - possibilita di fare programmazione di sistema a basso livello.
Quanto al punto 1 - bisogna in realta cheidersi : quanto è veramente importante? Le applicazioni in cui è veramente fondamentale la differenza prestazionale tra java e c++ sono veramente poche, ad esempio applicazioni di tipo numerico che fanno calcoli intensivi, aplicazioni di grafica 3D, e robe simili; trpppo spesso si sente dire che java è poco efficiente, ma non si tiene presente che non siamo piu al tempo in cui i pc avevano 512 kb di memoria e processori con frequenza di 1 MHz... Il c++ è vero che è piu veloce e piu ottimizzato...ma tutto ciò non è regalato: la maggiore efficienza deriva infatti oltre la fatto che i programmi sono trasformati in eseguibile, anche dal fatto che in c++ devi gestirti manualmente la memoria, che è la principale fonte di incomprensioni, sbagli e bug nei programmi scritti in questo linguaggio; è da aggiungere anche che il c++ è oggettivamente piu complicato come linguaggio (proprio a livello di sintassi e di grammatica; ad esempio i compilatori c++ non sono in grado di indicare gli errori presenti in un programma con la precisione con cui riescono i compilatori java, proprio per via della grammatica c++ che è molto complessa e non permette tecniche di recupero degli errori molto precise.)
Oggi è più importante essere produttivi e realizzare software il piu possibili affidabili, e facili da mantenere, obiettivi che si realizzano piu facilmente con java che non con c++, proprio grazie all a sua gestione automatica della memoria, ma anche ad altre caratteristiche del linguaggio, come l'assenza esplicita dei puntatori, l'impossobilita di accedere direttamente alla memoria, un maggiore controllo sui tipi.
Da ciò dovresti capire che è solo una questione di priorità e di obiettivi: se vuoi realizzare aplicazioni in cui è importante la velocita e l'oculato uso della memoria, o la produzione di un eseguibile o la programmazione a basso livello è meglio il c++; in tutti gli altri casi java è piu produttivo.
PS: C++ è un linguaggio ibrido , sia procedurale che orientato agli oggetti, java è solo orientato agli oggetti