Опишіть ваш проєкт
Наші спеціалісти звʼяжуться з вами найближчим часом
Надіславши запит, ви отримуєте:
  • Лист чи дзвінок від нашого менеджера
  • Оцінку свого проєкту
  • Особисту зустріч, за необхідності
  • Конфіденційність гарантовано!
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
Моісєєв Артем