SlideShare a Scribd company logo
Upgrade Time!
Choose Java 11 or the other one… Kotlin!
Paulien van Alst
Who am I?
@PaulienVanAlst
Highlights Java 9/10/11
switch statements
var something = “Something”
JShell
Convenience methods for collections
Release cadence
My story with Kotlin
boardGameRepository.findAllByCategory(ADVENTURE).stream()
.filter(game -> game.getMinimalNumberOfPlayers() > 2)
.filter(game -> game.getMinimalAge() > 10)
.map(BoardGameEntity::getPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);
My story with Kotlin
boardGameRepository.findAllByCategory(ADVENTURE).stream()
.filter(game -> game.getMinimalNumberOfPlayers() > 2)
.filter(game -> game.getMinimalAge() > 10)
.map(BoardGameEntity::getPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);
boardGameRepository.findAllByCategory(ADVENTURE)
.moreThanTwoPlayers()
.olderThanTenToPlay()
.meanPrice()
My story with Kotlin
boardGameRepository.findAllByCategory(ADVENTURE).stream()
.filter(game -> game.getMinimalNumberOfPlayers() > 2)
.filter(game -> game.getMinimalAge() > 10)
.map(BoardGameEntity::getPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);
boardGameRepository.findAllByCategory(ADVENTURE)
.moreThanTwoPlayers()
.olderThanTenToPlay()
.meanPrice()
My story with Kotlin
boardGameRepository.findAllByCategory(ADVENTURE).stream()
.filter(game -> game.getMinimalNumberOfPlayers() > 2)
.filter(game -> game.getMinimalAge() > 10)
.map(BoardGameEntity::getPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);
boardGameRepository.findAllByCategory(ADVENTURE)
.moreThanTwoPlayers()
.olderThanTenToPlay()
.meanPrice()
My story with Kotlin
boardGameRepository.findAllByCategory(ADVENTURE).stream()
.filter(game -> game.getMinimalNumberOfPlayers() > 2)
.filter(game -> game.getMinimalAge() > 10)
.map(BoardGameEntity::getPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);
boardGameRepository.findAllByCategory(ADVENTURE)
.moreThanTwoPlayers()
.olderThanTenToPlay()
.meanPrice()
My story with Kotlin
boardGameRepository.findAllByCategory(ADVENTURE).stream()
.filter(game -> game.getMinimalNumberOfPlayers() > 2)
.filter(game -> game.getMinimalAge() > 10)
.map(BoardGameEntity::getPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);
boardGameRepository.findAllByCategory(ADVENTURE)
.moreThanTwoPlayers()
.olderThanTenToPlay()
.meanPrice()
Reasons to switch to Kotlin
Regular updates
Interoperability
Multiplatform
Readability
Less boilerplate
Safe programming
What to keep in mind
Interoperability
Idioms
Magic problem solver
Warning!
DO this at home
or
In a POC
Let’s start!
Rates 8
Games above … 8
Dominion
Dominion
Ticket to ride
Let’s start!
Spring boot 2
In memory database
UT’s and IT’s
Migration Plan
1. Set-up dependencies
2. Migrate PoJo’s
3. Rewrite unit tests
4. Core logic
5. Configuration
Let’s start
Code!
Migration Plan
1. Set-up dependencies
2. Migrate PoJo’s
3. Rewrite unit tests
4. Core logic
5. Configuration
GOTO AMS 2019 Upgrade Time! Choose Java 11 or the other one… Kotlin!
GOTO AMS 2019 Upgrade Time! Choose Java 11 or the other one… Kotlin!
GOTO AMS 2019 Upgrade Time! Choose Java 11 or the other one… Kotlin!

More Related Content

PDF
Upgrade time ! Java to Kotlin
PDF
Paulien van Alst - Upgrade Time: Choose Java 11 or the "other" one… Kotlin - ...
PPTX
Lenses for the masses - introducing Goggles
PDF
Stop Guessing and Start Measuring - Benchmarking Practice (Poly Version)
PPTX
Raspberry pi gaming 4 kids
PDF
MySQL flexible schema and JSON for Internet of Things
PDF
How fast is it really? Benchmarking in Practice (Ruby Version)
PDF
Aplicações assíncronas no Android com
Coroutines & Jetpack
Upgrade time ! Java to Kotlin
Paulien van Alst - Upgrade Time: Choose Java 11 or the "other" one… Kotlin - ...
Lenses for the masses - introducing Goggles
Stop Guessing and Start Measuring - Benchmarking Practice (Poly Version)
Raspberry pi gaming 4 kids
MySQL flexible schema and JSON for Internet of Things
How fast is it really? Benchmarking in Practice (Ruby Version)
Aplicações assíncronas no Android com
Coroutines & Jetpack

What's hot (20)

PDF
Sequence diagrams
PDF
Nosql hands on handout 04
PDF
The Ring programming language version 1.7 book - Part 66 of 196
PDF
The Ring programming language version 1.5.4 book - Part 61 of 185
PDF
The Ring programming language version 1.9 book - Part 71 of 210
PDF
Aplicações Assíncronas no Android com Coroutines e Jetpack
PDF
Beyond the Callback: Yield Control with Javascript Generators
PDF
The Ring programming language version 1.6 book - Part 71 of 189
PDF
The Ring programming language version 1.6 book - Part 62 of 189
PDF
Capability Driven Design - Andrzej Jóźwiak - TomTom Dev Day 2021
PDF
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of Indifference
PDF
ECMAScript 6 new features
PPTX
Data Types and Processing in ES6
PDF
Concurrent applications with free monads and stm
PDF
rx.js make async programming simpler
PDF
Understanding Autovacuum
PDF
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
PDF
The Ring programming language version 1.5.3 book - Part 76 of 184
TXT
Super heroes training_simulator
ODP
FRP and Bacon.js
Sequence diagrams
Nosql hands on handout 04
The Ring programming language version 1.7 book - Part 66 of 196
The Ring programming language version 1.5.4 book - Part 61 of 185
The Ring programming language version 1.9 book - Part 71 of 210
Aplicações Assíncronas no Android com Coroutines e Jetpack
Beyond the Callback: Yield Control with Javascript Generators
The Ring programming language version 1.6 book - Part 71 of 189
The Ring programming language version 1.6 book - Part 62 of 189
Capability Driven Design - Andrzej Jóźwiak - TomTom Dev Day 2021
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of Indifference
ECMAScript 6 new features
Data Types and Processing in ES6
Concurrent applications with free monads and stm
rx.js make async programming simpler
Understanding Autovacuum
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
The Ring programming language version 1.5.3 book - Part 76 of 184
Super heroes training_simulator
FRP and Bacon.js
Ad

Similar to GOTO AMS 2019 Upgrade Time! Choose Java 11 or the other one… Kotlin! (20)

PPTX
Kotlin Native - C / Swift Interop - ACCU Autmn 2019
PPTX
Kotlin for all the Things
PDF
Kotlin: a better Java
PDF
Comparing JVM languages
PPTX
Kotlin for Android - Goto Copenhagan 2019
PDF
Devoxx 2018: From Java to Kotlin: the adventures of a smooth migration
PDF
Transitioning Android Teams Into Kotlin
PPTX
Kotlin is charming; The reasons Java engineers should start Kotlin.
PDF
Android 101 - Kotlin ( Future of Android Development)
PPTX
Intro to kotlin 2018
PDF
Kotlin: forse è la volta buona (Trento)
PPSX
Kotlin Language powerpoint show file
PDF
Is this Swift for Android? A short introduction to the Kotlin language
PPTX
Kotlin – Alternative oder Ergänzung zu Java?
PDF
Kotlin, a modern language for modern times
PPTX
Intro to kotlin
PDF
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
PDF
A short introduction to the Kotlin language for Java developers
PPTX
Kotlin for android
PDF
Kotlin Introduction with Android applications
Kotlin Native - C / Swift Interop - ACCU Autmn 2019
Kotlin for all the Things
Kotlin: a better Java
Comparing JVM languages
Kotlin for Android - Goto Copenhagan 2019
Devoxx 2018: From Java to Kotlin: the adventures of a smooth migration
Transitioning Android Teams Into Kotlin
Kotlin is charming; The reasons Java engineers should start Kotlin.
Android 101 - Kotlin ( Future of Android Development)
Intro to kotlin 2018
Kotlin: forse è la volta buona (Trento)
Kotlin Language powerpoint show file
Is this Swift for Android? A short introduction to the Kotlin language
Kotlin – Alternative oder Ergänzung zu Java?
Kotlin, a modern language for modern times
Intro to kotlin
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
A short introduction to the Kotlin language for Java developers
Kotlin for android
Kotlin Introduction with Android applications
Ad

Recently uploaded (20)

PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
GSA Content Generator Crack (2025 Latest)
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
Visual explanation of Dijkstra's Algorithm using Python
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
DNT Brochure 2025 – ISV Solutions @ D365
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PPTX
Tech Workshop Escape Room Tech Workshop
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PPTX
assetexplorer- product-overview - presentation
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
AI Guide for Business Growth - Arna Softech
PPTX
CNN LeNet5 Architecture: Neural Networks
Designing Intelligence for the Shop Floor.pdf
GSA Content Generator Crack (2025 Latest)
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Visual explanation of Dijkstra's Algorithm using Python
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
Monitoring Stack: Grafana, Loki & Promtail
DNT Brochure 2025 – ISV Solutions @ D365
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
How to Use SharePoint as an ISO-Compliant Document Management System
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
Wondershare Recoverit Full Crack New Version (Latest 2025)
Tech Workshop Escape Room Tech Workshop
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
Advanced SystemCare Ultimate Crack + Portable (2025)
assetexplorer- product-overview - presentation
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
AI Guide for Business Growth - Arna Softech
CNN LeNet5 Architecture: Neural Networks

GOTO AMS 2019 Upgrade Time! Choose Java 11 or the other one… Kotlin!

  • 1. Upgrade Time! Choose Java 11 or the other one… Kotlin! Paulien van Alst
  • 3. Highlights Java 9/10/11 switch statements var something = “Something” JShell Convenience methods for collections Release cadence
  • 4. My story with Kotlin boardGameRepository.findAllByCategory(ADVENTURE).stream() .filter(game -> game.getMinimalNumberOfPlayers() > 2) .filter(game -> game.getMinimalAge() > 10) .map(BoardGameEntity::getPrice) .reduce(BigDecimal.ZERO, BigDecimal::add);
  • 5. My story with Kotlin boardGameRepository.findAllByCategory(ADVENTURE).stream() .filter(game -> game.getMinimalNumberOfPlayers() > 2) .filter(game -> game.getMinimalAge() > 10) .map(BoardGameEntity::getPrice) .reduce(BigDecimal.ZERO, BigDecimal::add); boardGameRepository.findAllByCategory(ADVENTURE) .moreThanTwoPlayers() .olderThanTenToPlay() .meanPrice()
  • 6. My story with Kotlin boardGameRepository.findAllByCategory(ADVENTURE).stream() .filter(game -> game.getMinimalNumberOfPlayers() > 2) .filter(game -> game.getMinimalAge() > 10) .map(BoardGameEntity::getPrice) .reduce(BigDecimal.ZERO, BigDecimal::add); boardGameRepository.findAllByCategory(ADVENTURE) .moreThanTwoPlayers() .olderThanTenToPlay() .meanPrice()
  • 7. My story with Kotlin boardGameRepository.findAllByCategory(ADVENTURE).stream() .filter(game -> game.getMinimalNumberOfPlayers() > 2) .filter(game -> game.getMinimalAge() > 10) .map(BoardGameEntity::getPrice) .reduce(BigDecimal.ZERO, BigDecimal::add); boardGameRepository.findAllByCategory(ADVENTURE) .moreThanTwoPlayers() .olderThanTenToPlay() .meanPrice()
  • 8. My story with Kotlin boardGameRepository.findAllByCategory(ADVENTURE).stream() .filter(game -> game.getMinimalNumberOfPlayers() > 2) .filter(game -> game.getMinimalAge() > 10) .map(BoardGameEntity::getPrice) .reduce(BigDecimal.ZERO, BigDecimal::add); boardGameRepository.findAllByCategory(ADVENTURE) .moreThanTwoPlayers() .olderThanTenToPlay() .meanPrice()
  • 9. My story with Kotlin boardGameRepository.findAllByCategory(ADVENTURE).stream() .filter(game -> game.getMinimalNumberOfPlayers() > 2) .filter(game -> game.getMinimalAge() > 10) .map(BoardGameEntity::getPrice) .reduce(BigDecimal.ZERO, BigDecimal::add); boardGameRepository.findAllByCategory(ADVENTURE) .moreThanTwoPlayers() .olderThanTenToPlay() .meanPrice()
  • 10. Reasons to switch to Kotlin Regular updates Interoperability Multiplatform Readability Less boilerplate Safe programming
  • 11. What to keep in mind Interoperability Idioms Magic problem solver
  • 12. Warning! DO this at home or In a POC
  • 13. Let’s start! Rates 8 Games above … 8 Dominion Dominion Ticket to ride
  • 14. Let’s start! Spring boot 2 In memory database UT’s and IT’s
  • 15. Migration Plan 1. Set-up dependencies 2. Migrate PoJo’s 3. Rewrite unit tests 4. Core logic 5. Configuration
  • 17. Migration Plan 1. Set-up dependencies 2. Migrate PoJo’s 3. Rewrite unit tests 4. Core logic 5. Configuration