Weshalb Kotlin besser als Java ist

  • In diesem Post würde ich euch gerne einige Vorteile von Kotlin zeigen, welche das Entwickeln von Anwendungen (z.B Plugins) erheblich vereinfachen.

    Anmerkung: Kotlin wird in Bytecode für die JVM übersetzt, weshalb Kotlin 100% kompatibel mit Java ist (man muss die Kotlin standart Library in seinem Projekt haben).

    Somit kann man Kotlin Klassen von Java aus aufrufen, und andersrum natürlich auch. Kommen wir nun zu einigen Vorteilen von Kotlin, die mich persönlich sehr begeistern:


    Extension Functions:

    Mit den sogenannten "Extension Functions" kann man bereits vorhandene Klassen erweitern.

    Beispiel: Einen Spieler begrüßen


    Java:

    Java
    public void onEvent(final PlayerJoinEvent event) {
    final Player player = event.getPlayer();
    greetPlayer(player);
    }
    private void greetPlayer(final Player player) {
    player.sendMessage("Welcome to our server!");
    }

    Kotlin:

    Java
    fun onEvent(event: PlayerJoinEvent) {
    val player = event.getPlayer()
    player.greetPlayer()
    }
    fun Player.greetPlayer() = this.sendMessage("Welcome to our server!")


    Null Safety:

    Wenn man Kotlin richtig anwendet, ist es ziemlich schwer eine NullPointer Exception zu bekommen.

    Die Anweisung hinter dem sogenannten "Safe Call Operator" wird nur ausgeführt, wenn das Objekt nicht null ist.

    Beispiel: Den Namen eines ItemStacks ausgeben, wenn es nicht null ist


    Java:

    Java
    System.out.println(itemStack != null
    && itemStack.getItemMeta() != null
    && itemStack.getItemMeta().getDisplayName() != null
    ? itemStack.getItemMeta().getDisplayName() : "Name is null");

    Kotlin:

    Java
    println(itemStack?.itemMeta?.displayName ?: "Name is null")


    Smart Casting

    In Kotlin wird außerdem das Casting deutlich vereinfacht. Nach einer Typabfrage muss das Objekt nicht mehr gecastet werden.

    Beispiel: Ein Entity zu Player casten


    Java:

    Java
    final Entity entity = someEntity;
    if (entity instanceof Player) {
    ((Player) entity).doSomething()
    }

    Kotlin:

    Java
    val entity: Entity
    if (entity is Player) {
    entity.doSomething //muss nicht zu player gecastet werden
    }


    Singletons

    In Kotlin ist es viel einfacher ein Singleton zu erstellen als in Java.


    Java:


    Kotlin:

    Java
    object SomeSingleton {
    fun getName(): String = "NAME"
    }
    fun accessSingleton() {
    val name = SomeSingleton.getName()
    }


    String Templates

    Anstatt mehrere Strings aneinanderzuhängen, kann man in Kotlin die sogenannten String Templates benutzen.

    Beispiel: Einen Namen in einen String einbauen


    Java:

    Java
    final String name = "Tom";
    System.out.println("Name = " + name + "!");
    //Alternative
    System.out.println(String.format("Name = %s!", name));


    Kotlin:

    Java
    val name = "Tom"
    println("Name = $name!")


    Infix Functions:

    Java
    infix fun String.append(str: String): String = this.plus(str)
    fun main() = println("1" append "2" append "3" append "Test")


    Kotlin bietet natürlich noch tausende andere Verbesserungen, welche ich in diesem Post nicht alle aufzählen werde.

    Ich kann jedem nur empfehlen sich diese Sprache genauer anzuschauen!

    Hinweis: Die verwendeten Codebeispiele habe ich in einem normalen Texteditor erstellt, weshalb diese kleine Fehler beinhalten könnten. Bitte meldet diese, falls ihr welche findet. Danke!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!