Suche
Interview mit Jochen Kraushaar und Matthias Merdes

Java vs. Kotlin und Groovy: „Kotlin und Groovy bieten größere Ausdrucksmächtigkeit gegenüber Java“

Savvas Hajiraftis

© Shutterstock / Apostrophe

Die JVM ist ein großer Spielplatz, auf dem sich deutlich mehr Sprachen tummeln, als einzig und allein Java. Zwei bekannte Vertreter dieser JVM-Sprachen sind Groovy und Kotlin. Im Interview zur W-JAX 2018 klären unsere Speaker von der BridgingIT GmbH Jochen Kraushaar, Softwareentwickler und Consultant, und Matthias Merdes, Senior Consultant, über die Vor- bzw. Nachteile der Sprachen auf und zeigen die Unterschiede zwischen Kotlin und Groovy auf.

JAXenter: In eurer Session auf der W-JAX 2018 geht es um Groovy und Kotlin – beides Programmiersprachen, die sich mit typischen Java-Problemen befassen und zeitlich mehr als 10 Jahre voneinander entfernt sind. Vielleicht zu Beginn die Frage: Welche Vor- bzw. Nachteile haben diese Sprachen im Vergleich zur „Muttersprache“ Java?

Jochen Kraushaar und Matthias Merdes: JetBrains hat beim Entwurf von Kotlin viele der alltäglichen Probleme der Java-Entwicklung adressiert. Ein gutes Beispiel hierfür sind die Null-Referenzen, die schon vom Compiler geprüft werden. Gleichzeitig wurden in Kotlin Best Practices aus Standardwerken der Software-Entwicklung übernommen, z.B. Designed Inheritance oder das Fehlen von Checked Exceptions. Kotlin ist zudem eine Sprache, die sich – im Gegensatz zum etwas schwerfälligen Java – sehr schnell weiterentwickelt und aktuelle Trends (z.B. Coroutines) implementiert.

In konservativen Unternehmen wird Java bevorzugt.

Dieser Vorteil ist zugleich auch der Nachteil von Kotlin: Meiner Erfahrung nach sind Stabilität und Herstellerunabhängigkeit bei der Wahl der Programmiersprache für viele Unternehmen wichtige Anforderungen. Daher existiert eine gewisse Skepsis gegenüber jungen und dynamisch wachsenden Programmiersprachen. Dieser Umstand könnte aber durch die bei der Microservice-Entwicklung propagierte (relativ) freie Technologiewahl abgemildert werden. Auch die stetig zunehmende Kotlin-Unterstützung im – sehr weit verbreiteten und in eher konservativen Organisationen voll akzeptierten – Spring-Framework kann hier hilfreich sein.

Groovy ist schon deutlich länger verfügbar und bewegt sich etwas langsamer. Dieser größeren Stabilität steht die Tatsache gegenüber, dass der Support von Groovy für statische Typisierung bzw. Kompilierung weniger bekannt ist. Groovy kann daher fälschlicherweise für eine reine Skriptsprache gehalten werden. Beide Sprachen bieten sicher den Vorteil größerer Ausdrucksmächtigkeit gegenüber Java; als Nachteil können Probleme bei der Wahrnehmung insbesondere in konservativeren Unternehmen genannt werden.

JAXenter: Gibt es Ähnlichkeiten bezüglich der Ansätze, mit denen die Programmiersprachen versuchen, Java-Probleme zu lösen? Welche Gemeinsamkeiten haben Groovy und Kotlin?

Jochen Kraushaar und Matthias Merdes: Ähnlichkeiten betreffen vor allem den grundlegenden Ansatz. Beide Sprachen versuchen ein „besseres“ Java zu sein, indem sie typische Probleme aus dem Alltag der Entwickler adressieren. Beide Programmiersprachen ermöglichen deutlich kompakteren Code und bringen direkte Unterstützung für ausdrucksmächtige Sprachkonstrukte mit – insbesondere im Bereich Wiederverwendung und Erweiterbarkeit.

API Summit 2018
Christian Schwendtner

GraphQL – A query language for your API

mit Christian Schwendtner (PROGRAMMIERFABRIK)

JAXenter: In welchen Punkten unterscheiden sich Groovy und Kotlin am stärksten voneinander? Was sind also die signifikanten Unterschiede, die die Programmiersprachen ausmachen?

Jochen Kraushaar und Matthias Merdes: Während Groovy sich stärker an der Java-Syntax orientiert, weist Kotlin Ähnlichkeit zu TypeScript auf. JetBrains arbeitet zudem daran, Kotlin nach JavaScript und nativen Code zu kompilieren und sich damit von der JVM zu lösen. Groovy unterstützt keine derartige Cross-Compilation, bietet dem (mutigen) Entwickler jedoch weitgehende Möglichkeiten im Bereich der Metaprogrammierung und dynamischen Programmierung.

Man beobachtet zudem eine unterschiedliche Herangehensweise an Spracherweiterungen. So sind viele grundlegende Features in Groovy über spezielle Annotationen (zur Kompilierzeit ausgewertete AST-Transformationen) implementiert, in Kotlin dagegen direkt über die Grammatik der Sprache. Damit können in Groovy Sprach-Features leichter über die Groovy-Standardbibliothek eingeführt oder auch wieder abgekündigt werden, während in Kotlin der Compiler selbst betroffen ist. Beides bietet Vor- und Nachteile.

JAXenter: Im Gegensatz zu Groovy, das mehr oder minder Open Source entwickelt wird, steht hinter Kotlin ein kommerzieller Entwickler (JetBrains) – seht ihr das als Vor- oder Nachteil?

Jochen Kraushaar und Matthias Merdes: Als wir zum ersten Mal von Kotlin gehört haben, waren wir beide skeptisch. Jede Software-Komponente, die von einem einzigen Hersteller entwickelt wird, birgt potenziell die Gefahr, dass diese Komponente morgen nicht mehr weiterentwickelt oder nur noch unter horrenden Kosten einsetzbar ist. Soll man auf dieser Basis wirklich eigene Software entwickeln? Die Tatsache, dass der komplette Kotlin-Quellcode unter der Apache License 2.0 auf GitHub bereitgestellt wird und Open Source ist, mildert diese Gefahr aber.

Mit Groovy und Kotlin können sich Entwickler viel Boilerplate-Code sparen.

Mit der Kotlin Foundation wurde zudem erst vor kurzem von JetBrains und Google eine Organisation geschaffen, die sicherstellen soll, dass Kotlin freie Software bleibt. Wir sehen es daher durchaus als Vorteil, wenn mit JetBrains eine aktive treibende Kraft hinter dem Projekt Kotlin steht. Hinzu kommt, dass JetBrains durch ihre weit verbreitete IDE in vielen Unternehmen bereits präsent ist, was helfen kann, Berührungsängste abzubauen. Die Entwicklung von Groovy ist vor einigen Jahren auf die Apache Sofware Foundation übergegangen. Allein diese organisatorische Veränderung innerhalb der Open-Source-Welt hat damals zu einem deutlichen Anstieg der Downloadzahlen geführt.

JAXenter: Was ist die Kernbotschaft eurer Session, die jeder mit nach Hause nehmen sollte?

Jochen Kraushaar und Matthias Merdes: Manchmal lohnt der Blick über den Tellerrand der Java-Welt. Mit Groovy und Kotlin gibt es zwei Sprachen, die dem Entwickler viel Arbeit abnehmen können, aber weiterhin auf der vielfach ausgereiften und optimierten JVM ausgeführt werden. Programmierer ersparen sich viel Boilerplate-Code und manche umständlichen Konstrukte. Das macht mehr Spaß und erhöht auch die Lesbarkeit und Wartbarkeit des Codes. Damit profitieren potentiell sowohl Entwickler als auch Projektsponsoren auf der Managementseite. Wer vor dem noch jungen Kotlin zurückschreckt, findet sich vielleicht bei Groovy besser aufgehoben.

JAXenter: Vielen Dank für dieses Interview!

Jochen Kraushaar arbeitet für die BridgingIT GmbH als Softwareentwickler und Consultant. Seine Schwerpunkte liegen auf Softwarearchitektur, Qualitätssicherung und Build-Prozesse. In seiner Freizeit beschäftigt er sich mit aktuellen Trends im Java-Umfeld.

 

Matthias Merdes ist Senior Consultant bei der BridgingIT GmbH und Mitglied des JUnit5-Teams. Er befasst sich seit JDK 1.1 mit Java-Technologien im Backend-Bereich sowie mit Reverse-Engineering-Themen. Neben Testautomatisierung von Unit- bis Lasttests interessieren ihn Groovy, Spring und alles andere, was Enterprise und Cloud Development einfacher, eleganter und effizienter macht.
Geschrieben von
Savvas Hajiraftis
Savvas Hajiraftis
Savvas Dimitrios Hajiraftis ist seit November 2017 Teil der JAXenter-Redaktion und studiert Lehramt an der Technischen Universität Darmstadt.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: