Обзор особенностей языка программирования Kotlin
Автор: Колмакова Е.Н.
Журнал: Теория и практика современной науки @modern-j
Рубрика: Основной раздел
Статья в выпуске: 3 (9), 2016 года.
Бесплатный доступ
Статья посвящена обзору языка программирования Kotlin. Описаны его преимущества перед другими языками. Рассмотрены основные возможности, отсутствующие в Java.
Языки программирования, функции
Короткий адрес: https://sciup.org/140268308
IDR: 140268308
Текст научной статьи Обзор особенностей языка программирования Kotlin
В наши дни существует множество языков программирования, среди которых есть действительно мощные и многофункциональные. Но ни один синтаксис не является универсальным. Потому, появление новых языков явление довольное частое. Рассмотрим Kotlin, один из таких языков, который подает большие надежды на будущее.
Kotlin - это новый статически типизированный язык программирования, ориентированный на платформу Java. Его главные особенности прежде всего направлены на безопасность, выразительность, краткость и универсальность кода. Однако история разработки «альтернативных» Java языков насчитывает более десятилетия, поэтому у Kotlin немало конкурентов - Scala, Fantom и Gosu, да и сама Java тоже не стоит на месте. Но всё же Kotlin имеет хорошие перспективы, и тому есть несколько причин.
Во-первых, компания JetBrains, которая занимается созданием языка, хорошо разбирается в современных инструментах разработки и за долгое время существования накопила большой опыт в области языков программирования, а также собрала сильную команду специалистов. Kotlin приходит к нам из индустрии, а не научного сообщества. Он решает реальные проблемы, с которыми сталкиваются работающие программисты сегодня.
Во-вторых, необходимость создания нового языка существует давно, но создать такой язык, который бы позволил взять (огромную) готовую кодовую базу Java, обычных Java-разработчиков, дать им новый инструмент и более эффективно продолжать разработку — такого инструмента до появления Kotlin не существовало.
Каковы же основные особенности этого языка?
Null-безопасность. Null Pointer Exception одна из самых распространённых ошибок во многих языках программирования, в том числе и Java. Например, если создать строку, присвоить ей значение null и вызвать её в каком-нибудь методе, то во время выполнения мы получим Null Pointer Exception. В Kotlin мы получим ошибку еще на этапе компиляции. Таким образом, возможно заранее определить, будет ли переменной безопасной и содержать значение null или нет.
Отсутствие сырых типов (raw types) – обобщённых типов, употребляемых без параметров. Основной недостаток применения таких типов — потеря типовой безопасности, обеспечиваемой настраиваемыми типами. Бывает, что иногда ничего неизвестно о типе аргумента, но по-прежнему есть необходимость использовать его безопасным способом. Верным путем здесь будет написать, что мы имеем дело с объектом, не потребляющим никаких значений неизвестных типов, и имеющего верхнюю границу соответствующего параметра. Kotlin обеспечивает сокращенный синтаксис для этого: в записи Foo <*> означает
Foo
Отсутствие проверяемых исключений . Механизм проверяемых исключений основан на добавлении метод класса описание в явном виде всех исключений, которые он может сгенерировать. Кроме того, функция, вызывающая метод с объявленными исключениями, для каждого из них должна содержать обработчик, либо указывать этот тип как генерируемый ею в своём описании.
Например, интерфейс JDK, реализованный классом StringBuilder Appendable append (CharSequence csq) throws IOException;
В этом коде описывается, что каждый раз при добавлении чего-либо к строке, эти исключения IOExceptions должны быть обработаны.
Зачем? Потому что это может быть выполнение операций ввода - вывода (Writer также реализует Appendable). Так что это приводит к такого рода кода во всех местах:
Шаблоны строк . Эта особенность позволяет уменьшить объем код а. Так, при формировании строки в Java приходится использовать конкатен ацию, чтобы поместить значение переменной в середину строки.
val apples = 4
println("I have " + apples + " apples.")
В Kotlin все гораздо проще, достаточно добавить к имени переменной знак $.
val apples = 4
println("I have $apples apples.")
Свойства. Типичный класс Java представляет наличие приватных полей и методов getter и setter. Это слишком шаблонно и Kotlin позволяет реализовать это лучше. Необходимо определить поля класса как переменные, и они являются публичными по умолчанию, а об инкапсуляции заботится компилятор, который самостоятельно генерирует getter и setter.
Классы-расширения. Это одна из самых мощных возможностей в Kotlin. Она заключается в возможности определить метод для типа отдельно от его объявления. Ниже мы имеем функцию, которая проверяет, если мы запустили версию Lollipop или выше, то она принимает целое число в качестве аргумента:
public fun isLollipopOrGreater(code: Int): Boolean { return code >= Build.VERSION_CODES.LOLLIPOP }
Но мы можем изменить его к функции расширения, поставив тип и точку перед именем функции, и используя ключевое слово this:
public fun Int.isLollipopOrGreater(): Boolean { return this >= Build.VERSION_CODES.LOLLIPOP
}
И теперь можно вызвать эту функцию из числа
16.isLollipopOrGreater()
Это может быть любое целое число или литерал, также возможно сделать для final классов. Данные методы могут быть определены в любом месте. Все это увеличивает понятность и читаемость кода.
Классы данных. Иногда возникает необходимость написать класс, который ничего не делает, а только хранит данные. В Kotlin для такого существуют классы данных, которые помечается как data:
data class Human (val name : String , val age : Int)
В данном случае компилятор, генерирует в классе Human несколько стандартных методов: equals()/hashCode(), toString() и component1(), component2(), copy(). Все эти функции используют свойства класса, объявленные в первичном конструкторе. Так, component1() возвращает name, а component2() — age. Кроме того, классы данных дают возможность возвращать несколько значений из функции, не используя кортежи, что значительно улучшает читаемость кода.
Функции высшего порядка, то есть функции, которые могут возвращать функции передавать в качестве параметров, возвращать из других функций, а также лямбда-выражения или анонимные функции -это функции, которые не объявлены, не имеют названия, но передаются как выражение.
В заключение можно сказать, что многие особенности Kotlin не новы, и пришли из других языков, но их очень ждали именно в Java. Количество проектов на нем становится все больше и больше, в будущем Kotlin мог бы стать хорошей заменой Java в больших проектах и удобным инструментом для создания небольших проектов, благодаря своей простоте гибкости, дающих разработчику больше возможностей для написания быстрого и качественного кода.
Список литературы Обзор особенностей языка программирования Kotlin
- Официальный сайт языка программирования Kotlin [Электронный ресурс] URL: http://kotlinlang.org
- Многофункциональный сайт Хабрахабр [Электронный ресурс] / URL: http://habrahabr.ru