Moin Moin!
Am Ende ist man nur noch dabei, Daten wie blöd auf irgendetwas zu casten, damit nicht alles auseinander fällt und man die Typprüfungen letztlich aushebelt.
Ich hab einiges in Java gesehen und gemacht, aber das ist mir noch nie untergekommen. Hast du vielleicht versucht, Java nicht wie Java sondern wie eine andere Programmiersprache zu verwenden?
Nö, ich hab nur solchen Code gesehen und dankend abgelehnt.
Man tippt sich in Java entweder die Finger wund, oder man läßt Ko^H^HCode generieren. Beides ist nicht sonderlich schön.
Was bedeutet "Ko^H^HCode"?
^H = Backspace
Den Rest darfst Du dir selbst ausmalen.
Aber versuch mal eine Java-Anwendung zu schreiben, die über Plattformgrenzen hinweg ein Gerät an einer RS232-Schnittstelle oder gar an einem USB-Port steuern soll. Das endet oft damit, dass man eine betriebssystem- und architekturspezifische "Native Code"-Schnittstelle bastelt, darüber ein paar Lagen Wrapper wie Klopapier stapelt, und hofft, dass der üble Geruch durch die Wrapper ausreichend verdeckt wird.
Java wurde ja auch mit dem Ziel entworfen, möglichst nah an der Hardware und am Betriebssystem zu sein. Deswegen die VM...
Nö, das ist die nachgebastelte Legende. Ursprünglich gab es durchaus einen Plan für eine Hardware-Maschine (Star 7), die compilierten Java-Code in Hardware ausführen sollte: http://en.wikipedia.org/wiki/Java_(software_platform)#History
Ernsthaft: Hast du in diesen Fällen vielleicht versucht, Java für etwas zu verwenden, für das es nicht gedacht ist?
Ich nicht, ich schreibe ohne große Not keinen Java-Code.
Zu den Vorteilen von Java können die "Millionen Fliegen" sicher mehr schreiben als ich, mir steht Java einfach nur im Weg.
Der Fliegensager hinterlässt doch einen etwas unguten Nachgeschmack. Glaubst du wirklich, alle Java-Entwickler rennen nur einem Trend hinterher?
Nicht alle, und nicht nur einem Trend.
Vor allem solltest Du die Stärken und Schwächen kennen.
Zuallererst sollte man wissen, welche Sprache/Plattform wofür gedacht ist. Dann weiß man, dass beispielsweise ein Vergleich von Java mit C sinnlos ist.
Klar, denn C gewinnt. *SCNR*
Im Ernst: Auch der Vergleich muß erlaubt sein. Angefangen damit, dass man sich in C viel schneller und viel uneleganter in die Füße schießen kann als in Java. C kennt keine Strings und keine Arrays, beides ist nur eine dünne Schicht Syntactic Sugar über der Pointer-Arithmetik. Man muß sich in C komplett von Hand um die Speicherverwaltung kümmern. Das hat allerdings auch den Vorteil, dass einem nicht irgendwann völlig überraschend die Garbage Collection in die Parade fährt und die CPU blockiert.
C und Pascal sind essenziell wichtig, weil sehr viele andere Sprachen mehr oder weniger direkt von C ([...] C#, [...] Javascript, Java [...]) [...] abgeleitet sind.
Sorry, das ist völliger Unfug: C#, Javascript und Java haben vielleicht geringfügige Syntaxanleihen bei C genommen, sind aber ansonsten C so ähnlich wie Äpfel Telefonen.
"Geringfügig" im Sinne von "großenteils", ja.
Ein C-Programmierer, der C# (oder Java oder Javascript) lernt hat keinen nennenswerten Vorteil gegenüber einem Pascal-Programmierer, der C# (oder Java oder Javascript) lernt.
Außer dass er viele Konstrukte aus C bereits Zeichen für Zeichen kennt.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".