Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Java против Kotlin: стоит ли использовать Kotlin для разработки под Android?

by
Length:MediumLanguages:
This post is part of a series called Coding Android Apps in Kotlin.
Coding Functional Android Apps in Kotlin: Getting Started

Russian (Pусский) translation by Anna k.Ivanova (you can also view the original English article)

Когда вы думаете о разработке под Android, то сразу же приходит на ум один язык программирования: Java.

Хотя большинство приложений для Android написано на Java, правда, когда речь идет о разработке под Android, Java - не единственный вариант.

Вы можете писать приложения для Android на любом языке, который можно компилировать и запускать на виртуальной машине Java (JVM), и ваши конечные пользователи от этого не станут мудрее. Одним из JVM-совместимых языков программирования, который действительно привлек внимание сообщества Android, является Kotlin, язык программирования со статической типизацией от JetBrains.

Если вы слышали что-то хорошее о Kotlin и хотите попробовать сами, то вы попали в нужное место. В этой серии из трех частей я поделюсь всем, что вам нужно знать, чтобы начать использовать Kotlin для разработки под Android.

В этой первой части я расскажу о том, почему вы, как разработчик Android, могли бы в первую очередь подумать о переходе с Java, а затем я рассмотрю плюсы и минусы выбора Kotlin в качестве замены Java. К концу этой статьи вы получите полное представление о том, что может предложить Kotlin, и узнаете, подходит ли он вам.

Во второй части мы рассмотрим, как настроить установку Android Studio для поддержки Kotlin и создать простое приложение для Android, полностью написанное на Kotlin. С этими основами в третьей части мы рассмотрим, как сделать вашу разработку Android более насыщенной, используя некоторые более продвинутые функции языка Kotlin.

Зачем мне переходить с Java?

Хотя Java является одним из наиболее широко используемых языков программирования в мире и в значительной степени является официальным языком разработки под Android, существует множество причин, по которым Java не всегда может быть лучшим вариантом для ваших проектов Android.

Самая большая проблема заключается в том, что Java не является современным языком, и хотя Java 8 стала огромным шагом вперед для платформы, представив множество функций, которых ожидали разработчики (включая лямбда-функции), на момент написания статьи Android поддерживает только подмножество функций Java 8. Кажется маловероятным, что разработчики Android в скором времени пожнут все преимущества Java 8, поэтому в обозримом будущем, если вы захотите использовать Java в своих проектах Android, то вы в значительной степени застряли на Java 7.

У Java в целом также есть довольно хорошо документированные языковые проблемы, в том числе бесконечные блоки try-catch, отсутствие расширяемости, нулевая небезопасность (и это печально известное исключение NullPointerException), не говоря уже об отсутствии поддержки функциональных функций программирования. Хотя Java начинает добавлять некоторые функциональные элементы программирования, такие как лямбда-выражения и функциональные интерфейсы, в своей основе Java все еще является процедурным языком. Синтаксис Java также довольно многословен, особенно по сравнению со многими современными языками программирования.

Преимущества Котлина

Таким образом, вы можете рассмотреть возможность перехода на один из многих современных языков программирования, которые предназначены для работы на JVM. Хотя нет недостатка в языках, компилируемых в байт-код Java, есть несколько факторов, которые выделяют Kotlin из общей массы:

Взаимозаменяемость с Java

Одной из самых сильных сторон Kotlin в качестве потенциальной альтернативы Java является явный уровень взаимодействия между Java и Kotlin - вы даже можете иметь код Java и Kotlin, существующий бок о бок в одном проекте, и все будет отлично компилироваться. Ниже вы можете увидеть пример проекта, который состоит из Java Activity и Kotlin Activity.

A project consisting of a Kotlin Activity and a Java Activity

Фактически, после того как ваш смешанный проект Kotlin и Java скомпилирован, пользователи не смогут определить, какие части вашего проекта написаны на Java, а какие - на Kotlin.

Поскольку классы Kotlin и Java могут существовать бок о бок в одном и том же проекте, вы можете начать использовать Kotlin без необходимости делать что-либо радикальное, например, конвертировать весь проект в Kotlin или запускать новый проект специально, чтобы вы могли попробовать свои силы в Kotlin.

Благодаря этому уровню совместимости, если у вас есть проект, над которым вы уже работаете, вы можете опробовать Kotlin в небольшой части этого проекта, не затрагивая остальную часть вашего кода. И, если вы решите, что хотите продолжать использовать Kotlin, вы можете либо перенести существующий Java-код вашего проекта в Kotlin по одному файлу за раз, либо оставить прежний Java-код вашего проекта без изменений и использовать Kotlin только для новых классов и функций.

Поскольку Kotlin полностью совместим с Java, вы также сможете использовать большинство Java-библиотек и фреймворков в своих проектах Kotlin - даже сложные платформы, основанные на обработке аннотаций.

Легкая кривая обучения

Kotlin стремится быть улучшением Java, а не полным переписыванием, поэтому многие навыки, которые вы приобрели и оттачивали на протяжении всей своей карьеры в Java, должны быть применимы к вашим проектам Kotlin.

Kotlin также разработан, чтобы иметь мягкую кривую изучения для разработчиков Java. Разработчики Java должны обнаружить, что большая часть синтаксиса Kotlin кажется им знакомой; например, код, который используется для создания нового класса в Kotlin, очень похож на Java:

Kotlin также разработан, чтобы быть интуитивно понятным и простым для чтения, поэтому даже если вы столкнетесь с каким-то радикально отличающимся кодом, вы все равно сможете понять суть того, что делает этот код.

Объедините лучшее из функционального и процедурного программирования

В настоящее время существует ряд программных парадигм, которые широко используются, но когда дело доходит до вопроса «какой подход является лучшим», нет простого ответа. Каждая парадигма программирования имеет свой набор сильных и слабых сторон, поэтому, хотя нет недостатка в сценариях, в которых функциональное программирование имеет преимущество, существует также множество проблем, когда процедурный подход более эффективен.

Так почему вы должны выбирать между функциональным и процедурным? Как и многие современные языки программирования, Kotlin стремится предложить вам лучшее из обоих миров, комбинируя концепции и элементы как процедурного, так и функционального программирования.

Первоклассная поддержка Android Studio

Kotlin разработан JetBrains, компанией IntelliJ - IDE, на которой основана Android Studio. Поэтому неудивительно, что Android Studio имеет отличную поддержку Kotlin. После того, как вы установили плагин Kotlin, Android Studio делает настройку Kotlin в вашем проекте так же просто, как открытие нескольких меню.

You can configure your project to use Kotlin with just a few mouse clicks

После того, как вы настроите плагин Kotlin для Android Studio, у вашей IDE не будет проблем с пониманием, компиляцией и запуском кода Kotlin. Android Studio также обеспечивает отладку, автозаполнение, навигацию по коду, модульное тестирование и полную поддержку рефакторинга для Kotlin.

После того, как ваш проект Android Studio настроен на поддержку Kotlin, вы даже сможете конвертировать весь исходный файл Java в файл Kotlin всего несколькими щелчками мыши.

Более краткий код

Если вы сравните класс Java и класс Kotlin, которые дают одинаковые результаты, класс, написанный на Kotlin, обычно будет гораздо более кратким и компактным, чем класс, написанный на Java. И, как знает каждый разработчик, меньше кода означает меньше ошибок!

Например, следующий код Java создает действие, состоящее из кнопки с плавающим действием (FAB), при нажатии на которую отображается панель с полезными сообщениями.

Эквивалент Kotlin выполняет ту же работу в меньшем количестве кода, особенно когда речь идет о создании FAB и установке onClickListener:

Оба фрагмента кода имеют одинаковый вывод:

An example of a simple Android app that can be written in Java or Kotlin

Kotlin особенно хорош в уменьшении количества стандартного кода, который вам нужно написать, что должно сделать кодирование на Kotlin гораздо более приятным, по сравнению с кодированием на более многословных языках, таких как Java.

В частности, расширения Kotlin для Android (которые мы рассмотрим во второй части) позволяют импортировать ссылку на представление в файл действия, поэтому вы можете работать с представлением, как если бы оно было частью этого действия. Это означает, что вам больше не нужно идентифицировать каждое представление, используя findViewById, который может преобразовывать код, такой как:

В гораздо более сжатые:

В чем подвох?

Ни один язык программирования не идеален, поэтому, хотя у Kotlin есть что предложить разработчикам Android, нужно помнить о некоторых недостатках:

Дополнительный размер среды выполнения

Стандартная библиотека Kotlin и среда выполнения увеличат размер вашего .apk. Хотя это всего лишь около 800 КБ, если ваше приложение уже находится на большой стороне, эти дополнительные 800 КБ могут перевернуть его и заставить пользователей дважды подумать, прежде чем загружать ваше приложение.

Начальная читаемость кода

Хотя лаконичный синтаксис Kotlin является одной из самых сильных сторон языка, вначале вам может показаться, что некоторые Kotlin трудно расшифровать просто потому, что в таком небольшом количестве кода происходит так много всего. Java может быть более многословным, но положительным моментом является то, что все четко прописано, что означает, что незнакомый код Java легче расшифровать, чем незнакомый Kotlin.

Кроме того, при неправильном использовании перегрузка операторов Kotlin может привести к трудностям при чтении кода.

Отсутствие официальной поддержки

Kotlin может иметь отличную поддержку в Android Studio, но стоит помнить, что Kotlin официально не одобрен Google.

Кроме того, автоматическое заполнение и компиляция Android Studio, как правило, выполняется немного медленнее, когда вы работаете с Kotlin, по сравнению с проектом на чистом Java.

Меньшее сообщество и менее доступная помощь

Поскольку Kotlin является относительно новым языком, сообщество Kotlin все еще довольно мало, особенно по сравнению с сообществом, окружающим более устоявшиеся языки, такие как Java. Если вы переключитесь на Kotlin, то у вас может не быть доступа к одному и тому же количеству учебников, публикаций в блогах и пользовательской документации, и вы можете столкнуться с меньшей поддержкой сообщества в таких местах, как форумы и переполнение стека. На момент написания, поиск Kotlin в Stack Overflow возвращает чуть более 4600 постов, помеченных Kotlin, по сравнению с колоссальными 1 000 000 постов, которые содержат тег Java.

Заключение

В первом посте из этой серии из трех частей мы рассмотрели, почему вы можете подумать о том, чтобы переключить Java-часть разработки для Android на один из более современных, JVM-совместимых языков. Мы также более подробно рассмотрели уникальные преимущества и недостатки Kotlin как потенциальной замены Java.

Если вы взвесили все «за» и «против» и решили попробовать Kotlin, во второй части этой серии я покажу вам, как использовать Android Studio для создания простого приложения для Android, полностью написанного на Kotlin. Мы также рассмотрим, как вы можете использовать Kotlin, чтобы вам больше никогда не приходилось писать еще один findViewById!

А пока ознакомьтесь с некоторыми другими нашими учебниками по разработке для Android здесь, на Envato Tuts +!


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.