Bruce Eckel schreibt über die Schwächen von Java:

Der Konkurrenzdruck durch andere Sprachen bzw. Platformen hat und wird Sun nötigen neue Features in Java zu implementieren (Generics, Closures ...). Da jede neue Java Version kompatibel zu älteren Versionen ist, werden diese Features nicht so implementiert, wie sie implementiert werden sollten. Die Features sind unvollständig und machen die Sprache unnötig komplex.

Er folgert daraus, dass Java sich diesen neuen Features und Trends verschließen sollte um so stabil zu werden wie C. Diese Stabilität stellt er als wesentliche Ursache des Erfolgs von C dar.

Bruce Eckel hat mehr Ahnung von Programmiersprachen als ich, dennoch erlaube ich mir mal wieder eine eigene Meinung.

Der Erfolg und die länge des Erfolges hängt davon ab, wie schnell man dass was darin geschrieben ist durch etwas in einer anderen Sprache ersetzen kann. Sicherheitskritische Software wird noch in Ada geschrieben, wissenschaftliche Simulationen in Fortran. Erstere müssen extrem gründlich getestet sein, letztere erfordern extremes Fachknowhow, beides macht es sehr unpraktikabel diese Software zu ersetzen.

Betriebssysteme basieren auf C. Von einem Betriebssystem kommt alle paar Jahre eine neue Version heraus, die aber zu erheblichen Teilen auf der Vorgängerversion basiert. Dies auf eine andere Sprache umzustellen ist schwierig.

Geschäftsanwendungen, wie ich sie typischer Weise bearbeite haben eine geschätzte Lebenserwartung von 10 Jahren. Danach werden sie meist durch etwas völlig anderes ersetzt. In einem solchen Zeitraum ist auch eine vollständiger Wechsel der Programmiersprache völlig praktikabel.

Daher meine Vorhersage: Java wird seine Rolle als 'die Programmiersprache' einbüßen, dies wird aber noch wenigstens ein Jahrzehnt dauern. Dabei ist es irrelevant ob Java Feature Hypes mitmacht oder nicht. Entweder wird die Sprache zu komplex oder sie veraltet. Schließlich wird sie jedoch durch etwas ersetzt, was Java für C darstellte: Eine bereinigte Version von dem was man mit mäßigem Erfolg versucht hat an C anzuflanschen (C++) oder nie implementiert hat (Garbage Collection).

Eine Vorhersage hat aber nur einen Wert, wenn sich daraus Aktionen ableiten lassen. Also hier ist mein Aktionsplan: