SlideShare une entreprise Scribd logo
1  sur  49
Intro to Kotlin
15.10.2015@Infinum Dino Sulić & Tomislav Homan
Content
● Java on Android - the bad parts
● Alternatives to Java
● Advantages of Kotlin
● (Possible) disadvantages
● Features
● …
● Migration to Kotlin
Content
● Java on Android - the bad parts
● Alternatives to Java
● Advantages of Kotlin
● (Possible) disadvantages
● Features
● …
● Migration to Kotlin
Java on Android - the bad parts
● Java 7 was out 2011. - partial support 2013.
● Java 8 was out 2014. - no support announced in the near future
● Null references
● Covariant arrays
● Raw types
● SAM types
● Checked exceptions
Content
● Java on Android - the bad parts
● Alternatives to Java
● Advantages of Kotlin
● (Possible) disadvantages
● Features
● …
● Migration to Kotlin
Alternatives to Java
● Xtend - Nice try, but very hard to work with in practice because
of IDE support
● Scala - We are engineers with deadlines, not scientists. Also 80k
methods
● Groovy - Very nice, but not type safe and adds over 30k
methods. IMHO best alternative - to our alternative :)
● Closure, etc, etc…
● Kotlin
Content
● Java on Android - the bad parts
● Alternatives to Java
● Advantages of Kotlin
● (Possible) disadvantages
● Features
● …
● Migration to Kotlin
Advantages of Kotlin (I)
● Modern statically typed, object oriented language that borrows
many ideas from functional languages
● Fast learning curve - inspired by Scala and C#. Scaled down
Scala :)
● Meant to be used for building large software systems
● Engineered to be highly interoperable with Java - you can use
existing code base w/o (many) problems
Advantages of Kotlin (II)
● The team behind it is JetBrains, creators of IntelliJ which is
Android Studio based on. Also has some contributions from
James Strachan - creator of Groovy
● Significantly more concise and readable than Java, which
means it’s easier to maintain
● Lightweight - Kotlin stdlib has 8k methods
● If it means something to someone - it also compiles to
Javascript
Content
● Java on Android - the bad parts
● Alternatives to Java
● Advantages of Kotlin
● (Possible) disadvantages
● Features
● …
● Migration to Kotlin
(Possible) disadvantages (I)
● Code generation - After a long struggle works with, for now,
limited support - Dagger 2 works
● Mocking and testing - managed to run AndroidTestCase with
Mockito, but no serious testing done
● IDE was still bit unstable few months ago, but it seems fine now
and it can only get better. But still be patient for now
(Possible) disadvantages (II)
● Java could break when using immutable collections returned
from Kotlin code
● New language that still evolves - teams need to establish code
conventions - still no "Effective Kotlin" :)
● Interoperability with new Jack and Jill compiler - should be all
right, but we have to monitor the situation
Content
● Java on Android - the bad parts
● Alternatives to Java
● Advantages of Kotlin
● (Possible) disadvantages
● Features
● …
● Migration to Kotlin
Features
Selection of features compared to
Java
First thing that one will notice is function declaration includes
keyword fun
Functions (I)
Parameter types are defined in Scala (Or Swift) way
Functions (II)
Default parameters come in handy
Functions (III)
Named parameters as a good substitution for builders
Functions (IV)
Functions are first-class Kotlin citizens
Functions (V)
Lambdas on Android? Not using Java
Functions (VI)
Lambdas on Android? Kotlin has them
Functions (VII)
Nice Retrofit example - cumbersome using Java
Functions (VIII)
Nice Retrofit example - pretty decent using Kotlin
Functions (IX)
Utility methods vs. extension functions
Functions (X)
Kotlin inferes types
Types (I)
It is difficult to write “final”. Kotlin makes it easier with val keyword
Types (II)
Java fields become Kotlin property. No need for getter / setters
unless you want to override them
Properties (I)
If you have the need for some validation…
Properties (II)
...you can still override accessors and access backing field
Properties (III)
Nothing to say here
Null safety (I)
You have to explicitly use nullable type if you want to allow nulls
Null safety (II)
If you use nulls though, safe calls, Elvis and smart casts are here to
help
Null safety (III)
Explicit vs. smart casts
Casting
In order to make this business logic right….
Data classes (I)
You have to do some work
Data classes (II)
In order to make this business logic right….
Data classes (III)
...you use data modifier
Data classes (IV)
Typical data repository
Collections (I)
Some business logic
Collections (II)
And lots of error prone work
Collections (III)
Same typical repository
Collections (IV)
Some business logic. Collections are really immutable
Collections (V)
But much less work
Collections (VI)
Just one more example...
Various (I)
...how Kotlin gets some things better
Various (II)
Out of scope
● Generics - variance, covariance, contravariance
● Annotations
● Reflection
● Operator overloading
● Type-safe builders
● Dynamic types
● Java interop
● …and lot more
● http://kotlinlang.org/docs/reference/
Content
● Java on Android - the bad parts
● Alternatives to Java
● Advantages of Kotlin
● (Possible) disadvantages
● Features
● …
● Migration to Kotlin
Migration to Koltin
● https://kotlinlang.org/docs/tutorials/kotlin-android.html
● Use convert code option - but check thoroughly afterwards
● Use clean code option after upgrading Kotlin version
● KotlinFrontEndException
● > sudo find . -name ".DS_Store" -depth -exec rm {} ;
● This list was much longer few months ago
Intro to kotlin

Contenu connexe

Tendances

Java Presentation
Java PresentationJava Presentation
Java Presentation
pm2214
 

Tendances (20)

Kotlin
KotlinKotlin
Kotlin
 
Jetpack Compose.pptx
Jetpack Compose.pptxJetpack Compose.pptx
Jetpack Compose.pptx
 
Jetpack Compose - Android’s modern toolkit for building native UI
Jetpack Compose - Android’s modern toolkit for building native UIJetpack Compose - Android’s modern toolkit for building native UI
Jetpack Compose - Android’s modern toolkit for building native UI
 
Kotlin Basics & Introduction to Jetpack Compose.pptx
Kotlin Basics & Introduction to Jetpack Compose.pptxKotlin Basics & Introduction to Jetpack Compose.pptx
Kotlin Basics & Introduction to Jetpack Compose.pptx
 
Introduction to kotlin for android app development gdg ahmedabad dev fest 2017
Introduction to kotlin for android app development   gdg ahmedabad dev fest 2017Introduction to kotlin for android app development   gdg ahmedabad dev fest 2017
Introduction to kotlin for android app development gdg ahmedabad dev fest 2017
 
Kotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime PerformanceKotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime Performance
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
Introduction to kotlin
Introduction to kotlinIntroduction to kotlin
Introduction to kotlin
 
Kotlin vs Java | Edureka
Kotlin vs Java | EdurekaKotlin vs Java | Edureka
Kotlin vs Java | Edureka
 
Introduction to Java 11
Introduction to Java 11 Introduction to Java 11
Introduction to Java 11
 
Introduction to Koltin for Android Part I
Introduction to Koltin for Android Part I Introduction to Koltin for Android Part I
Introduction to Koltin for Android Part I
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Jetpack Compose beginner.pdf
Jetpack Compose beginner.pdfJetpack Compose beginner.pdf
Jetpack Compose beginner.pdf
 
core java
core javacore java
core java
 
Android Development with Kotlin course
Android Development  with Kotlin courseAndroid Development  with Kotlin course
Android Development with Kotlin course
 
Android jetpack compose | Declarative UI
Android jetpack compose | Declarative UI Android jetpack compose | Declarative UI
Android jetpack compose | Declarative UI
 
Introduction to android testing
Introduction to android testingIntroduction to android testing
Introduction to android testing
 
Hibernate
HibernateHibernate
Hibernate
 

Similaire à Intro to kotlin

Effective Scala: Programming Patterns
Effective Scala: Programming PatternsEffective Scala: Programming Patterns
Effective Scala: Programming Patterns
Vasil Remeniuk
 

Similaire à Intro to kotlin (20)

Say Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android DevelopmentSay Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android Development
 
Modern Programming Languages - An overview
Modern Programming Languages - An overviewModern Programming Languages - An overview
Modern Programming Languages - An overview
 
Kotlin - A Programming Language
Kotlin - A Programming Language Kotlin - A Programming Language
Kotlin - A Programming Language
 
Kotlin
KotlinKotlin
Kotlin
 
Exploring Kotlin language basics for Android App development
Exploring Kotlin language basics for Android App developmentExploring Kotlin language basics for Android App development
Exploring Kotlin language basics for Android App development
 
Kotlin vs Java • Bapusaheb Patil • TechieAid Talk
Kotlin vs Java • Bapusaheb Patil • TechieAid TalkKotlin vs Java • Bapusaheb Patil • TechieAid Talk
Kotlin vs Java • Bapusaheb Patil • TechieAid Talk
 
Is this Swift for Android? A short introduction to the Kotlin language
Is this Swift for Android? A short introduction to the Kotlin languageIs this Swift for Android? A short introduction to the Kotlin language
Is this Swift for Android? A short introduction to the Kotlin language
 
Introduction_to_Kotlin.pptx
Introduction_to_Kotlin.pptxIntroduction_to_Kotlin.pptx
Introduction_to_Kotlin.pptx
 
Introduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTXIntroduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTX
 
The Journey of Craftmanship – Kotlin in Action
The Journey of Craftmanship – Kotlin in ActionThe Journey of Craftmanship – Kotlin in Action
The Journey of Craftmanship – Kotlin in Action
 
MOOC_PRESENTATION_KOTLIN[1].pptx
MOOC_PRESENTATION_KOTLIN[1].pptxMOOC_PRESENTATION_KOTLIN[1].pptx
MOOC_PRESENTATION_KOTLIN[1].pptx
 
moocs_ppt.pptx
moocs_ppt.pptxmoocs_ppt.pptx
moocs_ppt.pptx
 
Groovy android
Groovy androidGroovy android
Groovy android
 
Developers’ mDay u Banjoj Luci - Duško Bajić, Kotlin User Group Bosnia – Kotl...
Developers’ mDay u Banjoj Luci - Duško Bajić, Kotlin User Group Bosnia – Kotl...Developers’ mDay u Banjoj Luci - Duško Bajić, Kotlin User Group Bosnia – Kotl...
Developers’ mDay u Banjoj Luci - Duško Bajić, Kotlin User Group Bosnia – Kotl...
 
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor BuzatovićJavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
 
Everything You Were Taught About Java Is Wrong
Everything You Were Taught About Java Is WrongEverything You Were Taught About Java Is Wrong
Everything You Were Taught About Java Is Wrong
 
A short introduction to the Kotlin language for Java developers
A short introduction to the Kotlin language for Java developersA short introduction to the Kotlin language for Java developers
A short introduction to the Kotlin language for Java developers
 
Effective Scala: Programming Patterns
Effective Scala: Programming PatternsEffective Scala: Programming Patterns
Effective Scala: Programming Patterns
 
26 top angular 8 interview questions to know in 2020 [www.full stack.cafe]
26 top angular 8 interview questions to know in 2020   [www.full stack.cafe]26 top angular 8 interview questions to know in 2020   [www.full stack.cafe]
26 top angular 8 interview questions to know in 2020 [www.full stack.cafe]
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 

Dernier

CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Dernier (20)

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Intro to kotlin

  • 1. Intro to Kotlin 15.10.2015@Infinum Dino Sulić & Tomislav Homan
  • 2. Content ● Java on Android - the bad parts ● Alternatives to Java ● Advantages of Kotlin ● (Possible) disadvantages ● Features ● … ● Migration to Kotlin
  • 3. Content ● Java on Android - the bad parts ● Alternatives to Java ● Advantages of Kotlin ● (Possible) disadvantages ● Features ● … ● Migration to Kotlin
  • 4. Java on Android - the bad parts ● Java 7 was out 2011. - partial support 2013. ● Java 8 was out 2014. - no support announced in the near future ● Null references ● Covariant arrays ● Raw types ● SAM types ● Checked exceptions
  • 5. Content ● Java on Android - the bad parts ● Alternatives to Java ● Advantages of Kotlin ● (Possible) disadvantages ● Features ● … ● Migration to Kotlin
  • 6. Alternatives to Java ● Xtend - Nice try, but very hard to work with in practice because of IDE support ● Scala - We are engineers with deadlines, not scientists. Also 80k methods ● Groovy - Very nice, but not type safe and adds over 30k methods. IMHO best alternative - to our alternative :) ● Closure, etc, etc… ● Kotlin
  • 7. Content ● Java on Android - the bad parts ● Alternatives to Java ● Advantages of Kotlin ● (Possible) disadvantages ● Features ● … ● Migration to Kotlin
  • 8. Advantages of Kotlin (I) ● Modern statically typed, object oriented language that borrows many ideas from functional languages ● Fast learning curve - inspired by Scala and C#. Scaled down Scala :) ● Meant to be used for building large software systems ● Engineered to be highly interoperable with Java - you can use existing code base w/o (many) problems
  • 9. Advantages of Kotlin (II) ● The team behind it is JetBrains, creators of IntelliJ which is Android Studio based on. Also has some contributions from James Strachan - creator of Groovy ● Significantly more concise and readable than Java, which means it’s easier to maintain ● Lightweight - Kotlin stdlib has 8k methods ● If it means something to someone - it also compiles to Javascript
  • 10. Content ● Java on Android - the bad parts ● Alternatives to Java ● Advantages of Kotlin ● (Possible) disadvantages ● Features ● … ● Migration to Kotlin
  • 11. (Possible) disadvantages (I) ● Code generation - After a long struggle works with, for now, limited support - Dagger 2 works ● Mocking and testing - managed to run AndroidTestCase with Mockito, but no serious testing done ● IDE was still bit unstable few months ago, but it seems fine now and it can only get better. But still be patient for now
  • 12. (Possible) disadvantages (II) ● Java could break when using immutable collections returned from Kotlin code ● New language that still evolves - teams need to establish code conventions - still no "Effective Kotlin" :) ● Interoperability with new Jack and Jill compiler - should be all right, but we have to monitor the situation
  • 13. Content ● Java on Android - the bad parts ● Alternatives to Java ● Advantages of Kotlin ● (Possible) disadvantages ● Features ● … ● Migration to Kotlin
  • 14. Features Selection of features compared to Java
  • 15. First thing that one will notice is function declaration includes keyword fun Functions (I)
  • 16. Parameter types are defined in Scala (Or Swift) way Functions (II)
  • 17. Default parameters come in handy Functions (III)
  • 18. Named parameters as a good substitution for builders Functions (IV)
  • 19. Functions are first-class Kotlin citizens Functions (V)
  • 20. Lambdas on Android? Not using Java Functions (VI)
  • 21. Lambdas on Android? Kotlin has them Functions (VII)
  • 22. Nice Retrofit example - cumbersome using Java Functions (VIII)
  • 23. Nice Retrofit example - pretty decent using Kotlin Functions (IX)
  • 24. Utility methods vs. extension functions Functions (X)
  • 26. It is difficult to write “final”. Kotlin makes it easier with val keyword Types (II)
  • 27. Java fields become Kotlin property. No need for getter / setters unless you want to override them Properties (I)
  • 28. If you have the need for some validation… Properties (II)
  • 29. ...you can still override accessors and access backing field Properties (III)
  • 30. Nothing to say here Null safety (I)
  • 31. You have to explicitly use nullable type if you want to allow nulls Null safety (II)
  • 32. If you use nulls though, safe calls, Elvis and smart casts are here to help Null safety (III)
  • 33. Explicit vs. smart casts Casting
  • 34. In order to make this business logic right…. Data classes (I)
  • 35. You have to do some work Data classes (II)
  • 36. In order to make this business logic right…. Data classes (III)
  • 37. ...you use data modifier Data classes (IV)
  • 40. And lots of error prone work Collections (III)
  • 42. Some business logic. Collections are really immutable Collections (V)
  • 43. But much less work Collections (VI)
  • 44. Just one more example... Various (I)
  • 45. ...how Kotlin gets some things better Various (II)
  • 46. Out of scope ● Generics - variance, covariance, contravariance ● Annotations ● Reflection ● Operator overloading ● Type-safe builders ● Dynamic types ● Java interop ● …and lot more ● http://kotlinlang.org/docs/reference/
  • 47. Content ● Java on Android - the bad parts ● Alternatives to Java ● Advantages of Kotlin ● (Possible) disadvantages ● Features ● … ● Migration to Kotlin
  • 48. Migration to Koltin ● https://kotlinlang.org/docs/tutorials/kotlin-android.html ● Use convert code option - but check thoroughly afterwards ● Use clean code option after upgrading Kotlin version ● KotlinFrontEndException ● > sudo find . -name ".DS_Store" -depth -exec rm {} ; ● This list was much longer few months ago