. JAVA bietet eine systemunabhängige Schnittstelle zur grafischen und fensterorientierten Umgebung und zur Multitasking-Handhabung. Entsprechende Programme können zwar möglicherweise nicht alle Feinheiten des angesprochenen Betriebssystems nutzen, dafür sind sie aber ohne jegliche Änderung auf jedem System lauffähig, auf das der JAVA-Interpreter portiert wurde.
Bei der Portierung von C++-Programmen auf andere Umgebungen ist meist eine erhebliche Anpassungsarbeit notwendig. Je nachdem, wie stark die Programmstruktur auf eine bestimmte Architektur der Benutzeroberfläche zugeschnitten ist, ist es einfacher, ein komplett neues Programm zu schreiben.
Objektorientierte Programmierung mildert diesen Effekt (z.B. gegenüber C) jedoch erheblich. Wenn man die Schnittstellen der eigenen Klassen vernünftig entwirft, kann man oft auch durch Austausch weniger Klassen den Sprung von einem zu einem anderen Rechner schaffen.
. Mit den Applets bietet JAVA etwas, was mit keiner anderen Programmiersprache in ähnlicher Form möglich ist. Es sind Formen von Gestaltung einer WWW-Seite möglich -- grafisch wie auch interaktiv -- wie sie mit reinem HTML oder Skriptsprachen nicht denkbar sind. Als Programmiersprache für Stand-Alone-Programmsysteme ist JAVA dagegen momentan noch nicht weit genug entwickelt.
. Es kann in JAVA nicht mehr vorkommen, daß Speicherlecks entstehen, wenn der Programmierer vergißt, alle dynamisch angelegten Objekte wieder freizugeben. JAVA führt selbst Buch über die Verwendung aller Objekte und räumt den Speicher selbständig auf.
Diesen Komfort erkauft man sich allerdings mit geringen Effizienzeinbußen, da doch einiger Verwaltungsaufwand zur Laufzeit notwendig ist.
. Dadurch, daß JAVA eine interpretierte Sprache ist, ergibt sich die Möglichkeit, zur Laufzeit neue Klassen hinzuzbinden. Zum Beispiel können diese über das Netz aus verschiedenen Quellen bezogen werden und sind damit automatisch auf dem neuesten Entwicklungsstand etc.
. JAVA läßt einiges der Eleganz von C++ vermissen.
Durch das Fehlen der Operator-Überladung werden JAVA-Programme schnell vergleichsweise unübersichtlich. Zwischen Klassenobjekten ist beispielsweise nicht eine einfache Zuweisung mit = möglich -- dazu muß die Klassenmethode clone() aufgerufen werden. Für Ausgaben gibt es nicht den Operator |