SlideShare a Scribd company logo
Upgrade Time! Choose Java 11
or the other one… Kotlin!
Paulien van Alst
Amsterdam | April 2-3, 2019
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 6 8
Games above … 8 9 9,5
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
6. Test DSL
Let’s start
Code!
Migration Plan
1. Set-up dependencies
2. Migrate PoJo’s
3. Rewrite unit tests
4. Core logic
5. Configuration
6. Test DSL
Upgrade time ! Java to Kotlin
Thank you!
Rate this talk!
Upgrade time ! Java to Kotlin

More Related Content

PDF
GOTO AMS 2019 Upgrade Time! Choose Java 11 or the other one… Kotlin!
KEY
Perl on Amazon Elastic MapReduce
KEY
My life as a beekeeper
PPTX
Raspberry pi gaming 4 kids
PPTX
Tensorflow + Keras & Open AI Gym
PPTX
Data Types and Processing in ES6
PDF
What they don't tell you about JavaScript
PDF
Aplicações assíncronas no Android com
Coroutines & Jetpack
GOTO AMS 2019 Upgrade Time! Choose Java 11 or the other one… Kotlin!
Perl on Amazon Elastic MapReduce
My life as a beekeeper
Raspberry pi gaming 4 kids
Tensorflow + Keras & Open AI Gym
Data Types and Processing in ES6
What they don't tell you about JavaScript
Aplicações assíncronas no Android com
Coroutines & Jetpack

What's hot (13)

PDF
Add Some Fun to Your Functional Programming With RXJS
PDF
Aplicações Assíncronas no Android com Coroutines e Jetpack
PDF
Nosql hands on handout 04
PPTX
MiamiJS - The Future of JavaScript
PDF
Aplicações assíncronas no Android com
Coroutines & Jetpack
PDF
Apache beam — promyk nadziei data engineera na Toruń JUG 28.03.2018
PDF
Kotlin - Coroutine
PPTX
HAB Software Woes
PDF
Fun with sensors - JSConf.asia 2014
PDF
Introdução ao Desenvolvimento Android com Kotlin
KEY
W3C HTML5 KIG-How to write low garbage real-time javascript
PDF
Concurrency and Distributed Systems Using JRuby
PDF
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
Add Some Fun to Your Functional Programming With RXJS
Aplicações Assíncronas no Android com Coroutines e Jetpack
Nosql hands on handout 04
MiamiJS - The Future of JavaScript
Aplicações assíncronas no Android com
Coroutines & Jetpack
Apache beam — promyk nadziei data engineera na Toruń JUG 28.03.2018
Kotlin - Coroutine
HAB Software Woes
Fun with sensors - JSConf.asia 2014
Introdução ao Desenvolvimento Android com Kotlin
W3C HTML5 KIG-How to write low garbage real-time javascript
Concurrency and Distributed Systems Using JRuby
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
Ad

Similar to Upgrade time ! Java to Kotlin (20)

PDF
Introduction to scala
PDF
Develop your next app with kotlin @ AndroidMakersFr 2017
PDF
Kotlin wonderland
PDF
4Developers: Michał Szczepanik- Kotlin - Let’s ketchup it
PDF
Kotlin Generation
PDF
Scala coated JVM
KEY
Backbone intro
PDF
Kotlin After 9 Months
KEY
Backbone.js
PDF
Светлана Исакова «Язык Kotlin»
PDF
The Kotlin Programming Language, Svetlana Isakova
PDF
Writing Maintainable JavaScript
PPTX
Kotlin is charming; The reasons Java engineers should start Kotlin.
PDF
Scala to assembly
PDF
Javascript the New Parts v2
PDF
Coroutines for Kotlin Multiplatform in Practise
PDF
iBATIS
PDF
Unit Testing in Kotlin
KEY
Code as data as code.
PPTX
Kotlin on android
Introduction to scala
Develop your next app with kotlin @ AndroidMakersFr 2017
Kotlin wonderland
4Developers: Michał Szczepanik- Kotlin - Let’s ketchup it
Kotlin Generation
Scala coated JVM
Backbone intro
Kotlin After 9 Months
Backbone.js
Светлана Исакова «Язык Kotlin»
The Kotlin Programming Language, Svetlana Isakova
Writing Maintainable JavaScript
Kotlin is charming; The reasons Java engineers should start Kotlin.
Scala to assembly
Javascript the New Parts v2
Coroutines for Kotlin Multiplatform in Practise
iBATIS
Unit Testing in Kotlin
Code as data as code.
Kotlin on android
Ad

Recently uploaded (20)

PDF
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
PDF
Cost to Outsource Software Development in 2025
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
Patient Appointment Booking in Odoo with online payment
PPTX
"Secure File Sharing Solutions on AWS".pptx
PDF
CCleaner 6.39.11548 Crack 2025 License Key
PPTX
Trending Python Topics for Data Visualization in 2025
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
MCP Security Tutorial - Beginner to Advanced
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PPTX
GSA Content Generator Crack (2025 Latest)
PDF
iTop VPN Crack Latest Version Full Key 2025
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
Visual explanation of Dijkstra's Algorithm using Python
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
Cost to Outsource Software Development in 2025
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
How to Use SharePoint as an ISO-Compliant Document Management System
Patient Appointment Booking in Odoo with online payment
"Secure File Sharing Solutions on AWS".pptx
CCleaner 6.39.11548 Crack 2025 License Key
Trending Python Topics for Data Visualization in 2025
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
Monitoring Stack: Grafana, Loki & Promtail
MCP Security Tutorial - Beginner to Advanced
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
Weekly report ppt - harsh dattuprasad patel.pptx
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
GSA Content Generator Crack (2025 Latest)
iTop VPN Crack Latest Version Full Key 2025
Why Generative AI is the Future of Content, Code & Creativity?
Visual explanation of Dijkstra's Algorithm using Python

Upgrade time ! Java to Kotlin

  • 1. Upgrade Time! Choose Java 11 or the other one… Kotlin! Paulien van Alst Amsterdam | April 2-3, 2019
  • 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 6 8 Games above … 8 9 9,5
  • 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 6. Test DSL
  • 17. Migration Plan 1. Set-up dependencies 2. Migrate PoJo’s 3. Rewrite unit tests 4. Core logic 5. Configuration 6. Test DSL