In this chapter, we've taken a deeper look at the implications of adding Kotlin to an existing Java code base and managing interop between the two languages. We explored how Kotlin code can be used from Java, and examined some of the associated challenges, such as differences in type safety and the lack of static.
We also examined how existing Java code can be used easily from Kotlin. We looked at some common Kotlin idioms, such as favoring top-level functions and extension functions, and the impact they can have on how you write and consume helper classes/methods. Lastly, we examined some of the practical impacts of having multiple languages in a single project, such as project structure and increased complexity.
This has provided a solid background for interop between Kotlin and Java, but there's more to the story. In the next chapter, we'll look at how...