021
23.11.2006, 08:37 Uhr
0xdeadbeef
Gott (Operator)
|
Was mich an Java stört, sind im Grunde drei Dinge.
1. Alle Objekte liegen auf dem Heap
Ich hab im Grunde kein Problem mit garbage-collection, aber das Konzept ist nicht so mächtig, wie es zunächst den Anschein hat. Abgesehen davon, dass ein GC sich in aller Regel nur um Speicher kümmert, was meines Erachtens eine etwas beschränkte Sicht auf anforderbare Ressourcen darstellt, ist das Problem mit allen mir bekannten Implementierungen eines garbage collectors, dass man keine Ahnung oder Kontrolle hat, wann das Objekt denn zerstört wird. Das macht Destruktoren nahezu nutzlos, und Freigabeautomatismen, wie zum Beispiel zu beobachten in den Lock-Klassen der Boost.Thread-Bibliothek, werden ein Ding der Unmöglichkeit. Davon abgesehen ist der Heap auch mit Garbage-Collector deutlich ineffizienter zu bevölkern als der Stack, also wünschte ich mir eine Möglichkeit, Objekte auf den Heap zu legen.
2. Inkonsistenzen in der Sprache, z.B. bezüglich java.lang.String.
Java hat keine Operatorüberladung. Das ist im Grunde nicht schlimm, auch wenn ich das Feature in C++ wirklich gerne mag. Das Problem ist aber, dass die Sprache semantische Ausnahmen macht, um dem Einsteiger die Arbeit zu vereinfachen - so kann java.lang.String per +-Operator verbunden werden. Auch sind einige andere Konzepte eher halbherzig durchgezogen worden, so ist z.B. die Idee, dass alles von Object abgeleitet sein soll, durchaus vertretbar, aber das muss dann im Interesse der Konsistenz auch auf numerische Typen ausgeweitet werden.
3. lazy binding
Ich bin mir bewusst, dass dieses Konzept in letzter Zeit sehr modern ist, aber persönlich halte ich es für einen Schritt in die völlig falsche Richtung, das Programm die Arbeit des Compilers übernehmen zu lassen. Die bloße Existenz einer "NoSuchMethodError"-Klasse ist in meinen Augen ein Zeichen für mieses Sprachdesig.
Mit etwas Überlegung fielen mir möglicherweise noch mehr ein, aber das sind so ziemlich die drei Hauptpunkte. Mir ist bewusst, dass einiges davon Geschmackssache ist, aber es stört mich halt. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |