Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin kontra Java - Braucht man 2025 überhaup...

Avatar for Richard Richard
November 11, 2025

Kotlin kontra Java - Braucht man 2025 überhaupt noch Kotlin (v1.1) 🇩🇪 @IT Tage 2025

Java hat in den letzten Jahren ein paar sehr attraktive Sprachfeatures eingeführt - Records, Pattern Matching sowie virtual Threads - und damit ein Großteil von dem was bisher Kotlin-exklusiv war. Aber hat Java damit wirklich alles attraktive von Kotlin abgedeckt? Ist Kotlin im Jahr 2024 noch relevant?

Um diesen Fragen auf den Grund zu gehen, werden wir die Entwicklungen in der Architektur beider Sprachen und die beispielhaften Anwendungsfälle aus Developersicht analysieren und bewerten. Dabei machen wir auch einen kleinen Blick in die Zukunft und vergleichen die sich abzeichnenden Entwicklungsschritte beider Sprache der nächsten Jahre.

Der Vortrag zielt darauf ab, die aktuellen und zukünftigen Entwickler bei der Auswahl der geeigneten Programmiersprache für ihre Bedürfnisse zu unterstützen, indem er ein vollständiges, unvoreingenommenes Bild der Stärken und Grenzen beider Sprachen liefert.

Avatar for Richard

Richard

November 11, 2025
Tweet

More Decks by Richard

Other Decks in Programming

Transcript

  1. 11.12.25 Richard Gross (er/ihm) richargh.de/ speakerdeck.com/richargh richargh.de Kotlin kontra Java

    Braucht man 2025 überhaupt noch Kotlin? IT Sanierung Hypermedia Programmier- Sprachen
  2. F# (schaut euch diese Schönheit an) Slide 4 by richargh.de

    from From Scott Wlaschin’s Domain-Modelling made Functional talk
  3. Kriterien für Programmiersprachen Slide 6 by richargh.de from Fundament: Passt

    zum Einsatzzweck Java ? ? ? ? ? ? Kotlin ? ? ? ? ? ? Erwartete Langlebigkeit, mit guter Kompatibilität Genug Entwickler, die sie auch lernen wollen, wenig footguns Guter IDE-Support Reifes Ökosystem Schnell und Schnelles Feedback Eine Sprache für alles (bonus)
  4. Evolution*, Langlebigkeit und Breakages Slide 7 by richargh.de from •

    Limitiert auf Features für die Kriterien https://kotlinlang.org/docs/kotlin-evolution-principles.html Java MVN-Libs Java 8 › Stream<T> › Function<In, Out> Java 1 Java 21 › Record patterns › Virtual Threads Java 9 › Module System Kotlin ‘96 ’04 ‘14 ‘16 ‘17 ‘18 ‘19 ‘21 ‘23 ‘24 ‘25 Kotlin 1+1.1 › Sealed Types › Kotlin/Js › @DslMarker Kotlin 1.3 › Coroutines ArchUnit 0.11 NullAway 0.7 Kotlin 1.6 › Exhaustive when Java 17 › Records › Sealed Types › Switch Expression › Pattern Matching › Encapsulate JDK Kotlin 2.2 › Guard Conditions
  5. Gibt es genug Entwickler? Interest (Search, Jobs, …) IEEE Spectrum

    20252 1. Python (1) 2. Java (0,50) […] 13. Kotlin (0,13) 14. Rust (0,13) Survey: done extensive work? StackOverflow 20253 1. JavaScript (69%) […] 8. Java (30%) […] 14. Rust (15%) 15. Kotlin (12%) Slide 8 by richargh.de from 1 https://redmonk.com/sogrady/2025/06/18/language-rankings-1-25/ 2 https://spectrum.ieee.org/top-programming-languages-2025 3 https://survey.stackoverflow.co/2025/technology plus (Kotlin adopt since 2018) https://www.thoughtworks.com/radar/languages-and-frameworks/kotlin Github PR + SO Activity Redmonk 01-20251 1. JavaScript 2. Python 3. Java […] 14. Kotlin […] 19. Rust
  6. Kotlin IDE Support ist gerade massiv besser geworden durch offiziellen

    LSP Slide 9 by richargh.de from LSP: Language Server Protocol Kotlin IDEs: https://kotlinlang.org/docs/kotlin-ide.html#eclipse 1 https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack 2 https://github.com/nvim-java/nvim-java 3 https://kotl.in/lsp IntelliJ VS Code Eclipse Microsoft/Eclipse/Oracle LSPs ✓ ✓ ✓ by Microsoft1 or Oracle (✓) Community maintained2 (✓) JetBrains LSP pre-alpha3 ✓ ✓ by JetBrains ~ community (un)maintainted ╳ did not find maintened plugin (Neo)Vim (and other editors)
  7. Beide bieten genug Performance1 Base64 encode/decode 0,663s NodeJs 0,875s Rust

    0,918s C/gcc 1,433s Java 1,531s Scala 1,567s Kotlin 1,659s Go 2,494s C#/.NET Core 3,249s Python/pypy Slide 10 by richargh.de from 1 https://github.com/kostya/benchmarks?tab=readme-ov-file#tests-execution s=Sekunden Java=JDK23, Kotlin=2.0.21, Scala=3.5.2, C#=Core 4x oder8? What (Staged) means: https://github.com/kostya/benchmarks/issues/485 Alternative1: https://programming-language-benchmarks.vercel.app/ Alternative2: https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html Alternative 3: https://sites.google.com/view/energy-efficiency-languages/results?authuser=0 Wir ignorieren hier bewusst andere Punkte wie Effizienz (CPU, RAM) und verlassen uns darauf, dass nicht nur Benchmark, sondern auch Programme von Experten geschrieben wurden und diese lesbar und wartbar sind. bench.b Execute Brainf*** 1,012s Rust 1,111s C/gcc 1,188s Java 1,227s Kotlin 1,247s Go 1,367s C#/.NET Core 2,777s Scala 3,150s NodeJs 9,575s Python/pypy Matmul Multiply matrixes 3,034s C/gcc 3,064s Rust 3,107s Java 3,153s Go 3,197s Kotlin 3,201s NodeJs 3,263s Python/pypy 3,295s Scala 4,890s C#/.NET Core
  8. Performance-Benchmarks sind schwierig, es geht immer auch um Lesbarkeit Slide

    11 by richargh.de from 1BRC https://github.com/gunnarmorling/1brc?tab=readme-ov-file Zeit Funktionen/LoC Kommentar ~5 min 3/92 Baseline ~13 sek 11/250 Gut Lesbar ~5 sek 26/470 Wenig lesbar, Benutzt Unsafe ~2 sek 23/435 Gewinner: Wenig lesbar, GraalVM native bin, benutzt Unsafe
  9. Das Code-Sharing von Kotlin Slide 12 by richargh.de from Compose

    Multi Platform (CMP) UI Screens Logic Kotlin Multi Platform (KMP)
  10. Eine Sprache für alle oder eine Runtime für alle? Slide

    14 by richargh.de from 1 https://kotlinlang.org/docs/multiplatform.html 2 https://www.graalvm.org/22.0/docs/introduction/ 3 gibt noch keine Klassen, also keine WebComponents. Große Standard-Lib kommt immer mit dazu. 4 https://2025.wasm.io/sessions/the-future-of-write-once-run-anywhere-from-java-to-webassembly/ bekannte WASM-compiler sind TeaVM, JWebAssembly, CheerpJ Kotlin (src) Java (src) Android iOS Browser Server Native runtime JVM Truffle (GraalVM)4 Js Python Ruby JS WASM … 1 2 3 CMP Logic UI Screens CMP CMP Desktop CMP
  11. Kriterien für Programmiersprachen Slide 15 by richargh.de from Fundament: Passt

    zum Einsatzzweck Java ⇑ ⇑ ⇑ ⇑ ⇑ ⇒ Nur logic, nur WASM Kotlin ⇑ ⇑ ⇑ ⇑ ⇑ ⇗ CMP iOS noch jung Erwartete Langlebigkeit, mit guter Kompatibilität Genug Entwickler, die sie auch lernen wollen, wenig footguns Guter IDE-Support Reifes Ökosystem Schnell und Schnelles Feedback Eine Sprache für alles (bonus)
  12. Kriterien für Programmiersprachen Slide 16 by richargh.de from Fundament: Passt

    zum Einsatzzweck Java ⇑ ⇑ ⇑ ⇑ ⇑ ⇒ Nur logic, nur WASM Kotlin ⇑ ⇑ ⇑ ⇑ ⇑ ⇗ CMP iOS noch jung Erwartete Langlebigkeit, mit guter Kompatibilität Genug Entwickler, die sie auch lernen wollen, wenig footguns Guter IDE-Support Reifes Ökosystem Schnell und Schnelles Feedback Eine Sprache für alles (bonus) Java ? ? ? ? ? ? Kotlin ? ? ? ? ? ? Code liest sich wie Fachprosa (null-)Sicherheit zur Compile-Zeit Encapsulation & Information Hiding Kurz & knapp Interoperabilität mit Platform Erweiterte Nebenläufigkeit
  13. Braucht man 2025 überhaupt noch Kotlin? Slide 18 by richargh.de

    from Java ⇑ ⇑ ⇑ ⇑ ⇑ ⇒ Nur logic, nur WASM Kotlin ⇑ ⇑ ⇑ ⇑ ⇑ ⇗ CMP iOS startet erst Erwartete Langlebigkeit, mit guter Kompatibilität Genug Entwickler, die sie auch lernen wollen, wenig footguns Guter IDE-Support Reifes Ökosystem Schnell und Schnelles Feedback Eine Sprache für alles (bonus) Java ⇗ ⇗ ⇑ ⇗ ⇑ ⇗ Nicht so schick; Structured Concurrency nicht final Kotlin ⇑ ⇑ ⇑ ⇑ ⇑ ⇗ Überall suspend Code liest sich wie Fachprosa (null-)Sicherheit zur Compile-Zeit Encapsulation & Information Hiding Kurz & knapp Interoperabilität mit Platform Erweiterte Nebenläufigkeit 2020: Definitiv Kotlin 2025: Java gern, Kotlin gerner 2026: F# ☺
  14. Braucht man 2030 überhaupt noch Kotlin? Slide 19 by richargh.de

    from Java ⇑ ? ⇑ ⇑ ? ? Kotlin ⇑ ? ⇑ ⇑ ? ? Erwartete Langlebigkeit, mit guter Kompatibilität Genug Entwickler, die sie auch lernen wollen, wenig footguns Guter IDE-Support Reifes Ökosystem Schnell und Schnelles Feedback Eine Sprache für alles (bonus) Java ? ? ⇑ ? ⇑ ? Kotlin ? ? ⇑ ? ⇑ ? Code liest sich wie Fachprosa (null-)Sicherheit zur Compile-Zeit Encapsulation & Information Hiding Kurz & knapp Interoperabilität mit Platform Erweiterte Nebenläufigkeit 2020: Definitiv Kotlin 2025: Java gern, Kotlin gerner 2030: Karten wieder neu gemischt
  15. richargh.de Slide 20 by richargh.de from Dankeschön [email protected] für Folien

    & Fragen Gerne auf diese Themen ansprechen ☺ richargh.de Richard Gross (er/ihm) IT Sanierung Hypermedia Arbeitet für maibornwolff.de/ richargh.de richargh Kontakt Programmier- Sprachen Kontakt Code https://github.com/Richargh/kotlin-kontra-java
  16. Performance bedeutet auch wie schnell es kompiliert Slide 22 by

    richargh.de from https://blog.jetbrains.com/kotlin/2024/04/k2-compiler-performance-benchmarks-and-how-to-measure-them-on-your-projects/ Hier ist aber nicht ganz klar welcher Task gemessen wurde. Annahme wäre: ./gradlew clean compileKotlin --profile --no-build-cache --no-parallel * Real Lines of Code = reine Codezeilen, keine Kommentare oder Leerzeichen JetBrains/Exposed 54k RLoC* Anki-Droid 99k RLoC* In der Praxis hat sich das bei bis zu 500k RLoC auch mit 1.5 schon gut angefühlt. Mehr performance is aber immer super ☺