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

Groovy: Das bessere Kotlin :-)

  1. Thema

Neues Thema Ansicht wechseln


  1. 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 ;-)

  1. Thema

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. Hays AG, München
  2. AVL List GmbH, Graz (Österreich)
  3. Reply AG, Köln, Berlin
  4. Der Polizeipräsident in Berlin, Berlin

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. 999€ (mit Rabattcode "POWERSPRING21" - Bestpreis)
  2. 1.829€ (Bestpreis)
  3. (u. a. WD Elements 10TB für 171,99€, Asus Chromebook C423 14 Zoll für 329€, Lenovo Tab M10...


Haben wir etwas übersehen?

E-Mail an news@golem.de


Börse: Was zur Hölle ist ein SPAC?
Börse
Was zur Hölle ist ein SPAC?

SPACs sind die neue Modewelle an der Börse: Firmen, die es eigentlich nicht könnten, gehen unter dem Mantel einer anderen Firma an die Börse. Golem.de hat unter den Mantel geschaut.
Eine Analyse von Achim Sawall

  1. Wallstreetbets Trade Republic entschuldigt sich für Probleme mit Gamestop
  2. Tokyo Stock Exchange Hardware-Ausfall legte Tokioter Börse lahm

Razer Huntsman V2 Analog im Test: Die Gamepad-Tastatur
Razer Huntsman V2 Analog im Test
Die Gamepad-Tastatur

Spielen mit Gamepad oder Keyboard - warum eigentlich nicht mit beidem? Mit Razers neuer Tastatur legen wir Analogsticks auf WSAD.
Ein Test von Oliver Nickel

  1. SPC Gear Mechanische TKL-Tastatur mit RGB kostet 55 Euro
  2. Launch Neue Details zur Open-Source-Tastatur von System76
  3. Youtube Elektroschock-Tastatur bestraft schlampiges Tippen

No-Regret-Infrastruktur: Wasserstoffnetze für Stahl und Chemie
No-Regret-Infrastruktur
Wasserstoffnetze für Stahl und Chemie

Die Organisation Agora Energiewende schlägt vor, sich beim Bau von Wasserstoffleitungen und Speichern zunächst auf wenige Regionen zu konzentrieren.
Von Hanno Böck

  1. Brennstoffzellenfahrzeug Fraunhofer IFAM entwickelt wasserstoffspeichernde Paste
  2. Wasserstoff Lavo entwickelt Wasserstoffspeicher fürs Eigenheim
  3. Energiewende EWE baut einen Wasserstoffspeicher bei Berlin