[{"data":1,"prerenderedAt":43},["ShallowReactive",2],{"site-settings-batix":3,"batix-blog-groovy-4-oder-kotlin-warum-der-sprachwechsel-beim-upgrade-weniger-kostet-als-gedacht":22,"page-seo-\u002Fblog\u002Fgroovy-4-oder-kotlin-warum-der-sprachwechsel-beim-upgrade-weniger-kostet-als-gedacht":12},{"id":4,"user_created":5,"date_created":6,"user_updated":7,"date_updated":8,"site_name":9,"site_url":10,"tagline":11,"default_og_image":12,"favicon":12,"organization_legal_name":13,"organization_email":14,"organization_phone":15,"organization_address_street":16,"organization_address_zip":17,"organization_address_city":18,"organization_address_country":19,"social_linkedin":20,"social_xing":21,"social_youtube":21,"social_instagram":21,"google_site_verification":12},"368daec2-c06c-4d64-bba7-feb859b94322","4686f9ba-fccc-4a50-9410-b80ae06ef0eb","2026-05-07T15:29:22.000Z","7d85c00d-d619-4d10-86a2-a469f8283bfc","2026-08-12T12:11:25.000Z","Batix","https:\u002F\u002Fbatix.swiss","Ihr Partner für IT-Beratung, Lösungen und massgeschneiderte Softwareentwicklung in der Schweiz.",null,"Batix Schweiz AG","info@batix.ch","+41 44 545 32 70","Grindlenstrasse 3","8954","Geroldswil","Schweiz","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fbatix\u002F","",{"id":23,"title":24,"slug":25,"subtitle":26,"category":27,"cover_image":28,"lead_text":29,"definition":30,"content":31,"graphic":32,"graphic_caption":33,"faqs":12,"cta_text":34,"cta_label":35,"cta_url":36,"author":37,"published_at":38,"date_updated":39,"meta_title":40,"meta_description":41,"og_title":12,"og_description":12,"og_image":12,"canonical_url":12,"robots":42},"66831510-1225-4a86-9cf7-9bea29bb80ff","Groovy 4 oder Kotlin: Warum der Sprachwechsel beim Upgrade weniger kostet als gedacht","groovy-4-oder-kotlin-warum-der-sprachwechsel-beim-upgrade-weniger-kostet-als-gedacht","Ein Plattform-Upgrade zwingt dazu, alten Groovy-Code anzufassen. Wann sich dabei der Umstieg auf Kotlin lohnt, zeigt ein Beispiel aus einem laufenden Projekt.","Development","f037657c-bb00-4790-8acc-4c4db9a06542","Ein B2B-Portal läuft seit 2017 produktiv und ist über die Jahre organisch gewachsen: Bestellprozess, Freigabeablauf, Verwaltungswerkzeuge, zeitgesteuerte Abläufe, dazu Anbindungen an Verzeichnisdienst, Dateispeicher und Mailversand. Gebaut ist es auf einem Java-basierten CMS, das weniger ein Redaktionssystem als ein Anwendungsbaukasten ist: Groovy ist darin die eingebaute Skriptsprache, Erweiterungen laufen als Plugins. Der Code besteht aus rund 33'000 Zeilen Groovy in gut 240 Dateien und etwa 29'000 Zeilen Seitenvorlagen mit plattformeigenen Bausteinen.\nDaneben gibt es bereits einen modernen Teil: sechs Plugins in Kotlin mit rund 30'000 Zeilen und ein Frontend in Vue und TypeScript. Alter und neuer Stand halten sich ungefähr die Waage. Nun steht das nächste Upgrade der Plattform an, und mit ihm eine Frage, die sich nicht vermeiden lässt: Hebt man den Groovy-Code auf Groovy 4 an, oder schreibt man ihn bei dieser Gelegenheit in Kotlin neu?","Bei einer Sprachmigration von Groovy zu Kotlin wird bestehender Groovy-Code durch gleichwertigen Kotlin-Code ersetzt, statt ihn nur auf eine neuere Groovy-Version anzuheben.","\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Ein Plugin pro Funktionsbereich&nbsp;\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Ab der n&auml;chsten Versionsstufe springt die Plattform von Java 8 auf Java 17 beziehungsweise 21 und von Groovy 2.4 auf Groovy 4. Sp&auml;ter kommt der Wechsel von javax auf jakarta dazu. Der alte Code muss also ohnehin angefasst werden, egal wie man sich entscheidet. Damit lautet die Frage nicht &laquo;Kotlin oder nichts&raquo;, sondern: anheben oder neu schreiben.\u003Cbr>F&uuml;r Groovy sprechen echte Gr&uuml;nde. Der Aufwand ist zun&auml;chst geringer, weil die Struktur des Codes bleibt und die Fachlogik angepasst statt neu aufgebaut wird. Groovy ist ausserdem die eingebaute Skriptsprache der Plattform, Aktionen und Vorlagen funktionieren damit ohne Umweg, und man kommt schneller zu einem ersten lauff&auml;higen Stand. F&uuml;r ein System, das in zwei Jahren abgel&ouml;st wird oder kaum noch &Auml;nderungen braucht, sind das gute Gr&uuml;nde.\u003C\u002Fp>\n\u003Cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\">\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">So rechnet sich der Mehraufwand\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\">Pro Funktion lassen sich f&uuml;nf Bestandteile sch&auml;tzen: die Analyse (was geh&ouml;rt dazu, worauf baut sie auf, wer nutzt sie), die Umsetzung, der Test, die Abnahme beim Kunden und Zuschl&auml;ge f&uuml;r Projektkoordination und Reserve. Ein Durchlauf aus Pr&uuml;fung und Korrektur bei der Abnahme dauert rund zwei Wochen.\u003Cbr>Der Mehraufwand f&uuml;r Kotlin entsteht fast ausschliesslich bei der Umsetzung. Analyse, Test und Abnahme fallen auf beiden Wegen an. Einarbeitung ist kein nennenswerter Posten, weil Kotlin im selben System bereits in sechs Plugins l&auml;uft. Auch beim Tooling gibt es kaum Unterschiede, denn die Plugins m&uuml;ssen auf beiden Wegen gegen die neue Plattformversion neu gebaut werden.\u003Cbr>Beim ersten Vorkonzept lag der gesch&auml;tzte Mehraufwand f&uuml;r Kotlin deutlich h&ouml;her als heute. Damals war der Groovy-Weg noch nicht genau bekannt. Die Bestandsaufnahme im Code und in der Datenbank hat gezeigt, dass er mehr Arbeit verlangt als angenommen. F&uuml;r die tragenden Teile gibt es keine automatisierten Tests, die m&uuml;ssen auf beiden Wegen erst entstehen. Die Pflichtarbeiten des Herstellers fallen ebenfalls auf beiden Wegen an: Groovy 4, neuer Namensraum, Umstellung der Dateien auf UTF-8, neuer Texteditor, neuer Suchindex.\u003Cbr>Dazu kommt, dass Groovy viele Fehler erst zur Laufzeit meldet. Nach dem Sprung auf Groovy 4 muss deshalb jede Funktion vollst&auml;ndig gepr&uuml;ft werden, nicht nur die ge&auml;nderten. Die Bestandsaufnahme hat ausserdem Schw&auml;chen im alten Code aufgedeckt, etwa Fehler, die stillschweigend passieren, ohne dass jemand eine Meldung erh&auml;lt. Auch die m&uuml;ssen auf beiden Wegen behoben werden. Gleichzeitig ist der Teil, der &uuml;berhaupt neu geschrieben werden muss, kleiner geworden: Mehrere alte Funktionen werden nachweislich nicht mehr genutzt und entfallen, andere sind bereits in Kotlin umgesetzt\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">.\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cem>Sascha, Softwareentwickler und technischer Lead bei Batix:\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cem>&laquo;Der Mehraufwand pro Zeile Kotlin ist nicht kleiner geworden. Kleiner wird sein Anteil am Ganzen, weil der Sockel, den beide Wege gleich viel kostet, deutlich gewachsen ist.&raquo;\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Direkt umsteigen statt Zwischenschritt\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Ein Zwischenschritt auf die n&auml;chste Version der heutigen Linie h&auml;tte einen eigenen Testzyklus beim Kunden gekostet. Er h&auml;tte ausserdem auf eine Version gef&uuml;hrt, die selbst keine Updates mehr erh&auml;lt. Der eigentliche Umbruch mit neuer Java-Version, Groovy 4 und dem Wechsel auf Docker kommt danach ohnehin. Was ein Zwischenschritt gebracht h&auml;tte, etwa ein Pr&uuml;fwerkzeug f&uuml;r den Namensraum oder einen Vorabtest mit Groovy 4, l&auml;sst sich genauso auf der neuen Umgebung erreichen.\u003Cbr>Deshalb wird das Zielsystem auf einem neuen Server parallel aufgebaut, Funktion f&uuml;r Funktion und mit Pr&uuml;fung nach jedem Schritt. Die Produktion l&auml;uft unterdessen unver&auml;ndert weiter, umgeschaltet wird erst nach der Abnahme.\u003Cbr>Das Vorgehen hat einen Preis, und der geh&ouml;rt dazu. Die Produktion bleibt l&auml;nger auf dem alten Stand und hat bis zur Umschaltung dessen bekannte Schw&auml;chen. Dem begegnet man mit gezielten Sofortmassnahmen, statt den Altbestand einmal zwischendurch anzuheben. Am Ende steht eine grosse Umschaltung, die sich mit einer Generalprobe und einer R&uuml;ckfallbereitschaft entsch&auml;rfen l&auml;sst: Die alte Umgebung bleibt lauff&auml;hig, bis auf der neuen alle Abl&auml;ufe einmal erfolgreich gelaufen sind und der Kunde abgenommen hat. Und zwei Umgebungen kosten doppelt, allerdings nur bis zur Umschaltung.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">F&uuml;nf Kriterien f&uuml;r die Entscheidung\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Aus dem Beispiel lassen sich f&uuml;nf Fragen ableiten, die ein Entscheider vor der Wahl kl&auml;ren sollte.\u003Cbr>Erstens: Muss der Code ohnehin angefasst werden? Steht ein Plattformwechsel an, schrumpft der Unterschied zwischen Anheben und Neuschreiben deutlich.\u003Cbr>Zweitens: Gibt es Tests? Ohne Testnetz ist es ein grosser Vorteil, wenn der Compiler Fehler findet, bevor sie im Betrieb auftauchen.\u003Cbr>Drittens: Wie lange lebt das System noch, und wie oft wird es ge&auml;ndert? Der Mehraufwand f&auml;llt einmal an, der Nutzen bei jedem Change Request erneut, weil &Auml;nderungen im neuen Code schneller und sicherer umzusetzen sind.\u003Cbr>Viertens: Wohin entwickelt sich die Plattform? Der Hersteller der Plattform empfiehlt Kotlin f&uuml;r Plugins und k&uuml;ndigt an, alte Bausteine in der n&auml;chsten Hauptversion zu entfernen. Wer auf Groovy bleibt, riskiert einen zweiten Umbau.\u003Cbr>F&uuml;nftens: Wo liegt das Wissen? Gewachsener Groovy-Code mit plattformeigenen Bausteinen ist Spezialwissen weniger Personen, Kotlin ist verbreitet.\u003C\u002Fp>\n\u003Cp>\u003Cem>Sascha zur Gewichtung:\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp class=\"Normal tm5 tm6\">\u003Cem>\u003Cspan class=\"tm8\">&laquo;Wenn der Code ohnehin angefasst werden muss und das System noch Jahre weiterentwickelt wird, ist Kotlin die bessere Wahl. Das Anheben auf Groovy ist sinnvoll, wenn ein System absehbar abgel&ouml;st wird oder kaum noch &Auml;nderungen braucht. Dann z&auml;hlt der geringere Startaufwand mehr als die langfristige Wartbarkeit.&raquo;\u003C\u002Fspan>\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Fazit\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Wer vor einem Plattformsprung steht, sollte zuerst kl&auml;ren, was ohnehin angefasst werden muss, und erst danach &uuml;ber die Sprache entscheiden. Der Unterschied zwischen den Wegen ist dann oft kleiner als der Sockel, den beide gemeinsam haben, und dieser Sockel l&auml;sst sich mit einer ehrlichen Bestandsaufnahme beziffern, bevor die Entscheidung f&auml;llt.\u003C\u002Fp>\n\u003Cp>&nbsp;\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"font-size: 11.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Arial; color: #2e5b7f; mso-ansi-language: DE-CH; mso-fareast-language: DE-CH; mso-bidi-language: AR-SA;\">H&auml;ufig gestellte Fragen\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp class=\"MsoNormal\" style=\"margin-bottom: 2.0pt;\">\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Muss man beim Plattform-Upgrade von Groovy auf Kotlin wechseln?\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp class=\"MsoNormal\" style=\"margin-bottom: 2.0pt;\">Nein. Das Upgrade erzwingt den Sprung auf eine neue Java- und Groovy-Version, nicht den Wechsel der Sprache. Der alte Code muss in jedem Fall angefasst werden, ob er danach in Groovy 4 oder in Kotlin vorliegt, ist eine Entscheidung.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Wann ist es sinnvoll, bei Groovy zu bleiben?\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Wenn ein System absehbar abgel&ouml;st wird oder kaum noch &Auml;nderungen braucht. Dann z&auml;hlt der geringere Startaufwand mehr als die langfristige Wartbarkeit.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Warum f&auml;llt der Mehraufwand f&uuml;r Kotlin kleiner aus als zuerst gedacht?\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Weil der Sockel aus Analyse, Test, Abnahme und Pflichtarbeiten auf beiden Wegen anf&auml;llt und gr&ouml;sser ist als angenommen. Der Mehraufwand pro Zeile Kotlin bleibt gleich, sein Anteil am Ganzen sinkt.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Braucht es einen Zwischenschritt auf eine Zwischenversion der Plattform?\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Im Beispiel nicht. Ein Zwischenschritt h&auml;tte einen eigenen Testzyklus beim Kunden gekostet und auf eine Version gef&uuml;hrt, die keine Updates mehr erh&auml;lt. Ob das bei einem anderen System gleich gilt, h&auml;ngt vom Einzelfall ab.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cspan style=\"color: #2e5b7f;\">Wie l&auml;sst sich das Risiko einer grossen Umschaltung senken?\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Mit einer Generalprobe und einer R&uuml;ckfallbereitschaft. Die alte Umgebung bleibt lauff&auml;hig, bis auf der neuen alle Abl&auml;ufe einmal erfolgreich gelaufen sind und die Abnahme erfolgt ist.\u003C\u002Fp>","c805fabc-19ae-4178-b596-73684fc50171","Der Sockel aus Analyse, Test, Abnahme und Pflichtarbeiten fällt auf beiden Wegen an, nur die Umsetzung kostet in Kotlin mehr (schematisch)","Wer ein bestehendes System auf eine neue Plattformversion heben will und abwägt, ob Groovy-Code angehoben oder neu geschrieben werden soll, findet in der individuellen Softwareentwicklung der Batix den passenden Ansprechpartner.","Kontakt aufnehmen","\u002Fcontact","Sascha Wechsler","2026-10-30T10:22:00.000Z","2026-10-30T10:22:17.000Z","Groovy zu Kotlin migrieren: Wann es lohnt","Sie erfahren, wie sich der Mehraufwand eines Wechsels von Groovy zu Kotlin schätzen lässt und nach welchen fünf Kriterien Sie entscheiden können.","index,follow",1793357070030]