Kotlin addresses several issues in Java by controlling null references in the type system, eliminating raw types, making arrays invariant, defining proper function types, allowing use-site variance without wildcards, and removing checked exceptions. It fixes null references by allowing nullable types and non-null types, provides null-safe calls and operators like Elvis and safe casts, and filters nulls from collections.