Почему Котлин

Мое знакомство с Котлин началось с этого видео на Google IO 17. Уже тогда стало понятно, что имеет смысл, как минимум, обратить на этот язык внимание. А еще лучше - изучить его. Я потратил пару недель на официальные доки и примеры, чтобы усвоить основы. А затем периодически почитывал статьи с medium, чтобы разобраться в более сложных вещах. Спустя полгода я без особых проблем влился в новый проект на Котлине. И вот уже два года я пишу только на нем. 

Гугл официально признал Котлин, использует его для примеров в документации, создает курсы и codelabs по нему, встраивает его поддержку в свои библиотеки и фреймворки. Статьи на medium.com уже практически все с примерами на Котлин. Ну и в вакансиях он встречается все чаще

В общем, как мне кажется, вопрос "Изучать ли Котлин?" уже нет смысла обсуждать.

 

 

 

О чем курс  

Сразу скажу, что курс не для полных новичков. На официальном сайте Котлин есть хорошая документация и инструменты, чтобы изучить и попрактиковать основы. Кроме этого есть куча учебной литературы для начинающих. Поэтому я решил рассматривать только темы, понимание которых может оказаться сложным. Это такие темы, как Coroutines, DSL, Inline functions, Operator overloading, Delegated properties и прочие непростые штуки.

Соответственно, для лучшего понимания курса лучше уже иметь хотя бы небольшой опыт работы с Котлин. Так будет легче понять материал. 

 

Первой темой курса будут корутины. Я планирую рассмотреть следующие вопросы:
- почему suspend функции не блокируют поток
- как создать suspend функцию
- что такое Continuation, Job, Scope, корутина, диспетчер
- что происходит внутри билдеров
- чем билдеры отличаются друг от друга
- как изнутри работает связь между родительской и дочерней корутиной
- как происходит обработка ошибок
- как использовать корутины в Android

По мере написания курса буду обновлять этот список.

 

 

 

 

 

Как получить курс

 

Первые три урока доступны бесплатно и без регистрации. Прочитав их, вы примете осознанное решение о покупке.

 

В первом уроке я объясню, почему в первых уроках будет много теории. И мы начнем разбираться, что такое корутина и suspend функция.

Во втором уроке разберем, что такое Continuation и как suspend функция приостанавливает код, не блокируя поток.

В третьем уроке подробно разберем как создать suspend функции. Также рассмотрим можно ли блокировать поток, как корутина может потеряться и зачем нужно слово suspend.

 

Урок 1. Введение   Урок 2. Continuation   Урок 3. Suspend функции

 

Курс постоянно дополняется. На сегодня он состоит из 34 уроков

 

Полный курс доступен после регистрации на сайте и оплаты. Стоимость курса - 3300 рублей

 

С выходом новых уроков стоимость увеличивается. Но читатели, уже купившие курс, автоматически получат доступ к новым урокам. Поэтому, если тема вам интересна, не откладывайте покупку и получайте все следующие уроки бесплатно. Читателю, купившему хотя бы один курс, предоставляется скидка 20% на все остальные курсы.

Доступ к курсу предоставляется навсегда, включая все последующие уроки или обновления.

Сразу все курсы со скидкой 50% процентов вы можете купить (или докупить) на отдельной странице.

 

 

 
 

При возникновении каких-либо вопросов, используйте форму обратной связи

 

 

Содержание курса

 
  • Урок 1. Корутины. Введение.

    В этом уроке начнем разбираться, что такое корутина и suspend функция.

  • Урок 2. Корутины. Continuation

    В этом уроке разберем, что такое Continuation и как suspend функция приостанавливает код, не блокируя поток.

  • Урок 3. Корутины. Suspend функции

    В этом уроке подробно разберем как создать suspend функции. Также рассмотрим, можно ли блокировать поток, как корутина может потеряться и зачем нужно слово suspend. 


Урок 4. Корутины. Continuation, возврат значений.
В этом уроке рассмотрим более подробно, как Continuation обрабатывает ответ от suspend функций. А также, как корутина может вернуть какое-либо значение, как результат своей работы.


Урок 5. Корутины. Suspend функции изнутри.
В этом уроке разбираем, как работает suspend функция изнутри. Как она может вернуть значение сразу или после асинхронной работы.


Урок 6. Корутины. Job.
В этом уроке начинаем разбираться, что из себя представляет корутина. Из каких объектов она состоит и что происходит во время ее выполнения.


Урок 7. Корутины. Scope.
В этом уроке рассмотрим, что такое Scope и как создать его самый простой вариант.


Урок 8. Корутины. Отмена.
В этом уроке запускаем и отменяем корутины. Проверяем, как корутины влияют на основной поток.


Урок 9. Корутины. Билдеры launch и async.
В этом уроке рассмотрим билдеры launch и async. Как ведут себя вложенные корутины. Как дождаться окончания работы корутины, и как получить результат этой работы. Как создать отложенную корутину и запустить ее позже. Как распараллеливать задачи с помощью корутин.


Урок 10. Корутины. Context.
В этом уроке разбираемся с Context. Какие его элементы используются по умолчанию. Как создавать свой элемент. Как происходит передача элементов в контекст создаваемой корутины.


Урок 11. Корутины. Dispatcher.
В этом уроке рассмотрим основные виды диспетчеров. Также поговорим о том, что происходит под капотом корутин при использовании диспетчера.


Урок 12. Корутины. Связь между родительской и дочерней корутиной.
В этом уроке разбираемся, как создается дочерняя корутина. Рассмотрим, как формируется ее контекст, и как работает ее связь с родительской корутиной.


Урок 13. Корутины. Обработка исключений.
В этом уроке рассмотрим как можно обработать исключения, возникающие в корутине. Разберем, что происходит под капотом и как работает CoroutineExceptionHandler.


Урок 14. Корутины. Обработка исключений. Вложенные корутины.
В этом уроке продолжаем обсуждать обработку исключений на примере вложенных корутин.


Урок 15. Корутины. Обработка исключений. Async, suspend.
В этом уроке разбираемся к чему приводят исключения в async корутине и в suspend функциях.


Урок 16. Корутины. Отмена - это ошибка.
В этом уроке обсуждаем как работает отмена корутин под капотом.


Урок 17. Корутины. coroutineScope, supervisorScope, withContext, runBlocking.
В этом уроке обсуждаем функции coroutineScope, supervisorScope, withContext, runBlocking.


Урок 18. Корутины. Каналы.
В этом уроке разбираемся как работают каналы. Что под капотом, закрытие и отмена канала, буфер, produce, consume, broadcast.


Урок 19. Корутины. Flow.
В этом уроке разбираемся что такое Flow, как он работает под капотом и чем отличается от каналов.


Урок 20. Корутины. Flow. Билдеры и простые операторы.
В этом уроке рассмотрим способы создания Flow, простые операторы и создание своих операторов.


Урок 21. Корутины. Flow. Операторы channelFlow, flowOn, buffer, produceIn.
В этом уроке рассматриваем операторы channelFlow, flowOn, buffer, produceIn.


Урок 22. Корутины. Flow. Ошибка, отмена, повтор.
В этом уроке рассматриваем операторы catch, retry, retryWhen и возможность отмены Flow.


Урок 23. Корутины. Практика. Scope, LiveData.
В этом уроке рассматриваем билдер liveData и операторы для получения scope: viewModelScope, lifecycleScope, MainScope.


Урок 24. Корутины. Практика. Retrofit.
В этом уроке рассматриваем интеграцию корутин в Retrofit.


Урок 25. Корутины. Практика. Room
В этом уроке рассматриваем интеграцию корутин в Room.


Урок 26. Корутины. Практика. Примеры использования.
В этом уроке используем корутины в несложных примерах с репозиторием и UseCase


Урок 27. Корутины. Практика. Параллельная работа.
В этом уроке мы вызываем suspend функции параллельно, а не последовательно.


Урок 28. Корутины. Flow. SharedFlow и StateFlow.
В этом уроке подробно разбираем что такое SharedFlow и StateFlow.


Урок 29. Корутины. Практика. Работа с View.
В этом уроке создаем suspend функции и Flow из колбэков View компонентов.


Урок 30. Корутины. Практика. Различные сценарии.
В этом уроке рассматриваем различные сценарии использования Flow и suspend, которые могут пригодиться в работе.


Урок 31. Корутины. Тестирование.
В этом уроке мы разбираемся зачем нужен runBlocking, чем он отличается от runBlockingTest, и что умеет делать TestCoroutineDispatcher.


Урок 32. Корутины. Select.
В этом уроке разбираем оператор select.


Урок 33. Корутины. Actor.
В этом уроке разбираем оператор actor.


Урок 34. Корутины. Concurrency.
В этом уроке рассмотрим несколько простых примеров, в которых две корутины меняют одну переменную. К чему это приводит, и какие есть способы сделать это правильно.


Language

Автор сайта

Дмитрий Виноградов

Подробнее можно посмотреть или почитать.

Никакие другие люди не имеют к этому сайту никакого отношения и просто занимаются плагиатом.

Социальные сети

 

В канале я публикую ссылки на интересные и полезные статьи по Android

В чате можно обсудить вопросы и проблемы, возникающие при разработке



Группа ВКонтакте



Поддержка проекта

Яндекс
410011180491924

WebMoney
R248743991365
Z551306702056

Paypal