Как стать автором
Обновить
25
Карма
16
Рейтинг
Анна Жаркова @anioutka

Lead mobile developer, Kotlin GDE

  • Подписчики 29
  • Подписки 14

Kotlin Native. Работаем с новой моделью памяти

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Kotlin *
Tutorial

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Продолжаем рассматривать способы многопоточный работы в Kotlin Native. В предыдущих статьях мы уже рассмотрели существующие способы работы с многопоточностью с корутинами и без, и что делать с имеющимися болями. Теперь поговорим о новой модели управления памятью, которая появилась совсем недавно.

31 августа компания JetBrains представили превью новой модели управления памятью в Kotlin Native. Основной упор команда разработчиков сделала на безопасность шаринга между потоками, устранение утечек памяти и освобождение нас от использования специальных аннотаций. Также доработка коснулась Coroutines, и теперь можно без опаски переключаться между контекстами корутин без заморозки. Обновления подхватили и Ktor:  

Итак, что же нового появится в версии Kotlin 1.6.0-M1-139: 
1. Заявлено, что мы можем убрать все freeze() блоки (в том числе и во всех фоновых Worker), и переключаться между контекстами и потоками без каких-либо проблем. 

2.Использование AtomicReference или FreezableAtomicReference не приводит к утечкам памяти.

3.При работе с глобальными константами не нужно теперь использовать SharedImmutable.

4.При работе с Worker.execute producer больше не требует возвращать изолированный подграф объектов. 

Однако есть и нюансы:

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 3.3K
Комментарии 0

Kotlin Native. Работаем с потоками с корутинами и без. Ч2

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Kotlin *
Tutorial

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Продолжаем рассматривать способы многопоточный работы в Kotlin Native.

В предыдущей части мы посмотрели некоторые нюансы работы с корутинами, как работать с Worker и AtomicReference.

Еще одним возможным API для работы с многопоточностью является DetachedObjectGraph.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 1.9K
Комментарии 0

Kotlin Native. Работаем с потоками с корутинами и без. Ч1

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Kotlin *
Tutorial

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Совсем недавно компания JetBrains выпустила preview новой модели управления памятью. Это отличный повод сделать подробный ее разбор на практике, а также сравнить с моделью, используемой в KMM в текущих версиях. Но для начала неплохо было бы поговорить о тех возможностях работы в Kotlin Native, которые мы на практике не используем.

Если вы уже знакомы с тем, как работать с корутинами в Kotlin/Native и/или читали предыдущие статьи 1 и 2 автора, то пролистайте немного вниз. Материал может немного повторяться.

Когда мы работаем с Kotlin и Kotlin Multiplatform, то самым и простым удобным способом для настройки работы с многопоточностью в приложении являются Kotlin Coroutines. Наша задача сводится к настройке скоупов CoroutineScope для запуска корутин и suspend функций в основном потоке и фоновом. Т.к. в разных платформенных версиях языка Kotlin этот механизм реализуется по-разному, то необходимо кастомизировать получение контекста корутин с помощью expect/actual:

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 2.4K
Комментарии 0

Что ждать разработчику от WWDC 2021

Разработка под iOS *Разработка под MacOS *

Всем привет, с вами я, Анна Жаркова, ведущий разработчик компании Usetech.

Мы с нетерпением ждали новую сессию WWDC, особенно после прошлогодних изменений, и, наконец, дождались! Кого-то Keynote разочаровал, т.к люди ждали больше и большего в плане анонсов и возможностей. Но мы-то знаем, что у нас впереди целая неделя, и очень много интересных видео-сессий по новинкам в iOS и Swift, за которые можно простить Apple и недостатки Keynote.

Итак, давайте пройдемся по тому, что нас ожидает.

В принципе все сессии можно поделить на несколько групп:

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 2.4K
Комментарии 13

Kotlin Multiplatform. Работаем с многопоточностью на практике. Ч.2

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Kotlin *
Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech».

В предыдущей статье я рассказывала про один из способов реализации многопоточности в приложении Kotlin Multiplatform. Сегодня мы рассмотрим альтернативную ситуацию, когда мы реализуем приложение с максимально расшариваемым общим кодом, перенося всю работу с потоками в общую логику.



В прошлом примере нам помогла библиотека Ktor, которая взяла на себя всю основную работу по обеспечению асинхронности в сетевом клиенте. Это избавило нас от необходимости использовать DispatchQueue на iOS в том конкретном случае, но в других нам бы пришлось использовать задание очереди исполнения для вызова бизнес-логики и обработки ответа. На стороне Android мы использовали MainScope для вызова suspended функции.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 3.5K
Комментарии 13

Kotlin Multiplatform. Работаем с многопоточностью на практике. Ч.1

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Kotlin *
Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech»
Я давно занимаюсь не только нативной разработкой (как iOS, так и Android), но и кросс-платформенной. В свое время я очень плотно писала на Xamarin (iOS, Android, так и Forms). Так как я интересуюсь различными технологиями шаринга кода, то не прошла и мимо Kotlin Multiplatform (KMM). И сегодня мы с вами поговорим об этом SDK, и как с ним работать на практике.

В сети хватает базовых примеров приложений на KMM, поэтому мы рассмотрим что-то, более приближенное к нашим ежедневным разработческим задачам, а именно, как реализовать многопоточное приложение на Kotlin Multiplatform.



Для начала немного вводной информации. Если вы уже знакомы с Kotlin Multiplatform, то листайте ниже до примера. Если хотите сразу перейти к advanced примеру, то вам сюда.

Основная идея KMM, как и других кросс-платформенных технологий — оптимизация разработки путем написания кода один раз и последующего его использования на разных платформах.

Согласно концепции JetBrains, Kotlin Multiplatform не является фреймворком. Это именно SDK, который позволяет создавать модули с общим кодом, подключаемые к нативным приложениям.



Для взаимодействия с платформами используются специфические для платформы версии Kotlin: Kotlin/JVM, Kotlin/JS, Kotlin/Native. Данные версии включают расширения языка Kotlin, а также специфичные для конкретной платформы библиотеки и инструменты. Написанный на Kotlin модуль компилируется в JVM байткод для Android и LLVM байткод для iOS.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 4.4K
Комментарии 0

SwiftUI 2020. Что изменилось?

Разработка под iOS *Разработка мобильных приложений *
🔥 Технотекст 2020
Приветствую вас, жители Хабра и все интересующиеся разработкой под IOS. На связи Анна Жаркова, Senior iOS/Android разработчик компании Usetech
Сегодня мы поговорим о тех изменениях и новшествах, которые нам представляет Apple на WWDC 2020. А именно про доработанную и даже переработанную версию фреймворка SwiftUI.

Эта технология для декларативной разработки приложений была представлен в прошлом году на WWDC 2019. Если вы с ней еще не работали, то рекомендую заглянуть сюда

Итак. Apple и их инженеры внимательно весь этот год следили за обзорами, статьями, решениями и комментариями от разработчиков-энтузиастов. В конце видео «What's new in SwiftUI» они выражают благодарность всем неравнодушным за помощь.

Теперь SwiftUI позиционируется как полноценный инструмент для разработки под разные платформы (от watchOS до macOS):


Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 9.7K
Комментарии 11

Адаптируем существующее бизнес-решение под SwiftUI. Часть 4. Навигация и конфигурация

Разработка под iOS *
Tutorial
Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech»
Теперь поговорим об еще одном интересном моменте в SwiftUI, о навигации.

Если вы пропустили предыдущие статьи цикла, то можете ознакомиться с ними по ссылке:

часть 1
часть 2
часть 3

С изменением описания визуальной части и переходом к декларативному синтаксису изменилось и управление навигацией в приложении SwiftUI. Использование UIViewContoller напрямую отрицается, UINavigationController напрямую не используется. На смену ему приходит NavigationView.

@available(iOS 13.0, OSX 10.15, tvOS 13.0, *)
@available(watchOS, unavailable)
public struct NavigationView<Content> : View where Content : View {

    public init(@ViewBuilder content: () -> Content)

    //....
}

По сути обертка над UINavigationController и его функционалом.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.4K
Комментарии 4

Адаптируем существующее бизнес-решение под SwiftUI. Часть 3. Работаем с архитектурой

Разработка под iOS *
Tutorial
Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech»

Продолжаем разбирать тонкости SwiftUI. С предыдущими частями можно ознакомиться по ссылкам:

часть 1
часть 2

Сегодня поговорим уже об особенностях архитектуры, и как перенести и встроить в приложение на SwiftUI существующую бизнес-логику.

Стандартный поток данных в SwiftUI построен на взаимодействии View и некой модели, содержащей свойства и переменные состояния, или самой являющейся такой переменной состояния. Поэтому логично, что рекомендуемым архитектурным партерном для приложений на SwiftUI является MVVM. Apple предлагает использовать его совместно с фреймворком Combine, который представляет декларативный Api SwiftUI для обработки значений во времени. ViewModel реализует протокол ObservableObject и подключается как ObservedObject к конкретному View.


Читать дальше →
Рейтинг 0
Просмотры 1.2K
Комментарии 0

Адаптируем существующее бизнес-решение под SwiftUI. Часть 2

Разработка под iOS *
Tutorial
Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech»
В этой части мы уже поговорим по делу, как можно адаптировать готовое решение к проекту на SwiftUI. Если вы еще не особо знакомы с этой технологией, то советую ознакомиться с кратким введением в тему.

Итак, рассмотрим простой пример, как можно использовать готовую библиотеку под стандартное iOS приложение в приложении на SwiftUI.

Возьмем классическое решение: асинхронная загрузка изображений с помощью библиотеки SDWebImage.



Для удобства работа с библиотекой инкапсулирована в ImageManager, который вызывает:

  • SDWebImageDownloader
  • SDImageCache

для скачивания изображений и кеширования.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 1.2K
Комментарии 0

Адаптируем существующее бизнес-решение под SwiftUI. Часть 1

Разработка под iOS *
Доброго всем времени суток. Меня зовут Анна Жаркова, я ведущий мобильный разработчик компании «Usetech»

О технологии SwiftUI, которую Apple анонсировали в прошлом году WWDC 2019, говорили уже много. В принципе уже довольно материала про ее особенности, что у нее под капотом и как это использовать для быстрого и красивого UI.



Предлагаю вам небольшой цикл статей про то, как использовать этот фреймворк в реальной жизни и реальных приложениях, а не в конструкторах сэндвичей для авокадо. А чтобы все было серьезно и по-взрослому, мы рассмотрим, как сделать так, чтобы наше приложение на SwiftUI соответствовало принципам чистой архитектуры и чистого кода.

Но начнем мы, пожалуй, с азов. В этой части будет только введение и базовая информация. Так что если вы уже знакомы с этими особенностями SwiftUI, переходите к следующим частям:
часть 2 (как работать с готовыми библиотеками под UIKit)
часть 3 (здесь про архитектуру)
часть 4 (здесь про навигацию)

Если еще не успели познакомиться, то задержитесь на пару минут)
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 2.7K
Комментарии 0

Информация

В рейтинге
316-я
Откуда
Барнаул, Алтайский край, Россия
Дата рождения
Зарегистрирована
Активность