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:

  • Für Java selbst hoffe ich auf einen reichen Gabentisch neuer Features. Denn ich werde in absehbarer Zeit nur im Rahmen von Java diese Features wirklich intensiv und produktiv einsetzen können.
  • Jeder der auch in 10 bis 20 Jahren noch professionell Software entwickeln will, sollte sich tunlichst mit neuen Konzepten in Programmiersprachen vertraut machen, wenn sie eine gewisse Marktdurchdringung erreichen. Denn sie werden Teil der nächsten wichtigen Sprache sein. Natürlich kann man sich dann immer noch damit beschäftigen, aber erfahrungsgemäß dauert es doch erheblich, bis man ein neues Konzept so einsetzen kann, dass man sich seinen Code zwei Jahre später noch angucken kann, ohne sich selbst als Trottel bezeichnen zu müssen.
  • Auf jeden Fall liegt es im besten eigenen Interesse auf dem Laufenden zu bleiben, was neue Programmiersprachen angeht.