Обзор особенностей языка программирования 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 , где Bar является верхней границей для параметра типа 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
Статья научная