Mein Abschied von Java
Erstmal etwas Smalltalk
Aber der Reihe nach: Java war ein Hype, weil man marketingtechnisch einige Sachen richtig gemacht hatte. Dennoch sahen zum Beispiel viele C++-Entwickler in Java einfach ein C++ ohne Pointer.
C++ crashes. Java leaks. You choose.
Tatsächlich ist Java ein Smalltalk-System, dem man eine C-artige Syntax verpasst hat, um es im Mainstream besser mitschwimmen zu lassen. Von der Kontrolle über Sprache und Laufzeitumgebung (im folgenden Virtual Machine oder kurz VM genannt) versprach sich Sun Microsystems vielleicht eine größere Marktmacht. Letztlich tummelten sich bei Sun allerdings mehr technisch brillante Informatiker als kluge Kaufleute, und so ließen sie sich mit schmutzig und billig in Kinderarbeit gebastelten Nachbauten wie .NET und C# von Microsoft die Butter vom Brot nehmen.
Von der Smalltalk-Vergangenheit zeugten damals noch schwergewichtige IDEs wie IBM Visual Age for Java — sehr visuell, modellbasiertes Drag and Drop und enorm mächtig. Ein wenig wie ein Kind von Delphi und Rational Rose. Erdrückt vom eigenen Übergewicht und damit mangelnden Wartbarkeit starb das Projekt und wurde später als Eclipse wiedergeboren: Eine Runtime für zahllose Plugins. Damit hatte man die alten Fehler ausgemerzt und eine große Fangemeinde gewonnen.
Von Treibern und Getriebenen
Damals™, als Apache Commons, JUnit, Struts, Maven, Tomcat und Konsorten Innovationstreiber waren und Java-Entwicklung richtig was bewegt hat, war man in der Java-Community in bester Gesellschaft. Codehaus war die Avantgarde, Eclipse war der Ort, wo coole Plugins entstanden sind und nicht der Speicherfresser mit 17 Update-Sites, den man widerwillig startet, weil IntelliJ abgelaufen ist.
Java war objektorientiert bis zur Selbstaufgabe (new ManagerFactoryFactoryBuilder()
lässt grüßen!), alles war eine Klasse, auch wenn’s weh tut und mit Swing konnte man alle GoF Design Patters in der originalen Reihenfolge durchspielen (sic!)
Und heute? Die coolen Java-Veteranen schreiben jetzt in Go, Rust, Kotlin, oder führen Tech-Teams mit echter CI/CD-Pipeline. Die Kreativen bauen Tooling, DSLs, Infrastruktur, APIs – nicht mehr Servlets. Der Nachwuchs kommt oft gar nicht mehr mit Java in Kontakt, außer an der Uni oder wenn sie ein SAP-System «integrieren» sollen. Java selber wird in großen Firmen noch benutzt, weil es robust ist (also, weil es seit 15 Jahren nicht mehr angefasst wurde). Spring Boot kaschiert, dass keiner mehr genau weiß, was darunter eigentlich abgeht und der Nachwuchs bleibt weg, weil alles, was man da baut, aussieht wie der Backend-Monolith von 2010 mit Swagger-UI von 2016.
Java war mal Avantgarde. Heute ist es oft das Cobol der Mittelschicht-IT. Und die echten Hacker schreiben sich gerade einen neuen Build-Runner in Rust, weil make
ihnen zu leise ist. Populär wurde Java, weil es mit «Write once, run anywhere» warb und eigentlich meinte: «Schreib’s einmal, und der Application Server regelt den Rest – irgendwie».
Das Spring-Framework, damals Mitstreiter auf seiten des klaren Codes ist heute ein mächtiges Werkzeug das alles kann und alles versteckt. Injizierte man sich früher einfach seine Abhängigkeiten mit
|
|
brauchst Du heute «nur noch» @SpringBootApplication, @RestController, @Configuration, @EnableAsync, @Autowired, @Transactional, @Qualifier, @PreAuthorize, @Profile, @Scheduled, @RabbitListener, @Value, @ComponentScan
und ein bisschen Magie.
Und etwas …script
Ein weiteres Trojanisches Pferd für die Entwicklermassen ist JavaScript. Der Name lässt bereits erahnen, dass es mit Java nicht das geringste zu tun hat. Seiner Zeit weit voraus, wurde es Mitte der 1990er Jahre innerhalb von 10 Tagen bei Netscape unter dem Namen LiveScript entwickelt — mit Closures, Prototypen, dynamischem Scope und First-Class-Functions. Ein vollwertiges Lisp, das man — mal wieder — in die schäbigen C-Klamotten gezwängt hat. Dann noch mit der Vorsilbe «Java» versehen, damit es an der Jobbörse auftaucht und man sich das schnell noch mit auf den Lebenslauf schreiben kann.
Eigentlich mächtig und flexibel, nutzen es viele Entwickler wie Java in hässlich. Irgendwann kam dann JQuery, um das Chaos im DOM zu bändigen, wöchentlich kamen weitere Frameworks dazu, bis man länger am Setup des Toolings saß, als am eigentlichen Programm und böswillige Zeitgenossen ihren Schadcode ganz offiziell über npm
verteilen konnten.
Um zumindest wieder ein wenig Seriosität vorzutäuschen, gönnte man sich später das Feigenblatt TypeScript. Damit konnte man so tun, als wäre alles wieder Java. Seit es keine Lederkrawatten mehr gibt, musste man sich ja etwas Neues einfallen lassen, um stilvoll uncool zu bleiben.
Die Evolution schreitet voran
Die Welt hat sich weitergedreht, und Java mit ihr – nur halt eher wie ein Öltanker. Im Schatten entstanden neue spannende Sprachen, die nicht vorgaben, etwas anderes zu sein, sondern ihre Ideen auslebten — weniger Buzz, mehr Klarheit, von Technikern und für Techniker:
- Python: «Hier, lesbarer Code. Wenn’s hässlich wird, bist Du selber schuld!»
- Go: «Du brauchst keine Klassen. Hauptsache, es läuft.»
- Rust: «Du brauchst Hirn. Aber dann gehört Dir die Welt.»
Wenn wir Entwickler eines gemeinsam haben, dann das feine Gespür dafür, wann Code, Sprache oder Tool nur vorgibt, etwas zu sein – und wann es wirklich Substanz hat. Und manchmal ist ein sauberer def
in Python eben ehrlicher als 30 Zeilen «Enterprise Grade™ Factory Layer Interface».
In diesem Sinne: return 0;
und schönes Wochenende!