Kotlin is a statically typed programming language designed to interoperate with Java and fully supported by Google on the Android operating system.
Based on Big Nerd Ranchs popular Kotlin Essentials course, and written for Kotlin 1.4, this guide shows you how to work effectively with the Kotlin programming language through hands-on examples and clear explanations of key Kotlin concepts and foundational APIs.
Whether you are an experienced Android developer looking for modern features beyond what Java offers or a new developer ready to learn your first programming language, the authors will guide you from first principles to advanced usage of Kotlin. By the end of this book, you will be empowered to create reliable, concise applications in Kotlin.
Mediocre hands-on Kotlin book that covers most of the basics. Expect to do a lot of refactoring from chapter to chapter since there is one big project for the first part of the book, that you will be modifying constantly. What is good: - Relatively recent edition that covers modern Kotlin. Language is constantly being developed so sometimes your only source will be documentation and no book will catch up with that; - Hands on. Like it or hate it, it's practical and you can see the results;
What's bad: - One project you will be refactoring for the first part of the book and another for the second. If you don't like text based games or don't feel the topic, you're out of luck; - Refactoring means you will not be able to keep several approaches to the same problem without bothering with version control. That's very bad since you will be essentially deleting the code you have written and won't be able to look back at how things could have been done differently; - Weird organization: functional tools are being reviewed before OOP. Given how Kotlin is made and how a lot of people are either from Java or other OOP languages, that's very weird. Classes should be introduces first! - Unbalanced complexity between first and the second parts. If Madrigal project is very beginner-friendly, Advanced part with flight tracking system is outrageously bad: you will get the only one diagram for coroutines and that's it. - Dependencies in recent Kotlin (1.7+) are expressed differently and there's nothing on the Big Nerd forums considering it, so to make your code work use the syntax like implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") - Flows are even worse than coroutines. Too practical and too hard to understand.
Where to go from there?
For basic Kotlin I would recommend the second edition of Kotlin in Depth and for coroutines... A mix of recent articles, official docs and probably Coroutines by Tutorials.