Raditya Gumay
GOJEK
@r_adiit
Jakarta
The Journey of
Craftmanship –
Kotlin in Action
Kotlin is a pragmatic programming language for JVM
and Android that combines 00 and functional features
and is focused on Interoperability, safety, clarity,
and tooling support.
https://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-released-pragmatic-language-for-jvm-
and-android/
Why do we need Kotlin?
Jakarta
Why do we need Kotlin?
Jakarta
Stuck on Java 7(ish)
- No javax.time
- No streams
- No lamdas
Why do we need Kotlin?
Jakarta
Stuck on Java 7(ish)
- No javax.time
- No streams
- No lamdas
ThreeTenABP
RxJava
RetroLambda
Why do we need Kotlin?
Jakarta
Stuck on Java 7(ish)
Java language restrictions and problems
Why do we need Kotlin?
Jakarta
Java language restrictions and problems
- Inability to add method to platform types AKA extension
function (we usually ended up with: “Util”)
- Nullability problems (billions dollar mistake)
- Mutability problems (side effect? : ”oh no!”)
- Verbosity (will talk more later. Ex: parcelable, equal)
Extension Function
Extension Function
The Journey of Craftmanship – Kotlin in Action
Extension Function
Extension Function
Extension Function
more sample in
`SnackBarExtension.kt`
Nullability
Nullability
Nullability
Nullability
Nullability
You can specify @NonNull as
default
and annotate only @Nullable
type
The Journey of Craftmanship – Kotlin in Action
The Journey of Craftmanship – Kotlin in Action
Immutability
Imutable = final = thread safe
Immutability
Immutability
BadGood
- Prevent to change the property in middle
of transaction (should use copy)
- Prevent side effect (if you using pure
function)
- Creating new object every single time you
do copy. (this will cause a problem of you do
copy many object)
- Prevent the caller mutate the data
Immutability
Immutability
GO KOTLIN!!
Verbosity
Kotlin in Action - 14
The Journey of Craftmanship – Kotlin in Action
The Journey of Craftmanship – Kotlin in Action
The Journey of Craftmanship – Kotlin in Action
The Journey of Craftmanship – Kotlin in Action
The Journey of Craftmanship – Kotlin in Action
Kotlin is modern language
Concise, Safe, Expressive
Q & A
#DevFest18 #r_adiit “question”
https://github.com/radityagumay/gdgjakarta2018

More Related Content

PDF
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
PDF
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
PPTX
Componentize! by Lancer Kind XP Conference 2016
PPTX
Api NodeJS con PureScript
PPTX
Polar talks: code generation
PDF
shanghai
PDF
Eclipsecon 2010 - Scala Support in Eclipse
PDF
GDCR15 in Las Palmas, Gran Canaria
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
Componentize! by Lancer Kind XP Conference 2016
Api NodeJS con PureScript
Polar talks: code generation
shanghai
Eclipsecon 2010 - Scala Support in Eclipse
GDCR15 in Las Palmas, Gran Canaria

What's hot (20)

PDF
Coding Dojo: Adding Tests to Legacy Code (2014)
PPTX
London SDET Meetup main presentation - How SDET can transform your organisati...
PDF
RAVE EDC CODER certificate
PDF
Rave Query Management
PDF
Pair Programming (2015)
PDF
Code Retreat Venice (2016)
PPTX
Jak aspekty uporządkują twój kod.
PPTX
How aspects clean your code
PDF
Coding Dojo: Mars Rover (2014)
PDF
Brutal Coding Constraints (ITAKE 2017)
PDF
Coding Dojo: Asynchronous Clock-In (2016)
PDF
Java User Groups in Austria (2013)
PDF
Designing Test Cases for the Gilded Rose Kata v3 (2016)
PDF
Coding Dojo: Functional Calisthenics (2016)
PDF
Refactoring the Tennis Kata v2 (2016)
PPTX
Kotlin - A Programming Language
PDF
Software Craftsmanship Journeyman Tour (2013)
PDF
PDF
Mob Programming (2016)
PDF
Coding Dojo Object Calisthenics (2016)
Coding Dojo: Adding Tests to Legacy Code (2014)
London SDET Meetup main presentation - How SDET can transform your organisati...
RAVE EDC CODER certificate
Rave Query Management
Pair Programming (2015)
Code Retreat Venice (2016)
Jak aspekty uporządkują twój kod.
How aspects clean your code
Coding Dojo: Mars Rover (2014)
Brutal Coding Constraints (ITAKE 2017)
Coding Dojo: Asynchronous Clock-In (2016)
Java User Groups in Austria (2013)
Designing Test Cases for the Gilded Rose Kata v3 (2016)
Coding Dojo: Functional Calisthenics (2016)
Refactoring the Tennis Kata v2 (2016)
Kotlin - A Programming Language
Software Craftsmanship Journeyman Tour (2013)
Mob Programming (2016)
Coding Dojo Object Calisthenics (2016)
Ad

Similar to The Journey of Craftmanship – Kotlin in Action (20)

PPTX
Kotlin – Alternative oder Ergänzung zu Java?
PPTX
Intro to kotlin
PPTX
PPTX
Seven Points for Applying Java EE 7
PDF
The Java alternative to Javascript
PDF
Serverless Java Challenges & Triumphs
PDF
MicroProfile and Jakarta EE - What's Next?
PPTX
PDF
Java: Rumours of my demise are greatly exaggerated
PDF
Владимир Иванов (Oracle): Java: прошлое и будущее
PPTX
(java2days) Is the Future of Java Cloudy?
PPTX
JavaOne2015-What's in an Object?
PPTX
#JavaOne What's in an object?
PDF
What's New in IBM Java 8 SE?
PDF
Javaone 2014
PDF
At&T Interactive: The Many Facets Of Ruby
PDF
Davide Cerbo - Kotlin loves React - Codemotion Milan 2018
PDF
Kotlin tech talk
PPTX
TypeScript Vs. KotlinJS
PDF
Rocking the microservice world with Helidon-LAOUCTour2023.pdf
Kotlin – Alternative oder Ergänzung zu Java?
Intro to kotlin
Seven Points for Applying Java EE 7
The Java alternative to Javascript
Serverless Java Challenges & Triumphs
MicroProfile and Jakarta EE - What's Next?
Java: Rumours of my demise are greatly exaggerated
Владимир Иванов (Oracle): Java: прошлое и будущее
(java2days) Is the Future of Java Cloudy?
JavaOne2015-What's in an Object?
#JavaOne What's in an object?
What's New in IBM Java 8 SE?
Javaone 2014
At&T Interactive: The Many Facets Of Ruby
Davide Cerbo - Kotlin loves React - Codemotion Milan 2018
Kotlin tech talk
TypeScript Vs. KotlinJS
Rocking the microservice world with Helidon-LAOUCTour2023.pdf
Ad

More from raditya gumay (8)

PPTX
[Slide Deck] - Mobile Observability Internals at Gojek
PPTX
Slide Deck - Shift Left Beyond App Performance Improvement at Gojek_.pptx
PDF
Mathematical Morphology and Proposed JPEG Quantization in Image Steganography
PDF
Gojek Android Engineering at Scale vol 2
PPTX
Mobile engineering at GOJEK Scale
PPTX
Unidirectional Data Flow by using MVI and RxJava
PPTX
A journey through android development
PPTX
Firebase Predictions
[Slide Deck] - Mobile Observability Internals at Gojek
Slide Deck - Shift Left Beyond App Performance Improvement at Gojek_.pptx
Mathematical Morphology and Proposed JPEG Quantization in Image Steganography
Gojek Android Engineering at Scale vol 2
Mobile engineering at GOJEK Scale
Unidirectional Data Flow by using MVI and RxJava
A journey through android development
Firebase Predictions

Recently uploaded (20)

PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
DOCX
search engine optimization ppt fir known well about this
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
PDF
Unlock new opportunities with location data.pdf
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
Five Habits of High-Impact Board Members
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
August Patch Tuesday
Assigned Numbers - 2025 - Bluetooth® Document
Web Crawler for Trend Tracking Gen Z Insights.pptx
Final SEM Unit 1 for mit wpu at pune .pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
1 - Historical Antecedents, Social Consideration.pdf
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
A novel scalable deep ensemble learning framework for big data classification...
NewMind AI Weekly Chronicles – August ’25 Week III
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Univ-Connecticut-ChatGPT-Presentaion.pdf
search engine optimization ppt fir known well about this
Developing a website for English-speaking practice to English as a foreign la...
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
Unlock new opportunities with location data.pdf
A review of recent deep learning applications in wood surface defect identifi...
Taming the Chaos: How to Turn Unstructured Data into Decisions
Five Habits of High-Impact Board Members
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
August Patch Tuesday

The Journey of Craftmanship – Kotlin in Action

Editor's Notes

  • #23: Kotlin promoting immutable instead of use mutable keyword.
  • #27: Simple because kotlin has good tooling, can mixed both java and kotlin