Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

Ratgeber

Keine Lust mehr auf Java? Dann wechsle jetzt zu Kotlin

© ronnarong - Adobe Stock

Java und Javascript sind nicht die beliebtesten Sprachen. Du kannst aber auch einfach zur Programmiersprache Kotlin wechseln. Wir vergleichen die Sprachen miteinander. Dein Einstieg wird so kinderleicht.

Kotlin gehört zu den beliebtesten Programmiersprachen und das aus guten Gründen. Wenn du dich noch mit Java oder Javascript herumschlägst, solltest du dir Kotlin anschauen. Warum? Das zeigen dir die folgenden Syntax-Vergleiche. Du erfährst nicht nur, was Kotlin besser macht, sondern steigst auch leichter in die Jetbrains-Sprache ein.

Passend dazu und was Javascript damit zu tun hat: Deswegen ist Kotlin so unfassbar beliebt

Grundlegende Syntax

Bevor wir uns komplexere Beispiele angucken, werfen wir den ersten Blick auf die grundlegende Syntax. Im Beispiel-Code fällt bereits im Kleinen auf, dass Kotlin meistens mit weniger auskommt als äquivalenter Java-Code. Zum Beispiel ist das Semikolon optional – kann aber auch hingeschrieben werden, falls man sich daran gewöhnt hat. Okay, ein Zeichen verkürzt den Code nicht entscheidend. Deswegen schauen wir uns ein paar weitere Code-Schnipsel an. Hier wurden bewusst einige Besonderheiten eingebaut, damit ihr bereits einige Kniffe der Sprache lernt.

Funktionen erstellen

Starten wir mit der Definition einer neuen Funktion mit und ohne Rückgabewert. Die Sichtbarkeit public ist bei Kotlin ein Standard-Wert und muss nicht explizit hingeschrieben werden.

Java

// Mit Rückgabewert
public int abs(int a) {
  if(a < 0) return -a;
  return a;
}
// Ohne Rückgabewert
private void printWithPrefix(String text) {
  System.out.println("Output: " + text);
}

Kotlin

// Mit Rückgabewert
fun abs(a: Int): Int {
  if(a < 0) return -a  
  return a
}
// Oder äquivalent und kürzer
fun abs(a: Int) = if (a < 0) -a else a

// Ohne Rückgabewert
private fun printWithPrefix(text: String) {
  println("Output: $text")
}

Variablendefinition

Bei der Definition einer neuen Variable muss ein var vor den Namen gesetzt werden, wenn sie veränderbar sein soll. Das Gegenstück ist val.

Java

// Beispiel 1
public int a = 0;
// Beispiel 2
private int a = 0;
// Beispiel 3
final public int a = 0;
// Beispiel 4
public int a;

Kotlin

// Beispiel 1 (Typ ist bei Bsp. 1-3 optional)
var a: Int = 0
var a = 0
// Beispiel 2
private var a: Int = 0
// Beispiel 3
val a: Int = 0
// Beispiel 4 (Hier muss der Typ angegeben werden)
var a: Int

Strings verketten

Bei dem oberen Beispiel der Funktion printWithPrefix wird deutlich, dass Strings mit Variablen in Kotlin deutlich leichter verknüpft werden können: Benötigt wird lediglich das Dollar-Zeichen. Kombinieren wir das jedoch mit geschweiften Klammern, können sogar ganze Funktionsaufrufe in einem String eingesetzt werden.

var age = 29
var s = "Ich bin $age Jahre alt"
println("${s.replace("bin", "war")}, bin jetzt aber ${++age} geworden.")
// Ausgabe: Ich war 29 Jahre alt, bin jetzt aber 30 geworden.

Kotlin macht Schluss mit Null-Pointer-Exceptions

In Java ist folgender Code ohne Compiler-Fehler möglich:

public String s = null;
System.out.println(s.length());

Doch beim Ausführen dieses Java-Programms gibt es natürlich die allseits gehasste Null-Pointer-Exception. Vor allem bei komplexeren Java-Programmen ist das ein echtes Problem. Solche Fehler treten dann alles andere als selten auf. Wenn der Entwickler nicht jeden Fall bedacht hat, wann eine Variable vielleicht doch eine Null-Referenz besitzen kann, dann werden solche Exceptions immer wieder auftreten. Kotlin löst das Problem ganz einfach: Variablen dürfen ohne weiteres keine Null-Referenz haben – außer ihr fügt ein Fragezeichen an.

var s: String = null // Compiler-Fehler
var sNull: String? = null // Ok
println(sNull.length) // Compiler-Fehler: sNull könnte Null sein

Bedeutet: Unter Kotlin können erstmal keine Null-Pointer-Exceptions mehr zur Laufzeit auftreten – außer ihr lasst sie explizit zu. Doch wie könnt ihr nun auf Null-Variablen zugreifen? Wir definieren uns folgende Variablen:

var s0: String? = null
var s1: String? = "Doch nicht null"

Dann kann wie folgt drauf zugegriffen werden:

// Möglichkeit 1
var s0Length: String? = null;
if(s0 != null) s0Length = s0.length
// Möglichkeit 2
// s1Length ist Null, wenn s1 == null, sonst wird hinterer Teil ausgeführt
var s1Length = s1?.length
// Das lässt sich beliebig lang fortsetzen
var example = s1?.elementAtOrNull(10)?.dec()
// Möglichkeit 3
var s0Length = s0!!.length // Wirft NullPointerException, wenn s0 == null

Ein kleiner Ausblick auf Lambda-Funktionen: Angenommen eine Funktion, die auf einer Variablen v aufgerufen wird, die auch Null sein kann, liefert ein Ergebnis zurück. Mit dem Ergebnis wollt ihr nun weiter arbeiten, vorausgesetzt v ist nicht Null. Dann hilft euch Kotlin mit let:

Java

public String s = "";
if(s != null) {
  if(s.isEmpty()) {
    System.out.println("String s ist nicht null aber leer.");
  }
}

Kotlin

var s: String? = ""
s?.let{ if(it.isEmpty()) println("String s ist nicht null aber leer.") }

Das Keyword „it“ ist nichts anderes als die Variable s, die let an den Scope zwischen den geschweiften Klammern weitergibt. Jedoch wird der Scope nur ausgeführt, wenn s nicht Null ist. Der Einsatz dieser Funktion wirkt hier zwar noch banal, in der Realität ist sie jedoch unfassbar nützlich und spart immer wieder Code ein.

Bitte beachte unsere Community-Richtlinien

20 Reaktionen
Jürgen Schulze

Wer Javascript und Java in einem Atemzug nennt, outed sich nicht gerade als Voll-Profi. Damit ist der ganze Artikel obsolet.

Antworten
Andreas Domin

Hallo Jürgen,

wer nicht in der Lage ist, den gesamten Artikel zu lesen bevor er hier ein Kommentar hinterlässt, ist auch nicht gerade hilfreich. Aber ich erkläre dir das gerne auch nochmal, was schon mindestens drei mal hier in den anderen Kommentaren steht.

Richtig, Java und Javascript haben nichts miteinander zu tun. Bedeutet nicht, dass man sie nicht in einem Atemzug nennen darf! Ganz weit oben im Artikel, ziemlich präsent ist auch ein von mir vor kurzer Zeit erschienener Artikel verlinkt, in der ich ziemlich genau erkläre, wofür Kotlin verwendet werden kann: nämlich entweder für Java (wird in Bytecode für die JVM übersetzt) oder Kotlin kann auch für Javascript genutzt werden, dann wird eben Javascript Code generiert.

Java und Javascript können ohne Problemen in einem Atemzug genannt werden, es kommt nur auf den Kontext an.

Grüße
Andreas

Antworten
matrixOnline

"Java und Javascript sind nicht die beliebtesten Sprachen."

... ernsthaft? Ohne JavaScript laufen derzeit fast keine Webseiten mehr! Wäre JS net so beliebt, wäre es wohl kaum so weit verbreitet oder?

Antworten
Andreas Domin

Hallo,

ja ernsthaft. Nur weil eine Sprache viel benutzt wird, bedeutet das nicht automatisch, dass sie beliebt ist. Es bedeutet in diesem Fall einfach, dass sie in diesem Bereich einfach bislang die beste Wahl ist. Auch wenn laut der aktuellen Stackoverflow-Umfrage Javascript noch ein gutes Stück über Java liegt, so ist Kotlin noch deutlich beliebter.

Schau doch mal gerne rein: https://insights.stackoverflow.com/survey/2018

Viele Grüße
Andreas

Antworten
Christian Kaps

Ich glaube meinen Vorrednern ging es auch darum, darauf hinzuweisen das Java und JavaScript rein Garnichts miteinander zu tun haben, außer vielleicht einen ähnlich klingenden Namen.

Java ist eine statisch typisierte Sprache welche in Zwischencode compiliert und von der JVM interpertiert wird. Javascript ist eine dynamisch typisierte Skriptsprache welche zur Laufzeit durch eine Browser-Engine interpretiert wird. Man kann JavaScript auch auf der JVM laufen lassen(Stichwort Rhino, Nashorn oder GraalVM) aber das ist nicht das standard Einsatzgebiet von JavaScript.

Wenn man Javascript in diesem Kontext erwähnt, dann hätte man die Möglichkeit nennen können Kotlin Code in JavaScript zu transpilieren.

https://kotlinlang.org/docs/tutorials/javascript/kotlin-to-javascript/kotlin-to-javascript.html

Als Scala Entwickler muss ich natürlich auch noch darauf hinweisen, dass Scala das auch alles kann.

http://www.lihaoyi.com/hands-on-scala-js/

Antworten
Andreas Domin

Hallo Christian,

ziemlich sicher ging es meinen Vorrednern nicht darum, sondern um die Formulierung (die ich inzwischen angepasst habe). Schön das du nochmal die Unterschiede von Java und Javascript nennst, darum geht es hier aber gar nicht. Selbstverständlich haben beide Sprachen nichts miteinander zu tun. Kotlin kann jedoch u.a. für Javascript und Java geschrieben werden. Deswegen habe ich beide genannt.

Ziemlich weit oben im Text ist auch der erste Artikel zum Thema Kotlin sehr präsent verlinkt. Dort habe ich das bereits einige Zeit vorher ziemlich genau erklärt ;)

Zu deinem Vergleich mit Scala: Es ist gut, dass Scala das kann, jedoch scheint die Sprache nicht so beliebt zu sein, wie Kotlin. (vgl. https://insights.stackoverflow.com/survey/2018). Davon abgesehen geht es in diesem Artikel ja nicht darum, irgendwelche alternative Java oder JS-Sprachen aufzuzählen, sondern einen Einstieg in die sehr junge und vor allem beliebte Sprache Kotlin zu geben ;)

Viele Grüße aus Hannover
Andreas

Antworten
Christian Kaps

Hallo Andreas ,

ich habe meinen Kommentar geschrieben, da nur in der Überschrift das Wort Javascript vorkam und im Text mit keiner Silbe darauf eingegangen wurde. Ich habe extra ein paar mal durch den Text gesucht, ob ich doch nicht irgendwo eine Erläuterung finde, wieso du in der Überschrift Java und Javascript in einem Atemzug verwendest und dann nur auf Kotlin als Alternative eingehst. Der von dir erwähnte Link war zum dem Zeitpunkt definitiv nicht vorhanden.

Es ist natürlich schwer, für den Leser deiner Artikel, zu verstehen was du dir bei diesem Thema gedacht hast. Wir als Leser können nur mit den Informationen in deinem Artikel arbeiten. Und für mich sah es anhand dieser Informationen danach aus, als ob du nur oberflächlich eine Ahnung von diesem Thema hast. Deshalb habe ich versucht nochmal die Unterscheide aufzuzeigen. Ich bin in meiner Arbeit als Softwareentwickler schon oft darüber gestolpert, das Anfänger die beiden Sprachen Java und Javascript gleich setzen. Deshalb bin ich auch davon ausgegangen, dass dir der Unterscheid nicht klar ist. Das nächste mal sollte ich einfach nochmal genauer nachfragen. Asche auf mein Haupt.

Ich kann dir nur ans Herz legen, deine Artikel vielleicht vor dem Absenden noch mal genau auf Stimmigkeit zu überprüfen. Ich glaube dann entstehen solche Diskussionen auch nicht.

Mal eine ernst gemeinte Frage und auch nicht provokativ gemeint. Gibt es bei euch in der Redaktion sowas wie einen Review Prozess ähnlich wie in der Softwareentwicklung? Oder kann jeder Redakteur selber entscheiden, wann ein Artikel reif für die Massen ist? Ich kenne mich da leider gar nicht aus.

Beste Grüße
Christian

Andreas Domin

Hallo Christian,

da hast du recht, dass ich noch zu Javascript 2, 3 Sätze hätte schreiben können. Der erwähnte Link war in der Form so bereits da. Ich habe lediglich „ und was Javascript damit zu tun hat“ ergänzt, um das klarer zu machen.

Und ich kann dich beruhigen: Wenn ich von einem Thema absolut keine Ahnung habe, informiere ich mich gründlich drüber oder schreibe erst gar keinen Artikel dazu :)
Als Informatikstudent der in das 5. Semester kommt wäre es jedoch ziemlich fatal, wenn ich nicht den Unterschied zwischen Java und Javascript kennen würde.

Und ja, es gibt einen Review-Prozess. Je nach Artikel wird sich aber vor allem auf die Ausdrucksweise, Rechtschreibung und Grammatik geachtet. Inhaltlich ist das manchmal nicht so leicht, da sich nicht jeder mit jedem Thema genau auskennt.

Viele Grüße
Andreas

Alexander

Haha.. what the fuck.. "Du hast genug von Java und Javascript? Dann mach Schluss und wechsle zur beliebten Programmiersprache Kotlin. Wir vergleichen die beiden Sprachen miteinander. "

Antworten
Andreas Domin

Hallo,

die Überschrift hängt damit zusammen, dass Jetbrains genau aus diesem Zweck Kotlin entwickelt hat. Weil sie eben ein besseres Java entwickeln wollten.

Außerdem ist Kotlin laut der diesjährigen Stackoverflow-Umfrage die zweitbeliebteste Programmiersprache, während Java jeder zweite (der mit Java gearbeitet hat) diese auch weiter verwenden möchte.

Außerdem ist Java-Code mit Kotlin-Code kompatibel (in Kotlin können Java-Klassen verwenden werden und umgekehrt). Da kann man doch die Überschrift und den Teaser mal ein bisschen aufpeppen, findest du nicht? Muss ja nicht immer alles so kling wie überall sonst ;)

Liebe Grüße aus Hannover
Andreas

Antworten
patrick

Was hat Java mit Javascript zu tun :-)

Andreas Domin

Hallo Patrick,

erstmal natürlich gar nichts. Kotlin kann jedoch unter anderem dazu verwendet werden, Code für Java oder Javascript zu schreiben. Der Compiler übersetzt dann den Code entweder für die JVM oder generiert JS-Code.

Details zu den Einsatzmöglichkeiten von Kotlin habe ich auch am Anfang des Artikels verlinkt: https://t3n.de/news/kotlin-programmiersprache-1094268/

Vgl: https://kotlinlang.org/docs/reference/js-overview.html bzw. https://kotlinlang.org/docs/reference/server-overview.html

Antworten
Tolga

Zitat: "Du hast genug von Java und Javascript? Dann mach Schluss und wechsle zur beliebten Programmiersprache Kotlin."

Ich habe ja Verständnis für einen reißerische Artikelanfang, aber bleibt doch bitte professionell und erhaltet das hohe Niveau.

Antworten
Andreas Domin

Hallo,

die Überschrift hängt damit zusammen, dass Jetbrains genau aus diesem Zweck Kotlin entwickelt hat. Weil sie eben ein besseres Java entwickeln wollten.

Außerdem ist Kotlin laut der diesjährigen Stackoverflow-Umfrage die zweitbeliebteste Programmiersprache, während Java jeder zweite (der mit Java gearbeitet hat) diese auch weiter verwenden möchte.

Außerdem ist Java-Code mit Kotlin-Code kompatibel (in Kotlin können Java-Klassen verwenden werden und umgekehrt). Da kann man doch die Überschrift und den Teaser mal ein bisschen aufpeppen, findest du nicht? Muss ja nicht immer alles so kling wie überall sonst ;)

Liebe Grüße aus Hannover
Andreas

Antworten
Tolga

"Muss ja nicht immer alles so kling wie überall sonst ;)"

Nein, muss es natürlich nicht. Es sollte nur professionell klingen ... Dann nimmt man den Artikel - über eine sehr gute Sprache - auch ernster.
viele Grüße aus München
Tolga

Andreas Domin

Ich habe die Formulierung mal ein wenig angepasst ;)

Liebe Grüße und einen sonnigen Dienstag
Andreas

Antworten
Gast

„Du hast genug von Java und Javascript?“ Ernsthaft? Danach soll man diesen Artikel noch ernst nehmen?

Antworten
Andreas Domin

Hallo,

die Überschrift hängt damit zusammen, dass Jetbrains genau aus diesem Zweck Kotlin entwickelt hat. Weil sie eben ein besseres Java entwickeln wollten.

Außerdem ist Kotlin laut der diesjährigen Stackoverflow-Umfrage die zweitbeliebteste Programmiersprache, während Java jeder zweite (der mit Java gearbeitet hat) diese auch weiter verwenden möchte.

Außerdem ist Java-Code mit Kotlin-Code kompatibel (in Kotlin können Java-Klassen verwenden werden und umgekehrt). Da kann man doch die Überschrift und den Teaser mal ein bisschen aufpeppen, findest du nicht? Muss ja nicht immer alles so kling wie überall sonst ;)

Liebe Grüße aus Hannover
Andreas

Antworten
Michael

Wie Aussagekräftig sind solche Umfragen?

Ich programmier jetzt seit über 15 Jahren mit/in PHP, Javascript und C# und höre "Kotlin" grad zum ersten mal.
Hab wohl zu wenig mit Java zutun? :)

Für (Ex)Java-Entwickler sicher interessant, mich persönlich überzeugt die Syntax und Struktur jetzt nicht. Und eine Sprache wie Java oder Kotlin zu nutzen um Javascript zu generieren ist für mich auch irgendwie "von hinten durch die Brust ins Auge", zumindest im Web-Context. Das geht theoretisch auch mit C++ und anderen aber viel Spaß beim Debuggen ;)

Grüße

Andreas Domin

Hallo Michael,

Kotlin ist tatsächlich am sinnvollsten als Java-Ersatz bzw. vor allem wenn du für Android Apps entwickelst.

Kotlin ist auch eine sehr junge Sprache, kann also vorkommen, dass wenn man nicht bei Java oder Android unterwegs ist, die Sprache noch nicht kennt.

Wie gut Kotlin für Javascript ist, kann ich nicht aus eigener Erfahrung sagen. Für Android und Java ist Kotlin, wie ich finde, die deutlich bessere Alternative :)

Viele Grüße aus Hannover,
Andreas

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.