Das Web ist Typenfrei


Eines der ältesten Missverständnisse rund um Internetanwendungen ist, dass man sie am besten in Java schreiben könnte. Mit seiner Typsicherheit und “weil es ja dafür gemacht wurde”, ist Java am besten fürs Web geeignet. Über beides kann man sich trefflich streiten.

Tatsächlich ist das Web ja eigentlich völlig Typfrei. Ein HTTP-Request ist zunächst einmal ein langer String, den es gilt, in Happen zu zerteilen, und aus den einzelnen Bestandteilen etwas zu machen, das für ein Programm verwertbar ist. Und wenn ein Web server etwas daraus gemacht hat, liefert er eine HTTP-Response zurück, die lediglich aus einem langen String besteht.

Mir ist in dieser Sache noch nicht ganz klar, welchen Vorteil vielen Entwickler in einer stark typisierten Sprache für Web-Anwendungen sehen. Klar ist mir aber, warum man in Web Applikationen häufig eine java.lang.NullPointerException zu Gesicht bekommt: Strings sind ihrer Natur nach schwer in ein Typsystem zu pressen. Jede Annahme darüber, was sich in einer Zeichenkette verbirgt, kann falsch sein, und bedarf einer umfangreichen Prüfung. Und genau die Zone, in der diese Prüfungen gemacht werden müssen, ist in einer streng typisierten Umwelt sehr anfällig: bevor ein String in eine Zahl umgewandelt werden kann, müssen umfangreiche Prüfungen gemacht werden, aber dabei kann nur auf Funktionalitäten von Strings zurückgegriffen werden, oder aber man begibt sich in die Gefahrenzone Typecasting: java.lang.NullPointerException.