- Урок 1. Разработка на Kotlin. Установка Android Studio
- Установка Android Studio на компьютер
- Современная Android разработка на Kotlin. Часть 2
- Архитектура MVVM + Паттерн Repository + Android Manager Wrappers
- Пару слов об Архитектуре в мире Андроид
- Что такое MVVM паттерн?
- Пример кода
- Котлин для андроид разработчиков
Урок 1. Разработка на Kotlin. Установка Android Studio
В первом уроке курса по разработке андроид-приложений на языке Kotlin мы установим необходимые средства для разработки приложений, такие как среда разработки Android Studio.
Этот курс предполагает, что вы знакомы с основами программирования. Если вы немного умеете читать код, вы должны разобраться, даже если у вас нет большого опыта программирования. Если вы не знакомы с основами программирования, то мы рекомендуем посмотреть хотя-бы несколько уроков курса CS50.
Установка Android Studio на компьютер
В этом курсе мы создадим приложение Android на языке Kotlin, используя официальную среду разработки Android Studio. Android Studio — это IDE, созданная на базе программного обеспечения IntelliJ IDEA от JetBrains специально для разработки Android-приложений. Для создания приложений в Kotlin необходимо установить Android Studio 3.0 или более поздней версии.
Среда Android Studio доступна для компьютеров под управлением Windows, Mac и Linux. Установка практически аналогична для всех платформ. Некоторые различия описаны в подробной инструкции по установке на нашем сайте fandroid.info.
Примечание: Последние сведения о системных требованиях и инструкциях по установке содержатся в официальной документации на сайте developer.android.com/studio.
Если вы используете компьютер, на котором уже установлена Android Studio версии 3.0 и выше, переходите к следующему уроку, в котором мы создадим первый проект.
Android Studio использует инструменты Java Develipment Kit в работе. До недавнего времени перед установкой Android Studio нужно было скачать и установить JDK версии 7 или 8 с официального сайта Oracle. Сейчас такой необходимости нет, поскольку Android Studio уже содержит встроенный пакет инструментов JDK.
Если вам необходимо установить официальный JDK, следуйте инструкции Установка JDK (Java Development Kit) на нашем сайте fandroid.info, ссылка под видео.
Установка Android Studio
На данный момент доступна для загрузки версия Android Studio 3.0.
Скачайте дистрибутив для вашей операционной системы
В процессе скачивания можно ознакомится с видео инструкциями по установке Android Studio для вашей операционной системы.
- Запустите дистрибутив для установки
- Примите настройки по умолчанию для всех шагов.
- Убедитесь, что выбраны все компоненты для установки
- После завершения установки Мастер установки загружает и устанавливает дополнительные компоненты. Будьте терпеливы, потому что это может занять некоторое время в зависимости от скорости вашего интернет-соединения.
- После завершения загрузки Android Studio запускается, и вы готовы к созданию первого проекта.
К созданию проекта мы перейдем в следующем уроке, а пока на стартовом экране откройте в меню Configure> SDK Manager, который управляет всеми установленными компонентами среды разработки.
На вкладке SDK Platforms можно увидеть, что загружена только последняя версия Android. Нужно пометить для загрузки несколько последних версий, самых популярных на текущий момент, и скачать их. Процесс загрузки и распаковки происходит автоматически, вам следует только набраться терпения и дождаться его окончания. После окончания установки вы увидите в окне SDK Manager, что выбранные компоненты помечены как загруженные.
Самые популярные версии Android на текущий момент можно посмотреть в статистике на официальном сайте https://developer.android.com/about/dashboards/index.html
Возможные проблемы: Если имя пользователя ПК в Windows написано кириллицей, то Android Studio не будет правильно работать, поскольку среда разработки не читает кириллицу в пути к файлам. Переименуйте пользователя английскими буквами.
При возникновении проблем с установкой вы можете задать вопросы в комментариях под видео на канале Start Android и в комментариях ниже. Кроме того, вы можете воспользоваться различными форумами по программированию, такими как StackOverFlow. Обычно бывает достаточно ввести часть текста ошибки в поиске на StackOverFlow, чтобы найти подсказку к решению проблемы.
На этом наш урок подошел к завершению. А на следующем уроке мы создадим проект в среде разработки Android Studio и запустим первое приложение на андроид-устройстве.
Источник
Современная Android разработка на Kotlin. Часть 2
Привет, Хабр! Представляю вашему вниманию перевод статьи «Modern Android development with Kotlin (Part 2)» автора Mladen Rakonjac.
Примечание. Данная статья является переводом циклов статей от Mladen Rakonjac, дата статьи: 23.09.2017. GitHub. Начав читать первую часть от SemperPeritus обнаружил, что остальные части почему-то не были переведены. Поэтому и предлагаю вашему вниманию вторую часть. Статья получилась объёмной.
«Очень сложно найти один проект, который охватывал бы всё новое в разработке под Android в Android Studio 3.0, поэтому я решил написать его.»
В этой статье мы разберём следующее:
- Android Studio 3, beta 1 Часть 1
- Язык программирования Kotlin Часть 1
- Варианты сборки Часть 1
- ConstraintLayout Часть 1
- Библиотека привязки данных Data Binding Часть 1
- Архитектура MVVM + Паттерн Repository + Android Manager Wrappers
- RxJava2 и как это помогает нам в архитектуре Part 3
- Dagger 2.11, что такое внедрение зависимости, почему вы должны использовать это Part 4
- Retrofit (with Rx Java2)
- Room (with Rx Java2)
Архитектура MVVM + Паттерн Repository + Android Manager Wrappers
Пару слов об Архитектуре в мире Андроид
Довольно долгое время андроид-разработчики не использовали какую-либо архитектуру в своих проектах. В последние три года вокруг неё в сообществе андроид-разработчиков поднялось много шумихи. Время God Activity прошло и Google опубликовал репозиторий Android Architecture Blueprints, с множеством примеров и инструкций по различным архитектурным подходам. Наконец, на Google IO ’17 они представили Android Architecture Components — коллекцию библиотек, призванных помочь нам создавать более чистый код и улучшить приложения. Component говорит, что вы можете использовать их все, или только один из них. Впрочем, я нашёл их все реально полезными. Далее в тексте и в следующих частях мы будет их использовать. Сперва я в коде доберусь до проблемы, после чего проведу рефакторинг, используя эти компоненты и библиотеки, чтобы увидеть, какие проблемы они призваны решить.
Существуют два основных архитектурных паттерна, которые разделяют GUI-код:
- MVP
- MVVM
Трудно сказать, что лучше. Вы должны попробовать оба и решить. Я предпочитаю MVVM, используя lifecycle-aware компоненты и я напишу об этом. Если вы никогда не пробовали использовать MVP, на Medium есть куча хороших статей об этом.
Что такое MVVM паттерн?
MVVM — это архитектурный паттерн, раскрывается как Model-View-ViewModel. Я думаю это название смущает разработчиков. Если бы я был тем, кто придумал ему имя, я бы назвал его View-ViewModel-Model, потому что ViewModel находится посередине, соединяя View и Model.
View — это абстракция для Activity, Fragment‘а или любой другой кастомной View (Android Custom View). Обратите внимание, важно не путать эту View с Android View. View должна быть тупой, мы не должны писать какую-либо логику в неё. View не должна содержать данные. Она должна хранить ссылку на экземпляр ViewModel и все данные, которые нужны View, должны приходить оттуда. Кроме того, View должна наблюдать за этими данными и layout должен поменяться, когда данные из ViewModel изменятся. Подводя итог, View отвечает за следующее: вид layout’а для различных данных и состояний.
ViewModel — это абстрактное имя для класса, содержащего данные и логику, когда эти данные должны быть получены и когда показаны. ViewModel хранит текущее состояние. Также ViewModel хранит ссылку на одну или несколько Model‘ей и все данные получает от них. Она не должна знать, к примеру, откуда получены данные, из базы данных или с сервера. Кроме того, ViewModel не должна ничего знать о View. Более того, ViewModel вообще ничего не должна знать о фреймворке Android.
Model — это абстрактное имя для слоя, который подготавливает данные для ViewModel. Это класс, в котором мы будем получать данные с сервера и кэшировать их, или сохранять в локальную базу данных. Заметьте, что это не те же классы, что и User, Car, Square, другие классы моделей, которые просто хранят данные. Как правило, это реализация шаблона Repository, который мы рассмотрим далее. Model не должна ничего знать о ViewModel.
MVVM, если реализован правильно, это отличный способ разбить ваш код и сделать его более тестируемым. Это помогает нам следовать принципам SOLID, поэтому наш код легче поддерживать.
Пример кода
Сейчас я напишу простейший пример, показывающий как это работает.
Для начала, давайте создадим простенькую Model, которая возвращает некую строчку:
Обычно получение данных — это асинхронный вызов, поэтому мы должны ждать его. Чтобы сымитировать это, я поменял класс на следующий:
Я создал интерфейс OnDataReadyCallback с методом onDataReady . И теперь метод refreshData реализует (имплементирует) OnDataReadyCallback . Для имитации ожидания я использую Handler . Раз в 2 секунды метод onDataReady будет вызываться у классов, реализующих интерфейс OnDataReadyCallback .
Давайте создадим ViewModel:
Как вы можете видеть, здесь есть экземпляр RepoModel , text , который будет показан и переменная isLoading , которая хранит текущее состояние. Давайте создадим метод refresh , отвечающий за получение данных:
Метод refresh вызывает refreshData у RepoModel , который в аргументах берёт реализацию OnDataReadyCallback . Хорошо, но что такое object ? Всякий раз, когда вы хотите реализовать (implement) какой-либо интерфейс или унаследовать (extend) какой-либо класс без создания подкласса, вы будете использовать объявление объекта (object declaration). А если вы захотите использовать это как анонимный класс? В этом случае вы используете object expression:
Когда мы вызываем refresh , мы должны изменить view на состояние загрузки и когда данные придут, установить у isLoading значение false .
Также мы должны заменить text на
Обратите внимание, что я использую val вместо var, потому что мы изменим только значение в поле, но не само поле. И если вы захотите проинициализировать его, используйте следующее:
Давайте изменим наш layout, чтобы он мог наблюдать за text и isLoading. Для начала, привяжем MainViewModel вместо Repository:
- Изменим TextView для наблюдения за text из MainViewModel
- Добавим ProgressBar, который будет виден только если isLoading true
- Добавим Button, которая при клике будет вызывать метод refresh из MainViewModel и будет кликабельна только в случае isLoading false
Если вы сейчас запустите, то получите ошибку View.VISIBLE and View.GONE cannot be used if View is not imported . Что ж, давайте импортируем:
Хорошо, с макетом закончили. Теперь закончим со связыванием. Как я сказал, View должна иметь экземпляр ViewModel :
Источник
Котлин для андроид разработчиков
Kotlin язык разработки под Android
Обсуждения языка Kotlin и обмена полезными ссылками.
Так же можно задавать любые вопросы по языку.
P.S. @Zyomich дал согласие на создание темы
Сообщение отредактировал derak1129 — 28.12.19, 05:18
Заранее сорян, если кого обижу постом.
Вот и зря, что разрешил.
Был как-то в этом году яндексе на конфе.
Никто из тех(в основном это были программеры из яндекса из питерского офиса), кто пропагандировал начать использование этого недоразумения,
внятно не смог объяснить, задающим этот вопрос из зала, в чем же его преимущества перед java и зачем же его начинать использование.
Конвертации проектов Kotlin -> Java нет(на тот момент), только из Java -> Kotlin.
По ощущениям, язык просто надстройка над java, которую решили написать, т.к. в java создатели Kotlin внезапно нашли «фатальный недостаток».
Может топикстартер доступно объяснит, в чем же преимущества перехода с java на Kotlin?
как всегда — синтетический сахар в основном, меньше писать кода, больше возможностей выразить мысль в код. Многие возможности языка я бы безусловно хотел использовать и использовались бы они не из принципа, там такое есть, значит надо, а реально так удобнее, лаконичнее ..
Вообще, ваши инсинуации несколько странны, не думаю, что в самом деле прям так никто не мог сказать , зачем этот язык.
К слову, насчет недоразумения вы тоже как то погорячились, язык изначально разрабатывался для внутренних нужд Jet Brains (на нем написаны все их продукты, включая IDEA) — я вот прямо сейчас так и представляю себе — сидят на брифинге и такие: слишком просто код писать стало, нужно придумать какое-то недоразумение и писать на нем, да еще так придумать , чтоб никто объяснить не мог, зачем это надо, но пользовались все больше и больше. :rofl:
Я вообще пробовал на нем писать, очень даже быстро привыкаешь к «маленьким радостям».. в итоге оставил только из за null safety — весь код усеян этими вопросами, меня это почему то раздражает. В целом впечатление довольно положительное.
Насчет надстройки, тогда все JVM-based языки в той или иной степени надстройки друг над другом ..
Немного добавлю ресурсов:
Antonio Leiva активно продвигает этот язык, даже книгу написал.
Раздел Kotlin на Java Help
Раздел Kotlin и раздел Android Kotlin на Devcolibri
Сообщение отредактировал pavlofff — 02.11.16, 07:18
. Это звучит, как будто собрались люди, написали котлин, и такой успешный язык оказался, что написали они на нем все.
А вот что пишут в самом Jet Brains в описании вакансии программиста для разработки IntelliJ IDEA.
Хм, это что-то уровня «конвертер Scala/Groovy/Clojure -> Java» — это просто не имеет смысла.
Идиоматичный (а НЕ java style) код на «совместимых» языка часто содержит непереводимые конструкции.
Не хочется скатываться в холивар, ведь уже много раз это объясняли.
Вот Илья из JB рассказывает: https://www.youtube.com/watch?v=DQqOCx2UJ10 и https://www.youtube.com/watch?v=FftQuCe626A
или Jake Wharton (тоже большой фанат Kotlin): https://www.youtube.com/watch?v=A2LukgT2mKc
Лично для меня это null safety + DSL + async/await + extension function (тот же Stream-like апи в Kotlin)
Источник