Umieszczę tylko krótki cytat z Thinking in Java(wyd III s.78), a jak jesteś zainteresowany to w tej książce są jeszcze liczne porównania tych języków:
"Specyfikacja Javy określa dokładnie rozmiar każdego z typów podstawowych. Rozmiar ten jest niezmienny i niezależny od architektury sprzętowej,(w C++ jest - przypis mój) w przeciwieństwie do większości innych języków. Ta niezmienność rozmiaru jest jedną z przyczyn tego, że programy Javy są aż tak przenośne "
To, że da się pisać(chociaż to jest złe sformułowanie, raczej można wykonać) to za mało(pod tym względem java też jest lepsza niż c++). Chodzi o to że zdarza się że kod który działa na jednej maszynie nie działa na innej. W javie taki problem nie istnieje.
C++ jest najpopularniejszym językiem z innych względów - jest dużo szybszy. Nie ma tam czegoś takiego jak garbage collector, ale za to sam musisz się zająć zwalnianiem dynamicznie przydzileonej pamięci. Poza tym w c++ nie ma sprawdzania czy wykroczyło sioę poza obszar tablicy, w javie takie sprawdzenie jest. Poza tym w javie panuje porzą dek z nazwami, w c++ trzeba było wprowadzić przestrzenie nazw inaczej robienie dużych programów okazałoby się koszmarem. Ale java jest coraz szybsza i za jakiś czas gdy argument szybkości po prostu zniknie to właśnie java stanie się najpopularniejszym językiem.