I'm a coder - Java ist so böse...
Ich bin Softwareentwickler und ich nutze Java. Laut Twitter müsste ich mich nun schlecht fühlen, doch überraschenderweise ist dies gar nicht der Fall. Doch warum schreibe ich so etwas überhaupt? Im Rahmen der als Log4shell open_in_new bekannten Sicherheitslücke, in der weit verbreiteten Java Library Apache Log4j 2 open_in_new, gab es natürlich auch diverse verallgemeinerte undifferenzierte Aufrufe Java zu verteufeln. Dabei will ich vorab klarstellen das Java bei weitem nicht das Allheilmittel für die Probleme der Softwarewelt ist, aber eben auch nicht die grundlegende Quelle all dieser.
Allem voran sollte man bevor man schreibt das Java das Problem sei, erst einmal differenzieren was hier gemeint ist. Gemischt wird bunt und ohne Kontext die Sprache Java, Java EE (Java Platform, Enterprise Edition), JNDI (die Java API welche im Rahmen von Log4shell für den Angriff genutzt wird), die JVM, die Komplexität verschiedener Frameworks, die generellen Konzepte wie Java Programme arbeiten und noch vieles mehr.
In diesem Kontext kann ich persönlich sagen, dass die Sprache Java - sofern man eine der älteren Versionen nutzt, wie es z.B. auf Android der Fall ist – durchaus in der Jahre gekommen ist, wobei die aktuellen Versionen ja durchaus neues bringen. Mit Jave EE habe ich mich bis dato gar nicht auseinander gesetzt und kann entsprechend nichts dazu sagen. Das Konzept und die Nutzung von JNDI finde ich extrem gruselig und auch wenn man hier und da einen Sinn erkennt, so ist das Ganze etwas wo ich einen gigantischen bogen drum machen würde.
Die JVM als Basis ist meiner Meinung nach gut, wenn auch etwas Speicherhungrig, denn auf diesem Weg gibt es nun mal die Möglichkeit Dinge auf diversen Plattformen laufen lassen zu können. Mittlerweile gibt es viele weitere Ansätze um dies umzusetzen und ich will hier nicht drüber diskutieren was besser oder schlechter ist, es geht nur darum das die JVM an sich nicht der Untergang der Softwarewelt ist.
Die Strukturen in Bezug auf Frameworks in der Java Welt finde ich oft nicht gut, da vieles extrem groß gewachsen ist, um nicht zu sagen überladen. Doch ist dies ausschließlich ein Problem von Java? Nicht wirklich, diverse Sprachen haben gigantische Frameworks und auch wenn es modulare Ansätze gibt, so werden gerne Templates genutzt die gefühlte 350 Komponente zusammenkleben und das Ergebnis ist dasselbe.
Damit wäre ich dann auch bei meinem Kernpunkt, den ich schon sehr oft im Blog thematisiert habe. Egal ob eine Technik oder Sprache neu oder alt ist, egal ob man ein Framework schon mal genutzt hat oder etwas neues lernt, die richtigen Sprachen / Frameworks / Tools für die jeweiligen Aufgaben zu wählen ist unabdingbar für gute Software.
Dabei gibt es Situationen wo Java durchaus gut passt und andere wiederum wo man lieber andere Lösungen nutzen sollte. Gigantische Frameworks sind, unabhängig von der genutzten Sprache, meiner Meinung nach meist zu viel des Guten und meistens sollte man vielleicht kleiner starten und dann ausbauen, statt gigantische Codehaufen zu haben, die man am Ende gar nicht nutzt.
Es gibt viele Gründe warum man Sprachen und Frameworks verteufeln kann, aber meistens sollte man mit so etwas vorsichtig sein. Selbst Dinge die in die Jahre gekommen sind, haben oft durchaus einen Sinn und Zweck. Wenn man aber natürlich wütend durchs Internet stapfen will, so kann man dies auch tun. Dabei ist es egal ob es gegen eine Sprache wie z.B. Java geht oder die müßigen AMD vs. Intel Diskussionen und alle die anderen Beispiele die ich nun bringen könnte. Nutzt was zu euren Anforderungen passt und macht das beste draus. Am Ende ist es wichtig passende Dinge zu nutzen, denn nur so kann man darauf bestmöglich aufbauen. Ich beziehe mich hier übrigens nicht auf sinnvolle und fundierte Diskussionen zu Vor- und Nachteilen von etwaigen Lösungen, sondern auf Beiträge mit geringem bis keinem Inhalt, abseits einer Priese Wut.
Ich schreibe meine Java Software in Kotlin, mit minimalen Abhängigkeiten und lasse selbige dann auf der JVM laufen. Damit fahre ich gut, kann auf moderne und zugleich etablierte Strukturen setzen. Doch neben Java basierter Software schreibe ich eben auch Code in Dart + Flutter oder aber nutze Markdown und Hugo für meine statischen Webseiten. Unterschiedliche Techniken für unterschiedliche Aufgaben eben.