Kotlin для Android, или лёгкий способ перестать программировать на Java

  • Tutorial
На нашей конференции мобильных разработчиков #MBLTDev, которая прошла в конце октября в Москве, продуктолог компании JetBrains Илья Рыженков рассказал доклад о языке программирования под Android Kotlin.

Kotlin был разработан в компании JetBrains и публично представлен в 2011 году. В 2012 был открыт исходный код.


Презентация

Илья рассказал про историю создания языка, преимуществах программирования на Kotlin, отличия Kotlin от Java и о том, что на нем можно делать. А также показал несколько примеров кода на Kotlin для платформы Android.

Предыдущие видеозаписи вы можете найти по ссылкам:
  1. «Автоматическое тестирование Android приложений c любовью»
  2. «Опыт использования MVVM в реальных проектах»
  3. «Реактивное программирование на Swift»
  4. «Core Data: особенности использования и синхронизация в iCloud»

На следующей неделе мы выложим доклады про безопасность iOS-устройств, современные способы аутентификации и трилатерацию с помощью iBeacon.
Метки:
e-Legion Ltd. 83,74
Лидер мобильной разработки в России
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 14
  • 0
    Простомтрел только половину видео, но уже хочу попробовать Kotlin. Очень крутая штука.
    • +4
      В целом прикольная тема. Но как геймдевелопер не особо вижу зачем kotlin мне нужен.
      Все таки игры пишем кроссплатформенными, чтобы и на iOS без проблем собиралось.
      В итоге java прослойка получается достаточно мелкая и она практически не напрягает.
      Вот была бы возможность kotlin под iOS пускать — тогда можно было бы смотреть в сторону разработки игр на этом языке.
      • 0
        RoboVM
        • 0
          У вас есть опыт работы с RoboVM? Если да, то расскажите о плюсах/минусах.
          • +1
            То есть тащить с собой виртуальную машину ради… чего, кстати?
        • +3
          Однажды на квартирнике в рамках Code Fest 2014 я задал такой вопрос Филиппу Торчинскому:

          «Привносит ли Kotlin какие-то свои идеи поверх Java, как это делает, например, Scala, или же Kotlin является лишь синтаксической реинкарнацией Java?»

          Филипп ответил, что да, такие идеи в их языке есть, но раскрыть тему не смог. Поэтому вопрос остается открытым, — презентация тоже на него не отвечает.
          • 0
            А Kotlin тянет за собой библиотеку на несколько мегабайт, как Scala?
            • 0
              в видео говорится что либа занимает всего 800кб
              • +1
                Подтверждаю, что на kotlin компилится и деплоится быстрее. Я пробовал чисто java, java + retrolambda, kotlin, scala и scala + scaloid. И kotlin был на равне с java, что меня очень удивило.
              • +3
                kotlin клёвая штука! Иногда пописываю под android на java (хотя сам дотнетчик), и очень хотел бы заменить яву на котлин полностью (ибо боль писать на яве после шарпа в плане синтаксического сахара, уж простите).
                • +6
                  Сейчас пишу qwerty поиск в AppDialer-е частично на Kotlin. Это праздник какой-то. Компилится быстро, поддержка в IDEA шикарная, gradle собирается на раз два. Получается очень плотный код. Что мне особенно понравилось пока что:
                  • Extensions. Получаю float из xml ресурсов через «отсутствующий» API Resources.getFloat(resId)
                    //Define somewhere
                    public fun Resources.getFloat(resourceId: Int): Float {
                        val outValue = TypedValue() ;
                        getValue(resourceId, outValue, true)
                        return outValue.getFloat() ;
                    }
                    //Use
                    val w = resources.getFloat(R.fraction.qw_extra_space_along_edges)
                    
                  • Lambdas. Получить из массива хитрый HashMap вместо пол страницы кода на Java
                    keys.toMap { it }.mapValues {
                                it.value.toString()
                                        .plus(keyMapEn[it.key])
                                        .toCharArray()
                            }
                    
                  • Elvis operator.Использовать пустую строку если переменная null
                    keyLabelLoc.setText(labelLoc ?: "")
                    
                  • Delegated properties.Ленивая инициализация свойства класса
                     val keyMapLocal: Map<Char, String> by Delegates.lazy {
                            when (langCode) {
                                "ru" -> qwertyMapRu
                                else -> mapOf<Char, String>()
                            }
                        }
                    


                  Все примеры прямо из проекта. Пробовал и Scala еще до серьезного развития Kotlin. Но Scala в Android как Винни в Кроликовой норе.
                  • 0
                    Но Scala в Android как Винни в Кроликовой норе.

                    Просто вы тянете весь рантайм за собой, но реально нужно 5% от всего объёма. Proguard справляется с задачей, но стандартных средств в компиляторе scala для отслеживания зависимостей классов конечно не хватает.
                    • 0
                      Это правда. Т.е. если Винни долго подержать то он из норы вылезет. Что-то proguard отрезает, но время компиляции/дексинга увеличивается значительно.
                  • 0
                    У вас там на главной, Expressive-} see example, опечатка, надо
                    println("${person} is ${age} years old")
                    (сейчас in вместо is)

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое