Сравнение с языком программирования Java
##Некоторые проблемы Java, решённые в Kotlin
Kotlin решает целый ряд проблем, от которых страдает Java:
- Ссылки на null контролируются системой типов.
- Нет сырых (raw) типов
- Массивы в Kotlin инвариантны
- Kotlin имеет правильные функциональные типы и поддерживает их использование вместо SAM-типов из Java
- Вариативность на месте использования без подстановочных символов (или масок, ориг.: wildcards)
- В Kotlin нет проверяемых исключений
Что есть в Java, но нет в Kotlin
- Проверяемые исключения
- Примитивные типы, которые не являются классами
- Статичные члены
- Не-приватные поля
- Подстановочные символы (маски, wildcards)
Что есть в Kotlin, но нет в Java
- Лямбда-выражения + inline-функции = производительные и контролируемые пользовательские структуры
- Функции-расширения
- Null-безопасность
- Умные приведения
- Строковые шаблоны
- Свойства
- Первичный конструктор
- Делегирование на уровне языка
- Выведение типа для переменных и свойств
- Синглтоны на уровне языка
- Вариативность на уровне объявления и Проекции типов
- Интервалы
- Перегрузка операторов
- Вспомогательные объекты
- Классы данных
- Раздельные интерфейсы для изменяемых и неизменяемых коллекций
- Сопрограммы (корутины)