@Falk : Welche „aktuellen Herausforderungen“ meinst du? (Ich könnte mir einige vorstellen. Und ich finde auch, dass Java einige schmerzhafte Schwächen hat. Aber will jetzt nicht ranten oder spekulieren ;))
@ButAlive : Die Aussagen wie „Java ist das neue COBOL“ liest man immer wieder mal. Ich denke, das ist schwer vergleichbar. In manchen Bereichen hat Java immernoch einen „schlechten Ruf“. („Java? Das ist doch diese langsame, interpretierte Sprache, mit der Studenten lernen, (cr)applets zu entwickeln“).
Allgemein denke ich, dass die Sprache Java schon wegen der Menge des vorhandenen Codes noch eine Weile mitspielen wird. Einen moderneren Nachfolger auszumachen (wie konkret Scala) ist schwierig. Das hängt wohl auch stark davon ab, wie sich die Sprache Java in Zukunft entwickelt. Erste Funktionale häppchen kamen jetzt dazu, das sind erste Schritte. (Manchen geht das zu langsam. Ich finde das aber besser, als das Gegenteil. Wenn mir heute jemand ein Programm gibt, das mit Java 1.1 geschrieben wurde, dann starte ich Eclipse, füge den Code ein, und compiliere das ganze. Die Frage, ob ich es compilieren kann stellt sich gar nicht).
Viel wichtiger als die Sprache Java ist aber das, was man auch meint (oder meinen kann) wenn man von „Java“ redet. Java auch eine Plattform.
Im speziellen wird die Java Virtual Machine sicher die aktivste Zeit der Sprache Java überdauern. Es mag etwas abschweifen, aber: Ich bin fest davon überzeugt, dass es in 3-4 Jahren schon „etwas rückständig“ und in 6-8 Jahren vollkommen antiquiert wirken wird, auf einem Desktop/Server Programmcode für die reale Machine zu übersetzen. Dinge wie GitHub - KhronosGroup/SPIR oder The LLVM Compiler Infrastructure Project zeigen ja, in welche Richtung es geht: Man übersetzt von einer Sprache in eine „intermediate representation“ (IR) und von dieser IR dann für die eigentliche Zielmaschine. (Der Ansatz, von 10 Sprachen für 10 reale Maschinen compilieren zu wollen, und dafür 1010 compiler bauen zu müssen, wirkt für mich heute schon absurd. Warum gibt es nur 2, 3 „richtige“ C-Compiler? Ja, weil es sch***-aufwändig ist, einen optimierenden Compiler zu schreiben. Wenn man stattdessen 10 Compiler baut, die von der Sprache in die IR übersetzen, und 10 Compiler, die von der IR für die Zielmaschine übersetzen, umgeht man das Problem der quadratischen Komplexität, und kann über beide teile getrennt argumentieren)
Tja. Und die einzige „IR“, die heute schon eine wirkliche Marktdurchdringung hat ist: tadaa Der Java Virtual Machine Bytecode.
EDIT: Sicher, die JVM ist in diesem Sinne „veraltet“. Sie hat immerhin schon >20 Jahre auf dem Buckel. Heute würde man vieles anders machen (Array-Indizes auf 32 bit beschränkt? Autsch! Das ist ein echtes Problem!). Aber sie hat einen Vorteil, den andere IRs nicht haben, und die sie (prinzipbedingt) erst in vielen Jahren haben werden: Sie ist time-tested