$30 off During Our Annual Pro Sale. View Details »

Wondering in Kotlin Multiverse - Turing Community

Wondering in Kotlin Multiverse - Turing Community

🔊 Wajahat Karim talks about the history and evolution of Kotlin and how it got to Kotlin Multiplatform supporting all major targets like Android, iOS, Web, Desktops etc.

Video: https://youtu.be/ajyzYVB6Mic

This event was organized by Turing Community. https://community.turing.com/events/details/turing-apac-community-presents-whats-new-in-kotlin/

Wajahat Karim

April 04, 2022
Tweet

More Decks by Wajahat Karim

Other Decks in Education

Transcript

  1. Wondering in Kotlin Multiverse Wajahat Karim Google Developer Expert in

    Android wajahatkarim.com
  2. This is Wajahat Karim! - Google Developer Expert in Android

    - Over 8 years experience in Android - Open Source Contributor - Technical Blogs & Books Writer - Love to share my knowledge with others Follow me on Twitter @WajahatKarim Visit my website: wajahatkarim.com
  3. life begins at the end of your COMFORT ZONE -Neale

    Donald Walsch-
  4. Modern Language

  5. None
  6. 2016 2017 2018 2019 2020 2022 Kotlin Timeline

  7. 2016 2017 2018 2019 2020 2022 1.0 Kotlin Timeline

  8. 2016 2017 2018 2019 2020 2022 1.0 Google I/O: Kotlin

    Officially supported language for Android Kotlin Timeline
  9. 2016 2017 2018 2019 2020 2022 1.0 Google I/O: Kotlin

    Officially supported language for Android Google I/O: Android goes Kotlin-first Kotlin Timeline
  10. 2016 2017 2018 2019 2020 2022 1.0 Google I/O: Kotlin

    Officially supported language for Android Google I/O: Android goes Kotlin-first Coroutines Preferred Kotlin Timeline
  11. Kotlin Timeline 2016 2017 2018 2019 2020 2022 1.0 Google

    I/O: Kotlin Officially supported language for Android Google I/O: Android goes Kotlin-first You are here Coroutines Preferred
  12. WHY KOTLIN?

  13. Expressiveness Safety Interoperability Structured concurrency

  14. - Google Preferred Language - Statistically typed - Type Inference

    - Developed by Jetbrains - Concise - 100% interoperable with Java - Null Safety - And many more.
  15. Java vs Kotlin

  16. Java to Kotlin

  17. Tools For Kotlin.

  18. class MainActivity : AppCompatActivity () { override fun onCreate(savedInstanceState: Bundle?)

    { ... fab.setOnClickListener { view -> Snackbar.make(view, "Hello ${name.capitalize()}", Snackbar.LENGTH_LONG).show() } fab.backgroundTintList = backgroundTintList } } A Wide Kotlin Example
  19. class MainActivity : AppCompatActivity () { override fun onCreate(savedInstanceState: Bundle?)

    { ... fab.setOnClickListener { view -> Snackbar.make(view, "Hello ${name.capitalize()}", Snackbar.LENGTH_LONG).show() } fab.backgroundTintList = backgroundTintList } } Nullability in the type system A Wide Kotlin Example
  20. class MainActivity : AppCompatActivity () { override fun onCreate(savedInstanceState: Bundle?)

    { ... fab.setOnClickListener { view -> Snackbar.make(view, "Hello ${name.capitalize()}", Snackbar.LENGTH_LONG).show() } fab.backgroundTintList = backgroundTintList } } Nullability in the type system Lambdas A Wide Kotlin Example
  21. class MainActivity : AppCompatActivity () { override fun onCreate(savedInstanceState: Bundle?)

    { ... fab.setOnClickListener { view -> Snackbar.make(view, "Hello ${name.capitalize()}", Snackbar.LENGTH_LONG).show() } fab.backgroundTintList = backgroundTintList } } Nullability in the type system Lambdas Extension functions A Wide Kotlin Example
  22. class MainActivity : AppCompatActivity () { override fun onCreate(savedInstanceState: Bundle?)

    { ... fab.setOnClickListener { view -> Snackbar.make(view, "Hello ${name.capitalize()}", Snackbar.LENGTH_LONG).show() } fab.backgroundTintList = backgroundTintList } } Nullability in the type system Lambdas Template expressions Extension functions A Wide Kotlin Example
  23. class MainActivity : AppCompatActivity () { override fun onCreate(savedInstanceState: Bundle?)

    { ... fab.setOnClickListener { view -> Snackbar.make(view, "Hello ${name.capitalize()}", Snackbar.LENGTH_LONG).show() } fab.backgroundTintList = backgroundTintList } } Nullability in the type system Lambdas Template expressions Extension functions Property access syntax for getters and setters A Wide Kotlin Example
  24. • Data Classes • Extension Methods • Elvis Operator •

    Properties • Default Parameters • Type Aliases • Named Parameters • Spread Operator • Auto Casts • Covariance • Null Safety • Operator Overloading • Type Inference • DSL Support • Type-Safe Builders • Coroutines • String Interpolation • Ranges • Map Array Syntax • Inline Functions • Sealed Classes • Delegation • Destructuring • KDoc
  25. But wait….

  26. None
  27. None
  28. None
  29. None
  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. None
  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. None
  48. None
  49. • Advantages over Java 7 are overwhelming • Java 8

    introduced • Lambdas • Null safety (“Optional” class) • Default methods • Streams API • New Date & Time API Java strikes back with Java 8
  50. • Is more elegant, concise and safe • Has more

    cool stuff But even with Java 8 Kotlin still...
  51. Resources • https://kotlinlang.org/ • https://play.kotlinlang.org/ • https://developer.android.com/courses/fundamentals-training/toc-v2

  52. Thank you for listening... @WajahatKarim wajahatkarim.com youtube.com/c/wajahatkarim3