1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Kotlin: Das bessere Java

Groovy: Das bessere Kotlin :-)

  1. Beitrag
  1. Thema

Groovy: Das bessere Kotlin :-)

Autor: dark_matter 15.11.20 - 19:22

Kotlin wird momentan massiv gepushed, deshalb hier eine kurze Darstellung der verwandten Sprache Groovy, der momentanigen #2 unter den JVM Sprachen. Vorneweg: Ich als Groovy Entwickler würde Kotlin gerne mögen, Jetbrains ist eine gute Firma und IntelliJ (haben wir kommerziell im Einsatz) ist eine fantastische IDE (mit nach wie vor dem besten Grooyv Support) - aber es sind genau die Abweichungen die ich leider nicht gelungen finde. Sollte ich eines Tages gezwungen sein, in Kotlin zu entwickeln, wäre das für mich leider ein Rückschritt (Gründe siehe unten) :-/

# Kontext: Groovy ist im TIOBE Index gerade von 14 auf 11 vorgerückt (die 10 Sprachen vor Groovy sind C, Python, Java, C++, C#, VB, JS, PHP, R, SQL - also die richtigen "Heavyweights der Programmiersprachenwelt"), mit einem 1,51% Rating (danach kommt Scala mit 0,53% auf 29 und Kotlin mit 0,38% auf 36).

# Groovy ist beliebig mischbar als dynamische wie auch statisch kompilierte Sprache verwendbar (wobei auch im statischen Fall Multimethoden unterstützt werden) (@CompileDynamic/@CompileStatic annotation)

# Groovy hat alle modernen Annehmlichkeiten, wie Closures (neben Java Lambdas; capturen automatisch die Variablen/Fields im Kontext), Autoproperties, optionale Semicolons am Zeilenende, otionales return Statementm, Multilinestrings, powerful Stringinterpolation "x=$x, x plus y = ${x+y}, x>0?: ${x>0 ? "ja" : "nein"}", Operator Regexsupport (mit spezieller Stringsyntax ( /[^'"]+/ )), etc

# Es unterstützt Operator Overloading (aber imho sinnvollerweise nicht das Hinzufügen eigener Operatoren, das leider zu sehr unlesbarem Code führen kann)

# Es fügt eigene Operatoren wie Elvis ( def x = null; return x ?: defaultVal), oder null-safe-Chaining ( a?.b?.c?.d // null sobald ein Chain Member null ist ) hinzu

# Groovy hat Literal Konstrukte für Listen und Maps ([x,y,z] bzw [a:x, b:y, c:z]), Kotlin leider nicht

# Groovys Java Sourcecodekompatibilität ist wesentlich höher als die von Kotlin (Das liegt primär an Kotlins Entscheidung, die JavaScript Position von Typen nach dem Namen zu verwenden - macht bei einer hochdynamischen Sprache wie JS vielleicht Sinn, bei einer statischen imho nicht), Java Code ist in 99,999% der Fälle auch identisch lauffähiger Groovy Code.
Die Aufrechterhaltung dieser Kompatibilität wird auch weiterhin aktiv angestrebt.

# Groovy ist genauso Java Library (i.e. JAR) kompatibel, verwendet die Standard-Java-Collectiontypen und unterstützt Cross Compilation wie Kotlin

# Kotlin setzt auf Keywords für Spracherweiterungen, Groovy auf Annotations, was wegen der möglichen Annotationsparameter und des Aufbrechens der Annotationen in feingranulare Unter-Annotationen wesentlich flexibler ist (Bsp: @Canoncical auf Klasse gibt Standardimplementierungen für Konstruktoren, toString, etc; man kann aber auch e.g. @ToString verwenden, das nur toString auto-implementiert)

# Dadurch, daß man eine Sprache nicht mit Keywords überladen will, bietet Groovy durch das Setzen auf Annotations wesentlich mehr praktische Codegenerierungsautomatismen (AST-Transformationen) als Kotlin; weitere Beispiele sind @InheritConstructors, das während der Kompilierung automatisch alle Konstruktoren der Basisklasse zu der annotierten Klasse hinzufügt (und ohne das ich nicht mehr entwickeln möchte), @Synchronized (wesentlich besser als synchronized Keyword), @Lazy (lazy field initialization, keine (static)-ctor Initialisierung mehr), oder @Immutable (immutable Klasse).

# Auch dynamisches Groovy ist in den meisten Fällen so schnell wie Java (Note: Groovy wird in allen Fällen zu JVM Bytecode kompiliert)

# Kotlin hat sich von Groovy u.a. die sehr praktische Syntaxvariante, daß das letzte Closure Argument einer Methode außerhalb der Parameterklammern geschrieben werden kann abgeschaut; e.g.:
def buttonWithHandler = g.createButton("my groovy button") { p -> /* handle click event params here */ }

# Groovy kann sowohl als vollwertige Programmiersprache, neben Java, als Skriptsprache, oder zur DSL Erstellung verwendet werden

# uswusf - muß jetz mal AC Valhalla spielen ;-)


Neues Thema Ansicht wechseln


Thema
 

Groovy: Das bessere Kotlin :-)

dark_matter | 15.11.20 - 19:22

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. abilex GmbH, Stuttgart
  2. KRATZER AUTOMATION AG, Unterschleißheim
  3. ALD AutoLeasing D GmbH, Hamburg
  4. Bundeskriminalamt, Wiesbaden

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Spiele-Angebote
  1. (u. a. Anno 2205 Ultimate Edition für 11,99€, Rayman Legends für 4,99€, The Crew 2 - Gold...
  2. 26,99€
  3. 20,49€


Haben wir etwas übersehen?

E-Mail an news@golem.de