# Comparison Kotlin to Java Programming Language

Kotlin fixes some of the Java issues.

* Null references are controlled by the type system.
    
* No raw types
    
* Arrays in Kotlin are invariant
    
* Kotlin has proper function types, as opposed to Java’s SAM-conversions
    
* Use-site variance without wildcards
    
* Kotlin does not have checked exceptions
    

Java has below that kotlin does not have

* Checked exceptions
    
* Primitive types that are not classes
    
* Static members
    
* Non-private fields
    
* Wildcard-types
    
* Ternary-operator a ? b : c
    

What Kotlin has that Java does not

* Lambda expressions + Inline functions
    
* Extension functions
    
* Null-safety
    
* Smart casts
    
* String templates
    
* Properties
    
* Primary constructors
    
* First-class delegation
    
* Type inference for variable and property types
    
* Singletons
    
* Declaration-site variance & Type projections
    
* Range expressions
    
* Operator overloading
    
* Companion objects
    
* Data classes
    
* Separate interfaces for read-only and mutable collections
    
* Coroutines
    

@[Mansi Vaghela](@mansivaghela) [**LinkedIn**](https://www.linkedin.com/in/mansi-droid/) [**Twitter**](https://twitter.com/mansi_droid) [**Github**](https://github.com/mansi-droid) [**Youtube**](https://www.youtube.com/channel/UCoGcTjvUp32To72hQVe7iZw)
