Русский
Русский
English
Статистика
Реклама

Повышение производительности с Kotlin

Я недавно написал статью о нововведениях в Kotlin 1.4.20. И первый комментарий оказался немного несправедливым по отношению к Kotlin.

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

И ко всем этому очень много кода Android Framework написаны на Java, а точнее больше 50%!

Перед тем, как я поделюсь своим мнением и изложу сей рассказ, попрошу пожалуйста не бить меня стульями :)

Ну что ж, начнем со статистики!

Что говорят профессиональные разработчики?

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

Результат такой:

67 % опрошенных профессиональных Android разработчиков, которые используют Kotlin, сказали, что он повышает их производительность!

Данные опроса выложила Florina Muntenescu (Android Developer Advocate)

Конечно в этот опрос входят не все, кто использует Kotlin, и вообще он не 100% точный.

Но такие моменты имеют немалый вес и их стоит учитывать, если вы начинаете свою карьеру в мобильной разработке.

Что говорят партнеры Google и другие компании, которые принимали участие в статистики?

Профессиональные Android разработчики указали на некоторые весьма важные характеристики Kotlin:

  1. Краткость - меньше кода, меньше тестов и меньше времени на отладку. Такой код легче читать и поддерживать

  2. Простота - несомненно Kotlin проще Java

Мнение одной из команд Flipkart:

Во время внутреннего опроса, 50% разработчиков отметили, что они сделали бы за меньшие сроки функционал приложения, если бы модуль был бы написан на Kotlin.

Немного статистики от компании Cash App:

Когда команда Cash App начала использовать Kotlin, они избавились от Builder паттерн и сократили кол-во кода, который им нужно было написать (в некоторых случаях они сэкономили 25% на размере кода).

Также о краткости и лаконичности Kotlin говорят ребята из компании Zomato в этом видео

От компании Duolingo

Duolingo - это одна из самых популярных платформ для изучения иностранных языков и одно из наиболее загружаемых приложений в Google Play (более 100 млн. загрузок).

В прошлом их кодовая база увеличивалась каждый код на 46% (добавление новых функций, различные обновления библиотек и т.д.). Поэтому они приняли решение переписать приложение на Kotlin.

На это ушло порядка двух лет. Их усилия не прошли даром: несмотря на введение новых функций, они сократили свою кодовую базу до тех размеров, которые были 2 года назад!

Внутренние опросы показали, что удовлетворенность разработчиков возрасла, что неудивительно!

Они заметили один интересный факт: при конвертировании Java файла в Kotlin количество строк кода в среднем сокращается на 30%, а в некоторых случаях более чем на 90%!

Kotlin функциональность и продуктивность

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

1) Добавить множество конструкторов

2) Добавить Build паттерн

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

Вот так выглядит страшный класс с использованием Builder паттерна на Java:

public class Task {     private final String name;     private final Date deadline;     private final TaskPriority priority;     private final boolean completed;     private Task(String name, Date deadline, TaskPriority priority, boolean completed) {         this.name = name;         this.deadline = deadline;         this.priority = priority;         this.completed = completed;     }     public static class Builder {         private final String name;         private Date deadline;         private TaskPriority priority;         private boolean completed;         public Builder(String name) {             this.name = name;         }         public Builder setDeadline(Date deadline) {             this.deadline = deadline;         return this;         }         public Builder setPriority(TaskPriority priority) {             this.priority = priority;             return this;         }         public Builder setCompleted(boolean completed) {             this.completed = completed;             return this;         }         public Task build() {             return new Task(name, deadline, priority, completed);         }     }}

Тот же самый класс на Kotlin (с дополнительной реализацией hashCode(), equals() и некоторыми другими плюшками):

data class Task(     val name: String,     val deadline: Date = DEFAULT_DEADLINE,     val priority: TaskPriority = TaskPriority.LOW,     val completed: Boolean = false)

Это впечатляет!

А вот ещё пример с применением паттерна Singleton на Java:

public class Singleton{    private static volatile Singleton INSTANCE;    private Singleton(){}    public static Singleton getInstance(){        if (INSTANCE == null) {                // Single Checked            synchronized (Singleton.class) {                if (INSTANCE == null) {        // Double checked                    INSTANCE = new Singleton();                }            }        }        return INSTANCE;    }    private int count = 0;    public int count(){ return count++; } }

На Kotlin:

object Singleton {     private var count = 0     fun count(): Int {         return count++     } }

Подобные вещи сильно упрощают разработку и помогают избавиться от шаблонного кода.

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

fun borrow(){    library -= book // используется operator overloading    val (title, author) = book // деструктуризация data класса    println("Borrowed $title") // шаблон строки}

Помимо лаконичности и простоты, Kotlin вводит дополнительный синтаксис при работе с null ссылками:

var str: String? = null // Разработчик, знает, // что str может ссылаться на null        println(str?.length) // Обращение происходит через Safe (?) оператор    val len = str?.length ?: 0 // значение 0, если str ссылается на nullvar listOf: List<String>? = null // может ссылаться на nulllistOf?.filter { it.length > 3 } // можно использовать цепочки    ?.map { it.length }      ?.forEach { println("Length more 3 -> $it") }

А также в Android предусмотрены дополнительные расширения для Kotlin, которые позволяют сделать код меньше и проще, например:

@Injectlateinit var viewModelFactory: MyViewModelFactoryprivate val viewModel by viewModels<MyViewModel> { viewModelFactory }

Большинство современных библиотек поддерживают Kotlin расширения, например:

dependencies {  implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'implementation "androidx.room:room-ktx:$room_version"        implementation "androidx.paging:paging-runtime-ktx:$paging_version"    }

Заключение

Java довольно мощный и высоко развитый язык, но по моему мнению, Kotlin в будущем будет использоваться более 95% мобильными разработчиками, а Java останется на заднем плане.

Но это не весомый аргумент тому, что о Java можно забыть в мобильной разработке, хотя по большей части можно :)

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

Полезные ссылки:

  1. Статья на Medium от Florina Muntenescu (Android Developer Advocate)

  2. Twitter аккаунт Florina Muntenescu

  3. Twitter аккаунт Android Developers

  4. Duolingo перешла на Kotlin

  5. Android Developers Store: Zomato использует Kotlin чтобы сделать код более безопасным и лаконичным

Источник: habr.com
К списку статей
Опубликовано: 14.01.2021 18:11:53
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Java

Разработка под android

Kotlin

Android development

2021

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru