Ist Java tatsächlich unnötig kompliziert? Sind andere OOP-Sprachen simpler und trotzdem genauso mächtig?
Java ist am Ende des Tages eine Sprache, die im Enterpriseumfeld gerne eingesetzt wird. Das kann sich in einzelnen Merkmalen eventuell darin äußern, dass diese sehr kompliziert erscheinen. In den meisten Fällen jedoch stellt sich oft heraus, dass einfach sehr viel Überlegungen in diese Dinge geflossen ist, um sie möglichst generisch für viele Anwendungsfälle bereitzustellen. Das betrifft aber meistens eher das Ökosystem um Java herum.
Mal abgesehen davon, dass Java (die Sprache) auch nicht komplizierter oder unkomplizierter als andere Hochsprachen ist (immerhin ist es eine der meist eingesetzten Programmiersprachen der Welt, es kann also nicht so kompliziert sein!) bietet Java eben auch ein riesiges Ökosystem an verfügbaren Bibliotheken, ausreichend stabile Buildverfahren etc.
Ein Einsteiger in die Programmierung kann sich an diesen Bibliotheken bedienen und gleichzeitig sicher sein, dass die eingesetzten Bibliotheken nicht über nacht verschwinden und das Projekt nicht mehr kompiliert/gebaut werden kann (kommt im node.js Umfeld gerne vor).
Java ist Turingkomplett, d.H. es ist genauso mächtig wie andere turingkomplette Programmiersprachen. Der einzige Vorwurf, den man Java eventuell machen kann, ist die Art und Weise, wie gewisse Dinge in Objekten verortet werden. So ist zum Beispiel der Zugriff auf einzelne Bits eines Bytes imho unnötig kompliziert. Auf der anderen Seite - Ich kenne nur wenig Personen, die in Java auf Bitebene operieren müssen.