In c++ bisogna gestire manualmente la memoria; in java esistono solo oggetti,o meglio rifermenti ad oggetti, mentre in c++ esistono oggetti, puntatori e reference che rendono piu complicata la scrittura di metodi e costruttori; bisogna dichiarare anche un distruttore per le classi proprio perche la memoria bisogna gestirsela da soli. La necessità di dichiarare un oggetto prima del suo uso rende a volta difficile l'inclusione dei file, specie nel caso di classi che si referenziano entrambe. La libreria standard del c++, quella supportata dai principali compilatori è limitata a poche funzionalità (stringhe, file, contenitori), a differenza di java che viene fornita di default con una libreria immensa che comprende classi per le piu svariate funzionalita. Inoltre java comprende il supporto ai thread in modo nativo, cioè realizzato gia a livello di parole chiavi del linguaggio, mentre in c++ devi usare una libreria a parte per ogni sistema. Anche la sintassi del c++ è in alcuni casi piu complessa di quella java (c'è chi l'ha definita 'barocca'), soprattutto per quanto riguarda le dichiarazioni.