IT-Jobs, die dich glücklich machen

Welche Vorteile hat Kotlin gegenüber Java?

Immer mehr Unternehmen setzen bei neuen Softwareprojekten auf die Programmiersprache Kotlin. Java scheint langsam aber sicher durch Kotlin abgelöst zu werden. Als Java-Entwickler sollte man die Vorteile kennen.
Vorteile von Kotlin

Kotlin – besser als Java?

Im Bereich von Android und der Mobile-App-Entwicklung ist die Programmiersprache Kotlin schon seit geraumer Zeit die Nummer eins. Google hat sich nicht nur aus lizenztechnischen Gründen im Jahr 2019 dazu entschieden, Kotlin gegenüber Java den Vorrang zu geben: Koltin ist lesbarer, effizienter, schlanker, weniger fehleranfällig und einfach die moderne Sprache.

Jedoch auch in der Web- und Enterprise-Softwareentwicklung legt Kotlin an Gewicht zu. Ich selbst habe es in den letzten Monaten anhand der Projektanfragen deutlich gespürt. Als Java-Freelancer bekomme ich regelmäßig Ausschreibungen auf den Tisch. Hier wird vermehrt nach Kotlin-Kenntnissen gefragt. In den meisten dieser Projekte ist es so, dass Java und Kotlin parallel eingesetzt werden. Bei Neuentwicklungen – wie beispielsweise zusätzlichen Microservices – wird dann oft dezidiert auf Kotlin gesetzt.

Bewerbungsfrage: Vorteile von Kotlin gegenüber Java?

In Interviews für Java-Jobs wird mehr und mehr nach Kotlin gefragt: Ist Kotlin bekannt? Was macht die Sprache aus? Gibt es erste Erfahrungen damit? Und insbesondere wird man nach den Vor- und Nachteilen zwischen Java und Koltin gefragt.

Es macht also viel Sinn, sich als Java-Entwickler mit der modernen Programmiersprache aus dem Hause JetBrains zu beschäftigen. Zur Motivation und als Vorbereitung auf ein mögliches Bewerbungsgespräch möchte ich hier die – aus meiner Sicht – Vorteile von Kotlin aufzeigen. Anschließend gibt es noch einen Coding-Vergleich der beiden Kontrahenten.


Eigenschaft Kotlin Java
Lesbarkeit Sehr gut. Concise Source-Code. Wenig Boilerplate. Viel Boilerplate-Code und Tipparbeit nötig.
Funktionale Programmierung Vom Start weg in die Sprache eingebaut (“function types”) In neueren Java-Versionen möglich; aber nicht elegant
Sicher / Null-References Unerwartete Null-Referenzen werden durch das Typsystem verhindert NullpointerException fliegen häufig, wenn entsprechenden Fallunterscheidungen fehlen
Typsicherheit Statische Typisierung und nur objektorientierte Datentypen Auch statische Typisierung, jedoch uneinheitlich durch Raw-Typen
Interoperable / Multiplatform Vielseitig einsetzbar (kompiliert z.B. nach JavaScript). Voll kompatibel zu Java. Unterstützung durch Spring Framework u.a. Beschränkt (solange man nicht Dinge wie z.B. die GraalVM nutzt)
Checked Exceptions Einheitliche Exceptions; keine muss gefangen werden solche und solche ;)
Static Members Nein (alternativen) Ja
Immutability Im Kern der Sprache unterstützt (“val”) Möglich, aber nicht immer ersichtlich
Multi-Threading Eleganter und sicherer durch Sprachfeatures wie Coroutines Komplex und viele historisch gewachsene Lösungsmöglichkeiten
Nice Features wie z.B. String-Templates, Smartcasts, Data-Classes, Default-Parameter, Operation-Overloading, Extension-Functions …. Kommt teilweise in späteren Java-Versionen (“aufgesetzt”)
Vorteile von Kotlin gegenüber Java

Vergleich: Unterschiede Kotlin vs. Java

Besonders schnell erkennt man die Vorteile von Kotlin, wenn man sich ein Code-Beispiel anschaut. Im Folgenden ist die gleiche Funktionalität einmal in Kotlin und einmal in Java implementiert. In Java sind dazu 55 Zeilen mit über 1.000 Zeichen notwendig. Kotlin erledigt den gleichen Job mit weniger als die Hälfte an Tipparbeit (20 Zeilen und weniger als 500 Zeichen).

Vergleiche selbst, welches die ausdrucksstärkere und lesbarere Programmiersprache ist:

fun main(args: Array<String>) { repeat(3) { println("Hello Jobpushy!") } println(yesOrNo(false)) println(printLengthOfString("123")) val lionOne = Lion("Leo") val lionTwo = Lion("Simba") println("Leo ist gleich Simba: " + (lionOne == lionTwo)) } fun yesOrNo(value: Boolean) = if (value) "Ja" else "Nein" fun printLengthOfString(value: String?): Int? { return value?.length } data class Lion(val name: String)
Kotlin Source-Code

public class ExamplesJava { public static void main(String[] args) { ExamplesJava obj = new ExamplesJava(); System.out.println(obj.jaOderNein(true)); System.out.println(obj.printLengthOfString("123")); Lion lionOne = new Lion("Leo"); Lion lionTwo = new Lion("Simba"); System.out.println("Leo ist gleich Simba: "+lionOne.equals(lionTwo)); } ExamplesJava() { for (int i = 0; i < 3; i++) { System.out.println("Hello Jobpushy!"); } } public String jaOderNein(boolean value) { return value ? "ja" : "nein"; } public Integer printLengthOfString(String value) { if (value != null) { return value.length(); } else { return null; } } static class Lion { public final String name; public Lion(String name) { this.name = name; } @Override public boolean equals(Object obj) { if (obj instanceof Lion) { Lion other = (Lion) obj; return this.name.equals(other.name); } else { return false; } } @Override public int hashCode() { return name != null ? name.hashCode() : 0; } } }
Java Source-Code

Tipps zum Erlernen von Kotlin

Die Umwandlung von Java-Source nach Kotlin kann häufig automatisiert werden. In der Entwicklungsumgebung IntelliJ IDEA geschieht das fast automatisch. Du kannst folglich Java-Code zunächst schreiben und diesen dann automatisch nach Kotlin übersetzen lassen. Hundert Prozent optimiert ist der Code dann zwar nicht immer. Es ist jedoch perfekt, um zu lernen und das Kotlin-Äquivalent eines Java-Kommandos zu studieren. Siehe: Convert Java to Kotlin

Der Königsweg ist sicher das “Learning by Doing”. Mit anderen Worten: Falls Du für dich entschieden hast Kotlin zu lernen, suche dir ein entsprechendes Projekt. Entweder für dich selber als Sideproject neben deinem Hauptjob. Oder suche dir ein modernes Unternehmen, welches bereits auf Kotlin setzt und dir ein entsprechendes Projekt bzw. Stelle anbieten kann. Bei uns hier auf Jobpushy, kannst Du deine Emailadresse und Jobwünsche hinterlegen und wir informieren dich, falls irgendwo da draußen dein Traumjob aufpoppt. :)

Natürlich kann auch gute Literatur oder ein Tutorial helfen, schnell in Kotlin reinzukommen. Speziell für Java-Entwickler hat Bernhard J. Mayr das freie Tutorial Kotlin für Java Developers publiziert. Für Entwickler, die lieber Papier in den Händen halten, gibt es das ganze auch als Buch "Kotlin für Java Developers" [Amazon-Werbepartner]


Viel Erfolg!

Für Hinweise, Feedback oder Fragen kontaktiere uns bitte via Twitter@Jobpushy, unserem Slack Workspace oder über unsere sonstigen Kontaktangaben.