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
Paulien van Alst - Upgrade Time: Choose Java 11 or the "other" one… Kotlin - Codemotion Amsterdam 2019
Thank you!
Rate this talk!
Paulien van Alst - Upgrade Time: Choose Java 11 or the "other" one… Kotlin - Codemotion Amsterdam 2019

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 Paulien van Alst - Upgrade Time: Choose Java 11 or the "other" one… Kotlin - Codemotion Amsterdam 2019 (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

More from Codemotion (20)

PDF
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
PDF
Pompili - From hero to_zero: The FatalNoise neverending story
PPTX
Pastore - Commodore 65 - La storia
PPTX
Pennisi - Essere Richard Altwasser
PPTX
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
PPTX
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
PPTX
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
PPTX
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
PDF
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
PDF
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
PDF
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
PDF
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
PDF
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
PDF
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
PPTX
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
PPTX
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
PDF
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
PDF
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
PDF
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
PDF
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Pompili - From hero to_zero: The FatalNoise neverending story
Pastore - Commodore 65 - La storia
Pennisi - Essere Richard Altwasser
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019

Recently uploaded (20)

PDF
August Patch Tuesday
PDF
Getting Started with Data Integration: FME Form 101
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
Five Habits of High-Impact Board Members
PDF
A review of recent deep learning applications in wood surface defect identifi...
PPTX
Chapter 5: Probability Theory and Statistics
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
STKI Israel Market Study 2025 version august
August Patch Tuesday
Getting Started with Data Integration: FME Form 101
O2C Customer Invoices to Receipt V15A.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
Univ-Connecticut-ChatGPT-Presentaion.pdf
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
1 - Historical Antecedents, Social Consideration.pdf
Developing a website for English-speaking practice to English as a foreign la...
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Hindi spoken digit analysis for native and non-native speakers
A novel scalable deep ensemble learning framework for big data classification...
Five Habits of High-Impact Board Members
A review of recent deep learning applications in wood surface defect identifi...
Chapter 5: Probability Theory and Statistics
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Module 1.ppt Iot fundamentals and Architecture
WOOl fibre morphology and structure.pdf for textiles
STKI Israel Market Study 2025 version august

Paulien van Alst - Upgrade Time: Choose Java 11 or the "other" one… Kotlin - Codemotion Amsterdam 2019

  • 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