Naja, man kann ja in beiden Richtungen gutes und schlechtes sehen, oder?
Die „neuen“ Sprachen die momentan durchs Dorf getrieben werden haben meiner Meinung durchaus ihre Berechtigung (als ob mich da jemand nach fragen würde ). Viele von ihnen versuchen das Problem zu lösen, dass Java, C# und Konsorten sehr Syntax-heavy sind. Es gibt viel Boilerplate Code, viele Wiederholungen, den selben Code den man immer wieder tippt (if(v != null && v.attr != null)). Mein Problem mit den meisten Ansätzen ist, dass man zwar weniger Code schreiben, sich aber mehr Syntax merken muss (hust Scala *hust). Ich habe oft das Gefühl, dass gerade viele dieser neuen Sprachen diesem Ziel viel unterordnen, oft auch mit Breaking Changes. Ein Kollege von mir entwickelt mit Swift, so viele Breaking Changes wie jedes Major Release da hat würdest du kaum jemandem verkauft bekommen.
Auf der anderen Seite gibt es Sprachen, die so konservativ weiterentwickelt werden, dass sich gefühlt kaum etwas tut, vielleicht auch weil sie sehr gut anpassbar sind. Ein Beispiel hierfür ist Clojure (oder generell viele Lisp Dialekte). Immer wieder wird die Community ein wenig unruhig, weil sie den Eindruck hat es tut sich kaum etwas. Diese Woche kam Version 1.9 heraus, und das Changelog zeigt ganz gut, dass an der Sprache an sich kaum etwas geändert sondern nur leicht optimiert wurde (https://clojure.org/community/devchangelog). Eine der größten Änderungen die eingeplant war ist Spec, welches den Entwicklern umfangreiche Validierungen auf Datenstrukturen erlaubt. Und sogar Spec wurde im April aus dem Core entfernt und wird nun als Bibliothek geführt - weil es möglich ist, und die Sprache keine neuen Syntaxkonstrukte benötigt um erweitert zu werden, Lisp hat unheimlich wenig Syntax.
Java steckt jetzt irgendwo zwischen diesen beiden Extremen. Es muss die Kompatibilität in die Vergangenheit halten, um die Enterprise Anwender nicht zu verprellen. Gleichzeitig werden neue Konstrukte eingeführt, um den Entwicklern die Arbeit leichter zu machen, und z.B. funktionale Features in die Sprache einzubinden. Das bekommt Java erstaunlich gut hin, ohne andauernd neue Syntax einzuführen, auf der anderen Seite wird Java deshalb diese „neuen“ Features nie so bequem und elegant umsetzen können wie andere Sprachen. Und gerade diese vergleichen natürlich viele.
Ich persönlich fühle mich auch eher zum konservativen Ansatz hingezogen und entwickle privat auch viel in Clojure. Ich mag die Idee, dass das Handwerkszeug gleich bleibt und ich nicht bei jedem Release neue Syntax lernen muss, trotzdem aber moderne Features in der Sprache benutzen kann. Mir ist an Code auch eher wichtig, dass er ausdrucksstark ist, nicht, dass ich zwei Minuten weniger brauche ihn zu schreiben oder nur die Hälfte der LoC brauche. Trotzdem schaue ich mir natürlich auch die neuen Sachen in Java an, mit denen ich beruflich momentan fast gar nichts zu tun habe. Im letzten Monat habe ich ein Spielprojekt aufgesetzt und mich mal intensiv mit den neuen Konstrukten (seit Java 8 hust) beschäftigt, und das geht gut und flott von der Hand, das gefällt mir. Als nächstes ist Kotlin dran, aber eher weil ich das Gefühl habe, dass man es in den nächsten Jahren können muss, nicht unbedingt weil ich die Sprache sexy finde.