Mehr Kritik an Java und dessen Kritikern

Kaum eine Woche nach meiner Zusammenfassung jüngster kritischer Stimmen in Bezug auf die Entwicklung und den aktuellen Stand der Programmiersprache und Plattform Java, „Hat Java seinen Zenit erreicht?„, laufen die Weblogs langsam heiß. Viele Java Entwickler haben die Artikel gelesen und nehmen nun ihrerseits Stellung zum Thema oder aber äußern scheinbar unabhängig von den aktuellen Ereignissen in der Blogosphäre ihre eigenen Ansichten.

Führt Java zu schlechter ausgebildetem IT Nachwuchs?

In ihrem Artikel „Informatik-Ausbildung: Wo sind die Software-Ingenieure von morgen?“ (engl.) äußern sich Dr. Robert Dewar und Dr. Edmond Schonberg von AdaCore Inc. u.a. kritisch gegenüber der weitläufigen Praxis Java aufgrund der allgemeinen Popularität als erste Sprache in der Ausbildung zu lehren (Update: Siehe auch diesen darauf basierenden Artikel „Java ist genauso überflüssig wie Web 2.0“ auf silicon.de). Ihrer Meinung nach hat dies zur Folge, dass die so herangezogenen Fachkräfte gegenüber ihren Vorgängern deutliche Defizite aufweisen. Beide gehören seit jahrzehnten der Fakultät der Universität New York an und führen eine deutliche Leistungsminderung aktueller Studenten imi Bereich der Systemarchitektur darauf zurück, dass sie mit Java zunächst mit einer Sprache und Plattform konfrontiert wurden, die das Verständnis der Systemarchitektur durch die inbegriffene Abstraktion vom eigentlichen System schwächt. Beide Doktoren führen an, dass sie mit ihrer Firma AdaCore zunehmend Probleme haben qualifiziertes Personal zu finden. AdaCore ist spezialisiert auf die Entwicklung von System-Anwendungen für das Militär.

Ihren Beobachtungen an der Universität zufolge war es schwierig den Studenten Systemarchitektur nahezubringen, nachdem sie in java bereits mit grafischen Benutzeroberflächen gearbeitet hatten. Den Studenten komme das Gefühl für die Semantik des Codes ohne eine GUI abhanden und noch dazu sei ihnen das wichtige Konzept von Zeigern völlig fremd, da es diese in Java so nicht gibt. Auch die Benutzung von Java Bibliotheken wird kritisiert, da ihrer Ansicht nach die Studenten daran gewöhnt werden, so lange in der API zu suchen, bis sie eine Funktionalität entdeckt haben, die der gesuchten nahe kommt, ohne sich aber Gedanken darum zu machen, wie die Funktionalität implementiert ist. Als Folge dessen können zwar Programme geschrieben werden, die eine bestimmte Aufgabe irgendwie erfüllen, aber wirklich selbstständig Entwickeln und Programmieren lernt man so nicht.

Um ihre Standpunkte zu unterstützen führen Dewar und Schonberg auch Zitate aus privaten Unterhaltungen mit Bjarne Stroustrup, dem Erfinder von C++, an, welcher den massiven Einsatz von Java ebenso kritisch betrachtet, nachdem er speziell von AT&T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin und anderen entsprechende Beschwerden über den Kenntnisstand von Absolventen erhalten hat.

Die Entwicklungsumgebung (IDE) ist entscheidend

In seinem Artikel „Die IDE ist die Sprache“ (engl.) vertritt Evan Summers eine konträre Meinung zu Bruce Eckel und Joshua Bloch. Für ihn ist die steigende Komplexität einer Sprache, das ständige Hinzufügen der im Sprachstandard enthaltenen Features, kein Hindernis für ihren Erfolg. Für ihn wird dies mehr als wettgemacht durch die Möglichkeiten moderner Entwicklungsumgebungen, die den Programmierer durch Code-Vorschläge, automatische Vervollständigung, Refactoring, Automatisierung des Build-Prozesses, etc. in vielen Punkten unterstützt und signifikant entlastet. Gleichzeitig gibt Summers aber auch zu nach vielen Jahren mit Java Probleme damit zu haben sich in Sprachen einzudenken, die nicht wenigstens eine sehr ähnliche Struktur besitzen. Seiner Meinung sollte Software, in diesem Fall auch Java als Sprache, Plattform und die zugehörigen IDEs, ständig und bis in alle Ewigkeit weiterentwickeln.

In den Kommentaren zu seinem Artikel warnt u.a. scotty69, dass mehr als einmal Tools (eigenständig oder in eine IDE integriert) schon häufiger dazu benutzt wurden in der Java-Welt viel zu komplexe Designs zu rechtfertigen. Als Beispiel werden neben RMI und JAX-WS die EJB Deployment Deskriptoren genannt, für die nichtmal die IDEs in der Lage waren gute und funktionierende Unterstützung zu bieten, so dass alle Welt händeringend nach anderen Lösungen (XDoclet & Co.) ausschau hielt und letzten Endes Annotationen in den Sprachstandard aufnahm, um eine funktionierende Lösung zu bringen.

Wir müssen dahin gehen, wo es weh tut

Hauptsächlich im Sport, vornehmlich im Eisockey und Basketball, hört man immer wieder, dass dieser oder jener Spieler dahin geht, wo es weh tut. Er versucht nicht Schmerzen zu entgehen, sondern nimmt sie in Kauf, wenn ihm dies notwendig erscheint um mit dem Team erfolgreich zu spielen. Laut Cay Horstmann sollte man weniger über die Details eines neuen Features, ob es nun besonders elegant ist oder es noch irgendeinen vielleicht besseren Weg der Umsetzung gibt, reden. In seinem Blog-Eintrag „Dinosaurier ertragen den Schmerz“ (engl.) spricht er sich dafür aus sich darauf zu konzentrieren da aktiv zu werden, wo den Entwicklern der Schuh am meisten drückt. Für sich selbst kann er das derzeit auf drei Hauptpunkte reduzieren, nämlich die nervige Notwendigkeit Codeteile immer und immerwieder zu tippen (Boilerplate Code), Web-Anwendungen und Nebenläufigkeit (Concurrency).

Boilerplate Code findet er überall da, wo er die ewig gleichen Getter und Setter schreiben muss, wo ein Event-Listener mit innerer Klasse schreiben muss, etc. Diese stupiden Arbeiten empfindet Cay zwar als extrem nervig, würden seiner Meinung nach aber keine Änderung an der Sprache rechtfertigen.

Wo etwas geschehen sollte ist im Bereich Web-Entwicklung. Cay benutzt JSF in der Hoffnung hierfür Komponenten zu finden, die er benutzen kannohne sich um die Basics zu kümmern. Das Arbeit mit GET, POST und AJAX nervt ihn, weil es ihn davon abhält sich um die Lösung der Business-Probleme zu kümmern, für die die Anwendung dienen soll. Für ihn ist JSF auch ein wenig wie Suppe mit der Gabel zu essen.

Concurrency macht ihm gar Angst. Er gibt zu nicht schlau genug zu sein mit Nebenläufigkeit in Threads zu arbeiten und sich selbst versichern zu können, dass die Anwendung nie einen Deadlock erleiden würde, ähnlich wie er früher in C++ nie das Selbstvertrauen hatte zu sagen, dass seine (nicht-triviale) Anwendung niemals ein Speicherleck haben würde.

Web-Entwicklung und nebenläufigkeit sind für ihn persönlich kritische Punkte, die es zu adressieren gilt und wo er sich sonst nötigenfalls Gedanken machen muss, die Plattform komplett zu wechseln.

Kritik ist gut – wenn sie ernst genommen wird

Man merkt der Diskussion an, dass sie den Entwicklern am Herzen liegt und dass sie so vielschichtig ist wie auch dei Einsatzzwecke von Java udn Software allgemein, immer auch gefärbt vom ganz persönlichen Background des Schreibers. Sun täte gut daran sich intern genau Gedanken über das zukünftige Vorgehen zu machen und nicht das Marketing die Sprache und Plattform Java mit der Seuche Featuritis anstecken zu lassen. Stattdessen braucht es smarte Entscheidungen von smarten Leuten mit Blick auf die Praxis. Java ist in erster Linie für Programmierer da und diesen gilt es so gut wie möglich zur Hand zu gehene, dass sie die ihnen gestellen Aufgaben möglichst einfach und hochwertig lösen können.

Kommentar (1) Schreibe einen Kommentar

  1. In dem Artikel „Who Killed the Software Engineer? (Hint: It Happened in College)“ wird Professor Robert Dewar nochmal interviewt, um einige Punkte seiner Aussage nochmal klar zu stellen und zu berichtigen. Er erklärt hier, dass sein Hauptkritikpunkt der Wechsel der Ausbildungspläne von Grundlagen wie Mathmatik und Algorithmen hin zu „Spaß am Programmieren“ ist.
    Weiterhin erhielt er wohl bisher durchweg sehr positives Feedback von allen Seiten.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.