Hallo,
ich mische mich jetzt hiermal als jemand ein, der schon C, C++ und Java verwendet hat.
* Durch den Wegfall der Pointerarithmetik und einer manuellen Speicherverwaltung fallen viele Probleme schlicht weg.
In C muss man da tatsächlich sehr aufpassen und selbst dann übersieht man noch ab und an ein Speicherleck oder einen Buffer Overflow. Je mehr Erfahrung der Programmierer hat, desto mehr fällt dieses Problem weg, einem Anfänger würde ich aber nicht zu C raten, wenn er vorhat GUI-Anwendungen zu schreiben (bei Mikrocontrollern ist das wieder anders).
In C++ ist das Problem Speicherverwaltung schlicht auf die Unwissenheit und Unerfahrenheit des Programmierers zurückzuführen. In 90% der Fälle reicht es aus die Variable auf dem Stack anzulegen, von wo sie am Blockende einfach wieder gelöscht wird, oder einen geeigneten Container zu verwenden, der den Speicher verwaltet. In den 10% der Fällen in denen man unbedingt die Variable mit new anlegen muss, kann man auf SmartPointer zurückgreifen, die dafür sorgen, dass die Variable auf jeden Fall wieder aufgeräumt wird.
Der Code wird zudem besser wartbar und lässt sich auch einfacher entwickeln.
Für C trifft das teilweise zu, für C++ nur wenn man schlecht programmiert hat und allgemein macht hier das meißte immer noch die Gewohnheit aus.
* Die Plattformunabhängigkeit.
Die kannst du mit C und C++ ebenfalls erreichen, solange du Bibliotheken verwendest, die auf allen gewünschten Plattformen funktionieren. Und wenn du maschinennah entwickeln willst (in Java also zu JNI greifen musst), dann wirst du trotz Java plattformabhängig.
* Das Vorhandensein einer umfassenden und zudem kostenlosen Klassenbibliothek.
C ist nicht objektorientiert, es gibt aber mit Sicherheit mehr kostenlose Bibliotheken für C als für Java. Für C++ gibt es für jede kleine Aufgabe irgendwo eine kostenlose Bibliothek oder auch umfassende kostenlose Klassenbibliotheken die durchaus mit der Javabibliothek mithalten können.
* Java ist leichter zu lernen.
Im großen und ganzen stimmt das. Wer aber einmal C++ richtig (TM) beherrscht, der kann nach einer Woche Einarbeitung mit Java entwickeln. Wer Java richtig (TM) beherrscht ist noch Ewigkeiten davon entfernt C++ programmieren zu können.
Gruss,
OhneName