»Das Handwerk beherrschen: ein solides Grundwissen in Java, Collections, Design Patterns und Testing« (Interview)

Was müssen Java-Entwicklerinnen und -Entwickler können? Was bringt Java 20? Und was rät Java-Profi und Buchautor Michael Inden allen, die Java neu lernen möchten? Als erfahrener Entwickler verfügt Michael Inden nicht nur über hervorragendes Grundlagen- und Praxiswissen der Java-Programmierung, es gelingt ihm auch, sein umfassendes Know-how in Vorträgen, Workshops und Fachbüchern weiterzugeben. Wir haben uns mit ihm über seine Begeisterung für das Coden, den Einstieg in Java und aktuelle Aufgaben und Trends unterhalten.

Michael, mit welcher Sprache bist du ins Programmieren eingestiegen?

Tatsächlich ist das nun schon rund 35 Jahre her. Damals habe ich mir bei Aldi vom Taschengeld einen C16 gekauft und mit BASIC angefangen. Nach ersten Gehversuchen habe ich schnell eigene Programme wie einen Funktionsplotter erstellt.

Damals hat man noch Programme aus Zeitschriften abgetippt. Einige davon waren sogar in Maschinensprache bzw. Assembler. Schnell kam dann bei mir der Wunsch auf, das Ganze zu verstehen. Etwa, um in Spielen ein paar Extraleben mehr oder andere Bonuselemente zu bekommen. So bin ich also auf Assembler gekommen. Das habe ich schließlich genutzt, um Erweiterungen des eingebauten BASIC zu programmieren und dies als Listing in Zeitschriften zu veröffentlichen. Somit ging ich schon damals ein klein wenig unter die Autoren.

Was schätzt du an Java? Warum macht die Arbeit als Java-Entwickler Spaß?

Ich bin seit nahezu den Anfängen von Java dabei und kenne sogar noch die Version 1.0. Trotz der über 25 Jahre auf dem Buckel hat sich Java als Sprache stets weiterentwickelt. Vom einstigen New-Kid-On-The-Block reifte Java zum langjährigen Platzhirsch für Businessapplikationen. Durch die Spracherweiterungen der aktuellen Java-Versionen weht auch immer noch genug frischer Wind, sodass die Sprache nicht altbacken wirkt. Zudem bietet das Java-Ökosystem ein tolles Tooling und insbesondere mit Eclipse und IntelliJ zwei herausragende IDEs.

Heutzutage code ich beruflich leider nicht mehr selbst, aber gebe mein Wissen gern weiter, indem ich meine Mitarbeiter coache. In meiner Freizeit macht es mir jedoch riesig Spaß, noch das eine oder andere Programm zu schreiben, mittlerweile immer öfter auch mal mit Python.

Michael Inden

Einige Jahrzehnte Coding-Erfahrung: Michael Inden

»Java reifte zum langjährigen Platzhirsch für Businessapplikationen – und bringt in seinen aktuellen Versionen noch immer frischen Wind mit.«

Wann hast du begonnen, anderen Menschen mit Büchern Java beizubringen – und wie kam es dazu?

Eigentlich war es eher ein Zufall. Schon im Studium und später bei meinen Arbeitgebern habe ich Skripte und Anleitungen erstellt, erste Code-Review-Sessions ins Leben gerufen und Coding-Conventions mit ausgearbeitet.

Mit der Zeit habe ich auch weitergehende Schulungen zu Java-Neuerungen, Design Patterns und vielen weiteren Themen ausgearbeitet und gegeben. So entstand der Gedanke, meine zahlreichen Präsentationen und Materialien doch »einfach nur mal« zusammenzuschreiben, um anderen Entwicklerinnen und Entwicklern den Einstieg in den Berufsalltag zu erleichtern.

Wie gehen Einsteiger am besten vor? Erst einmal Sprache lernen oder gleich in die Praxis?

Vermutlich gibt es da nicht den einen und besten Weg. Ein paar Dinge sind aber meiner Ansicht nach absolut unerlässlich: Sowohl eine gute Portion Forscherdrang als auch der Wunsch, Dinge kreativ gestalten zu wollen. Und sich zu fragen: Wie kann ich das mit einem Programm umsetzen oder lösen?

Zudem kann man Programmieren nur durch stetiges Üben und Ausprobieren lernen. Am einfachsten ist es, wenn man bereits ein kleines bestehendes Programm als Ausgangsbasis hat und dieses leicht abwandelt oder erweitert. Zum Aufstieg nach dem ersten Einstieg in das Programmieren kann ich mein Buch »Java Challenge« empfehlen, das mehr als 100 Programmierrätsel zum Knobeln enthält und dabei umfassendes Wissens über Java und angrenzende Themen vermittelt.

Es kann auch hilfreich sein, bei Open-Source-Projekten mitzumachen und beispielsweise auf GitHub ein passendes Projekt zu suchen.


Java-Bücher von Michael Inden


Welches Framework und welche Techniken sollten Entwickler beherrschen?

Generell finde ich es sehr wichtig, dass Entwickler*innen ein solides Grundwissen in Java, Collections, Design Patterns und Testing  besitzen, ihr Handwerk also beherrschen. Danach können sie sich eigentlich in nahezu allen Programmier-Aufgaben austoben. Vielleicht wagt man dann auch mal einen Blick auf andere aktuelle Sprachen. Momentan ist da Python mein Favorit.

Über welche Trends sollten sie sich aktuell informieren?

Aktuell scheint mir ChatGPT eine interessante Software im Bereich Artifical Intelligence zu sein.

»Unerlässlich sind eine gute Portion Forscherdrang und der Wunsch, Dinge kreativ gestalten zu wollen.«

In dieser Woche findet nicht nur die Konferenz JavaLand statt, Oracle veröffentlicht auch Version 20 von Java. Auf welche neuen Features und Verbesserungen freust du dich?

Java 20 umfasst insgesamt sieben JEPs, von denen JEP 432 und JEP 433 im Zusammenhang mit Verbesserungen rund um Records, Pattern Matching und Record Patterns stehen. Auch gibt es vielversprechende Neuerungen bei Multithreading und Parallelverarbeitung.

Somit gibt es mindestens folgende coole Neuerungen:

  • Mit Record Patterns ist die Dekonstruktion von Record-Werten sogar verschachtelt möglich. Mit Java 20 wurden dort ein wenig Feintuning betrieben und die Inferenz von Typparameter verbessert. Zudem kann man Record Patterns nun in for-each-Schleifen nutzen.

  • Pattern Matching für switch wurde bereits mit Java 17 als Preview Feature eingeführt und ermöglicht eine elegante, prägnantere Art Fallunterscheidungen. Dabei gab es Einschränkungen auf bestimmte Typen, was nun mithilfe von Record Patterns aufgehoben wurde. Insbesondere ist es möglich, komplexe Datenextraktionen und Abfragen zu formulieren.

  • Im Bereich Concurrency versprechen die Virtual Threads, eine leichtgewichtige Alternative zu herkömmlichen Threads zu sein. Damit ist es einfach möglich, auch hunderttausende Threads zu erzeugen. Darüber hinaus vereinfacht die Structured Concurrency die Multithreading-Programmierung, indem mehrere Aufgaben, die in verschiedenen Threads laufen, als eine einzige Arbeitseinheit behandelt werden. Auch die Verständlichkeit der Fehlerbehandlung und des Abbruchs von Aktionen lassen sich klarer ausdrücken.
  • Bereits erstmals in Java 16 eingeführt, geht das Vector API mit Java 20 in die fünfte Iteration. Hier geht es darum auszunutzen, dass viele heutige Prozessoren einfache Operationen wie Addition oder Multiplikation auf mehreren Daten in einem Rutsch parallel ausführen können – man spricht auch von SIMD (Single Instruction Multiple Data). Dadurch lässt sich die Leistung mitunter erheblich steigern.

Außerdem hoffe ich, dass in das im September 2023 bevorstehende Java 21 LTS (Long Term Support) möglichst viele der oftmals noch als Preview oder sogar nur als Incubator bereitgestellten Neuerungen nun final ins kommende LTS-Release einfließen.

Michael, vielen Dank für das Gespräch!