Лидер мобильной разработки в России
120,21
рейтинг
4 декабря 2014 в 13:46

Разработка → 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.
Автор: @Truskova
e-Legion Ltd.
рейтинг 120,21
Лидер мобильной разработки в России

Комментарии (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)

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

Самое читаемое Разработка