Zitat von sauzachn
Java ist sogar ein sehr gutes Beispiel für eine OO Sprache.
Ich will Java nicht schlecht reden, aber auch wenn die Sprache
objektorientierte Programmierung prinzipiell unterstützt, macht es
sie auch durch die unzähligen Ausnahmen unnötig kompliziert.
Nicht nur primitive Datentypen, sondern auch Packages, Klassen,
Operatoren, null, loops, Blöcke oder Methoden haben in Java eine
Sonder rolle bekommen, so dass sie entweder nicht wie gewöhnliche
Objekte behandelt, oder zumindest von der Syntax speziell
berücksichtigt werden müssen.
Ein Folge dieser Ausnahmen ist zum Beispiel, dass Metaprogrammierung
und Reflection in Java viel komplizierter sind als in "reinen" OOP
Sprachen wie Smalltalk, Ruby oder Io.
Eine weitere Folge sind die unkonventionellen APIs, die aus der
uneinheitlichen Syntax entstehen. Dinge Math.abs(-5) oder
Collections.sort(list) zeugen nicht gerade von gutem Design.
Instanzvariablen können öffentlich sein, und wenn man ordentliche
Kapselung implementieren will, muss man einen Haufen Get- und
Setmethoden schreiben, auch wenn man sie zunächst überhaupt nicht
benötigen würde.
Siehe hierzu auch das letzte drittel von diesem Artikel auf meinem blog.
Ich schätze die Plattform Java, weil sie mir eine riesige
Bibliothekensammlung und einheitliche Schnittstellen zur Verfügung
stellt. Die Sprache an sich ist, das sehe ich wie Paul Graham, ein
langfristig gesehen toter Ast im Evolutionsbaum der
Programmiersprachen.