Опишите ваш проект
Наши специалисты свяжутся с вами в ближайшее время
Отправив запрос вы получаете:
  • Письмо или звонок от нашего менеджера
  • Оценку своего проекта
  • Личную встречу, при необходимости
  • Конфиденциальность гарантирована!
maxim_kaschjev
Ваш менеджер
Максим Кащеев
С удовольствием ответим на все ваши вопросы
Задать вопрос
Project Management

Kotlin vs Java: ТОП-7 преимуществ

ТОП-7 преимуществ программирования мобильных приложений под Android – Android-разработчику.

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

В ответ на мой вопрос, о причинах перехода на Kotlin, разработчики рассказывают, что хотя язык и разрабатывается с 2010 года, первый стабильный релиз вышел в феврале 2016 года, а в мае 2017 Google включил Kotlin в Android Studio 3.0, а это означает, что язык юзабельным для большинства разработчиков.

История

В качестве аргументации создатели Kotlin говорят о том, что Java накопила целый багаж неудачных решений, которые уже никак не поменять, именно поэтому необходим язык с более приятным синтаксисом для разработчиков. Интересна история названия языка - создатели Kotlin решили пойти по пути нейминга Java (известный нам остров Ява или же Jawa) и “поплавали” по Финскому заливу, где нашли остров Kotlin.

Погуглив это название, разработчики узнали, что таким именем назывался миноносец Советского военно-морского флота:

Kotlin vs Java: ТОП-7 преимуществ

NATO называют его Kotlin Class destroyer, а создатели языка в ответ шутят: Kotlin is not meant for class destruction but any means.

Топ 7 лучших преимуществ по мнению Artjoker

1 Nullsafe

1
2
3
4
5
6
7
8
9
fun foo(title: String?, number: Int) {
 
    if (title != null) {        // required!
        print(title.length)
    }
 
    title?.let { print(it.length) }
 
}

Детальная информация здесь

2 Удобные геттеры и сеттеры

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Foo {
 
    var field = "abc"
 
    var computable
        get() = _computable
        set(value) {
            _computable = value.toUpperCase()
        }
 
    private var _computable = ""
}

Детальнее

3 Новые лямбды

1
2
3
4
5
6
7
8
9
fun foo(list: List) {
 
 
    list.filter({ title -> title.startsWith("abc") }) // Java style
 
 
    list.filter { it.startsWith("abc") } // Kotlin style
 
}

Детальнее

4 Конструкторы классов

1
2
3
4
5
class User(
        val id: String?,
        val username: String,
        val salary: Int,
        val profileImageUrl: String?)

Детальнее

5 Extensions and Generics

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
val Int.odd get() = this % 2 == 1
 
fun String.myOwnFunction(n: Int) =
        when (n) {
            0 -> firstOrNull().toString()
            1 -> reversed()
            else -> this
        }
 
fun foo(title: String) {
    title.myOwnFunction(22)
}
 
 
inline fun  List.foo() =
        when (T::class) {
            String::class -> reversed()
            else -> null
        }

Детальнее

6 Property Delegates

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
fun putToLocalStorage(key: String, o: Any?) {
    // your implementation
}
 
fun  readFromStorage(key: String): T? {
    // your implementation
    return null
}
 
class StoragePropertyDelegate(private val defaultValue: T? = null) {
 
    operator fun getValue(thisRef: Any, property: KProperty<*>): T =
            readFromStorage(property.name) ?: defaultValue!!
 
    operator fun setValue(thisRef: Any, property: KProperty<*>, value: T) {
        putToLocalStorage(property.name, value)
    }
}
 
class Model {
 
    var property by StoragePropertyDelegate("abc")
 
    fun doSomething(t: String) {
        property = t.toLowerCase() + ' '
    }
}

Детальнее

7 Делегирование реализации интерфейсов

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
interface Flying {
 
    fun increaseHeight()
 
    fun reduceHeight()
}
 
class FlyingDelegate : Flying {
 
    override fun increaseHeight() {
        println("increaseHeight()")
    }
 
    override fun reduceHeight() {
        println("reduceHeight()")
    }
}
 
class OldStyleUfo(private val delegate: FlyingDelegate) : Flying {
 
    override fun increaseHeight() {
        delegate.increaseHeight()
    }
 
    override fun reduceHeight() {
        delegate.reduceHeight()
    }
}
 
class NewStyleUfo(delegate: FlyingDelegate) : Flying by delegate

Детальнее

Artjoker советует каждому Android-разработчику попробовать Kotlin и оценить преимущества. Мы видим в этом языке отличные перспективы роста, а если вы уже пишете на Kotlin и хотите работать над крутыми проектами, мы всегда рады новым людям в команде:)

Поделись своей эмоцией после прочтения статьи
Давайте обсудим Ваш проект
Мы с радостью сделаем бесплатную оценку вашего проекта
Или просто загрузите файл с презентацией или описанием
Моисеев Артем
Business Development Manager
Моисеев Артем