Erstens, man muss Mehrfachvererbung nicht verwenden, dann hat man auch nicht das Diamond-Problem ... wer sich damit auskennt, kann es aber trotzdem verwenden und kann damit (richtig verwendet) sogar "besseren" Code machen als ohne ...
Ein großtes Problem an Java sehe ich eher daran, dass es eine sehr schlechten Umgang mit Ressourcen bietet ... zwar wird der Speicher automatisch gehandhabt, aber so Dinge wie (File) Streams oder Sockets, oder Locks machen einem meistens Kopfzerbrechen ... Da ein Objekt in Java "keinen" Destructor anbietet, kann man das Objekt selbst nicht dafür verantwortlich machen dass es alles aufräumt, bevor es zerstört wird, sondern muss diese Verantwortlichkeit an den Aufrufer übergeben ... Das heißt ... wenn ich ein File-Objekt erzeuge, genügt es nicht, das Objekt zu zerstören, um das File wieder zu schließen, sondern man muss explizit daran denken, es an der richtigen stelle zu schließen ... Kommt es dann zu Exceptions, kann so etwas dann recht schnell vergessen werden ...
Da aber bei Java immer versprochen wird, dass keine memory leaks entstehen können, wird meist auf die anderen Ressourcen viel zu schnell vergessen und dann hat man erst wieder das gleiche Problem ...
|