Спасибо!

Запрос на оценку стоимости успешно отправлен.
Наши менеджеры свяжутся с вами в ближайшее время.

Вы также можете почитать наш блог или скачать белую книгу.

Будьте с нами!

Наталья Бринзаменеджер проектов

У вас есть бизнес-задача?

У нас есть решение.

Получите консультацию уже сейчас!

Напишите нам

задать вопрос
Введите ваше имя
Введите контакт
Введите email
Введите сообщение
Наталья Бринзаменеджер проектов

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

20.02.2018

программирования мобильных приложений под 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

1Nullsafe

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?)

Детальнее

5Extensions 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 == 1fun 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 }

Детальнее

6Property 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 implementationreturn 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 и хотите работать над крутыми проектами, мы всегда рады новым людям в команде:)

У вас есть бизнес-задача? У нас есть решение.
Получите консультацию уже сейчас!

Введите имя
Введите телефон

Интересуетесь вопросами развития своего бизнеса в сети?

У нас вы получите все ответы!