Daniela Koller: nun: JAVA

Beitrag lesen

Hi Martin

<moved>

Ich sags mal ganz klar und deutlich: ich mag Java nicht.
Das ist Dein subjektives Problem und kein objektives Argument.

Hat er das jemals behauptet?

Nein. Ich las keinen Grund/Beispiel für Umständlichkeit, geringe Komfortabilität und generelle Langsamkeit.

Genereller Grund: Dank einem einzelnen! Javaw Prozess war meine Maschine
derart langsam das ich nicht mehr tippen konnte, auf dem Prozess lief
eine Servlets/JSP Anwendung mit einem einzelnen User, die Anwendung
bestand aus 1 Servlet + ungefähr 10 JSP und einzelne Action Klassen.

StringBuffer war nicht das einzige Beispiel. Derartige Schnitzer sind schlicht
und ergreifend ein Indiz fuer ein fehlerhaftes Konzept.
Eine suboptimale Umsetzung ist kein Beleg für Mängel des Konzepts.

Noch eins: URLEncoder, der gefährdet gerade die Auslieferung unserer
Applikation weil der nur mit dem ServerEncodingarbeitet, wohlgemerkt
nicht das des Servlets, sondern Server.

Was hast du eigentlich für ein Problem mit einer Veränderung der API?
Um was für "Schnitzer" handelt es sich denn bei StringBuffer und Konsorten.
Dü würdest eine neu entwickelte API nie mehr verändern, auch wenn die praktische Erfahrung vieler Entwickler dies eigentlich nahelegt?

Wegen praktischer Erfahrung eine API zweimal ändern? So geschehen bei den
Events bei swing oder AWT

In den Bereichen, in welchen Java massivst eingesetzt wird (verteilte Businessapplikationen) sind die (äußerst selten vorkommenden!) Api-Anpassungen das _geringste_ Problem und die _einfachste_ Herausforderung.

Schön wäre es, unzulängliche Apis die ein Umstellen auf eine nicht Quickhack
Lösung sind häufig nötig.

Bei Java muss man viel auswendig lernen.
Generell setzt Erkenntnis Wissen voraus. Was aber, bitte schön, muss man auswendig lernen? Meinst Du die Java-Datentypen?

Die ganzen Unzulänglichkeiten? ZB: bei welchen zu Java gehörenden Klassen
kann man clone benutzen, wann ist es Müll, oder das selbe mit equals das
auf die Referenz und nicht auf den Inhalt vergleicht? Zu diesem Thema
gibt es zahlreiche Webpages.

Wer eine potentiell performanzkritische Anwendung "mal so schnell" in Java schreiben will und wahl- und wissenslos die abstrakten Designmöglichkeiten von Java verwendet (Stichworte: Strings, Reader/Writer, Collection-Framework), ist selbst schuld.
Man könnte sogar augenzwinkernd sagen: JAVA zwingt den Entwickler wieder, über seine Arbeit nachzudenken ;-)

Nein, es nimmt ihm das Nachdenken ab indem es vorgaukelt dass es das nicht wäre,
das sind dann die schlecht designten Applikationen von denen du sprichst. Schliesslich
schreit Java dem Anwender ja entgegen, bei mir gibt es nichts gefährliches...

* Dies kann übrigens auch Folge der Kombination aus "jungem Alter" und gleichzeitigem Erfolg von Java sein (woran letzteres wohl liegt?).

Wieso ist Windows immernoch erfolgreich? Das Schlüsselwort ist Marketing

Ich finds schon krank, dass eine Firma mal eben so mir nichts, dir
nichts die APIs aendern kann.
Was ist daran krank - das nennt man Fortschritt, Weiterentwicklung. Übrigens passiert das bei SUN nicht "mir nichts, dir nichts". Vielleicht passiert es ohne Deine Zustimmung, aber solche Fragen können und werden vorher in Java Community diskutiert.

Und Sun kann darüber entscheiden ganz alleine, ja, nette Community, aber keine
Druckmöglichkeit. BTW: es passiert wohl mir nichts dir nichts, wenn zb Bugmeldungen
als solved geschlossen werden, allerdings mit einer API-Änderung in der nächsten
Version (Beispiel erneut URLEncoder)

Eine API legt man einmal fest und schreibt dann hoechstens Erweiterungen.
Aha. Wo steht das?
Ich hab nicht unbedingt die groesste Lust, alles neu schreiben zu muessen.
Du plädierst für nichts anderes als Stillstand.

Er plädiert dafür, ältere Applikation nicht nur deswegen ändern zu müssen,
weil irgend ein Hersteller lust hat, alte APIs nicht mehr zu unterstützen.
Und ganz genau das heist deprecated, Vorsicht, ändere es, irgendwann
unterstützen wirs einfach nicht mehr.

Java ist plattformunabhängig.
Perl auch.
Ist kein Gegenargument.

War das jemals als Gegenargument gedacht und nicht viel eher als
was ist daran _so_ speziell.

Java ist mächtig.
Das wage ich zu bezweifeln
Warum? Beispiele? Gründe (wo sind diese, ich warte immer noch)

Die Sprache Java ist sehr schwach, die Klassenbibliothek Java
ist stärker, gehört jedoch nicht zu einer Sprache, und Java lässt
sowohl in der Klassenbibliothek, als auch in der Sprache sehr
elementare Dinge vermissen, so zum Beispiel für eine Sprache
sie sich wunderbar Objektorientiert nennt Design by Contract.

Java ist einfach.
Perl auch.
Die Java-Syntax ist für Programmiereinsteiger mit Sicherheit leichter zu erlernen. Ich halte Java sogar für elegant.

Die ganzen Spezialfälle wie bereits oben erwähnt sind es nicht, ich habe
C++ in 2 od 3 Monate bei 6h wöchentlich gelernt, Java lerne ich jetzt seit
5 Monate täglich 8h, ich komme mit den Spezialfällen immernoch nicht klar.

Wer ernsthaft damit arbeiten will, muss sich aber selbstverständlich ernsthaft und ausdauernd damit beschäftigen (OO!).

Java ist kein sauberes OO, und es ist auch bei ernsthaftem und dauerhaftem Beschäftigen
nicht angenehmer mit Java zu arbeiten.

Java ist sicher.

Wie soll eine Sprache sicher sein?
Weil die (jdk)-VM bereits ein gewisses Maß an Sicherheit garantiert (z.B. Stack-Overflow Attacken, zumindest ist mir bisher noch keine bekannt). Das "Sandbox"-Modell ermöglicht die eine frei konfigurierbare Zugriffskontrolle auf Systemresouren, sei es aus lokalem oder "remote" Code. Weil auf Pointer und Pointerarithmetik verzichtet wird.

Speicherlöcher krieg ich dir in Java auch ohne Pointer hin.

Letzteres ermöglicht prinzipiell auch die effizientere Entwicklung von robustem Code.

  • Unterstützung für Internationalisierung durch Unicode (alle Strings/Chars werden intern als Unicode-Zeichen behandelt)

Und Designfehler in anderen Klassen machen diesen Vorteil zumindest für Servlets bis und mit
Java 1.3.1 zunichte -> URLEncoder (mein persönlicher Liebling)

  • Java ist Binärcode-kompatibel

Was soll das sein?

Gruss Daniela