Приглашаем на открытый урок который поможет решить эти вопросы.
🗓 12 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
На открытом уроке «Почему все переходят на Kotlin? Секреты успешной миграции с Java» мы покажем, как сократить время разработки на 30% и минимизировать риски NullPointerException.
Вы узнаете ключевые отличия Kotlin, пошаговый план миграции без переписывания проекта и лучшие практики корутин для асинхронности.
🦾 Представьте, что каждый новый модуль пишется быстрее, ошибок становится в три раза меньше, а вы получаете бесценный навык для современных бэкенд-проектов.
🔗 Ссылка на регистрацию: https://vk.cc/cOhiMA
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Избегайте использования изменяемых коллекций в конструкторе data-классов в Kotlin
В своих предыдущих статьях я показывал, как использование
Эти проблемы часто связаны с тем, как работают
https://proandroiddev.com/avoid-using-mutable-collections-in-the-data-class-constructor-in-kotlin-53d17897114e
✍️ @kotlin_lib
В своих предыдущих статьях я показывал, как использование
var
, Array
или лямбды в конструкторе data
-класса на Kotlin может привести к неожиданному поведению и трудноуловимым багам.Эти проблемы часто связаны с тем, как работают
equals()
, hashCode()
и copy()
— особенно в логике сравнения коллекций, диффов или рекомпозиции.https://proandroiddev.com/avoid-using-mutable-collections-in-the-data-class-constructor-in-kotlin-53d17897114e
✍️ @kotlin_lib
👍1
Тёмные стороны
Конструкции
Однако неправильное их использование может привести к следующим проблемам:
- Повреждённые stack trace’ы, из-за чего краши трудно отлаживать в продакшене.
- Тонкие баги с отменой корутин или
- Непреднамеренные утечки API и жёсткая связка встроенного (inlined) кода.
https://proandroiddev.com/the-dark-corners-of-inline-crossinline-and-reified-in-kotlin-d244eaa07bb1
✍️ @kotlin_lib
inline
, crossinline
и reified
в KotlinКонструкции
inline
, crossinline
и reified
в Kotlin позиционируются как абстракции без накладных расходов. Действительно, они позволяют избежать лишних выделений памяти, создавать типобезопасные билдеры и улучшать производительность.Однако неправильное их использование может привести к следующим проблемам:
- Повреждённые stack trace’ы, из-за чего краши трудно отлаживать в продакшене.
- Тонкие баги с отменой корутин или
IllegalStateException
.- Непреднамеренные утечки API и жёсткая связка встроенного (inlined) кода.
https://proandroiddev.com/the-dark-corners-of-inline-crossinline-and-reified-in-kotlin-d244eaa07bb1
✍️ @kotlin_lib
👍3
👩💻 Как создать свой собственный оператор Flow и использовать его в архитектуре приложения?
🗓 12 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Android Developer. Professional».
На открытом уроке вы научитесь писать свой собственный оператор Flow с нуля. Мы разберём, как интегрировать оператор в архитектуру приложения, а также научимся строить архитектуру для гибкости и масштабируемости.
Этот урок идеально подойдёт разработчикам уровня junior и выше, стремящимся углубить знания и научиться эффективно использовать Flow в своих проектах.
🔗 Ссылка на регистрацию: https://vk.cc/cOkVjY
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🗓 12 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Android Developer. Professional».
На открытом уроке вы научитесь писать свой собственный оператор Flow с нуля. Мы разберём, как интегрировать оператор в архитектуру приложения, а также научимся строить архитектуру для гибкости и масштабируемости.
Этот урок идеально подойдёт разработчикам уровня junior и выше, стремящимся углубить знания и научиться эффективно использовать Flow в своих проектах.
🔗 Ссылка на регистрацию: https://vk.cc/cOkVjY
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👎1
Доклады с Droidcon New York 2025
https://www.youtube.com/playlist?list=PL9Pfzam3fFddgz_RF1T_NxlsGGo_9gfGN
✍️ @kotlin_lib
https://www.youtube.com/playlist?list=PL9Pfzam3fFddgz_RF1T_NxlsGGo_9gfGN
✍️ @kotlin_lib
👍2
Java vs Kotlin: у кого больше преимуществ в 2025 году
В 2018 я впервые познакомился с Kotlin, и он мне практически сразу понравился. Да и как можно не полюбить язык, названный в честь тотемного животного всех программистов? Шучу, на самом деле в честь острова.
Я уже несколько лет пишу бэкенд на Kotlin. До этого писал на Java, но переход совершил практически одномоментно, потому что тогда мне казалось, что Kotlin закрывает множество минусов Java и привносит более простой и лаконичный синтаксис. Но при этом я стараюсь следить за тем, как развивается Java.
https://habr.com/ru/companies/raiffeisenbank/articles/934990/
✍️ @kotlin_lib
В 2018 я впервые познакомился с Kotlin, и он мне практически сразу понравился. Да и как можно не полюбить язык, названный в честь тотемного животного всех программистов? Шучу, на самом деле в честь острова.
Я уже несколько лет пишу бэкенд на Kotlin. До этого писал на Java, но переход совершил практически одномоментно, потому что тогда мне казалось, что Kotlin закрывает множество минусов Java и привносит более простой и лаконичный синтаксис. Но при этом я стараюсь следить за тем, как развивается Java.
https://habr.com/ru/companies/raiffeisenbank/articles/934990/
✍️ @kotlin_lib
👎2👍1
🔥 Нововведения Kotlin 1.9-2.2 для JVM
Приглашаем на открытый урок.
🗓 19 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
На вебинаре мы рассмотрим:
- изменения в enum
- data objects и data class
- JvmDefault
- компилятор K2
- guard conditions
- break and continue в лямбдах
- multi-dollar string interpolation
- context parameters
- context-sensitive resolution
- @ all
🔗 Ссылка на регистрацию: https://vk.cc/cOvnqv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Приглашаем на открытый урок.
🗓 19 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
На вебинаре мы рассмотрим:
- изменения в enum
- data objects и data class
- JvmDefault
- компилятор K2
- guard conditions
- break and continue в лямбдах
- multi-dollar string interpolation
- context parameters
- context-sensitive resolution
- @ all
🔗 Ссылка на регистрацию: https://vk.cc/cOvnqv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Создание WebView-контрола для Compose Desktop
В компании TeamDev мы занимаемся разработкой JxBrowser — коммерческой библиотеки, которая позволяет встраивать Chromium-движок в Java-приложения на десктопах. Ранее нами уже были реализованы контролы
Что такое WebView внутри приложения
WebView — это UI-компонент, позволяющий приложению отображать и взаимодействовать с веб-контентом (вроде браузера внутри вашего приложения). Он отображает веб-страницы, обрабатывает JavaScript, куки и другие веб-взаимодействия — полностью в рамках жизненного цикла приложения.
Зачем Compose
Jetpack Compose быстро стал популярен среди Kotlin-разработчиков на Android. Compose Multiplatform расширяет этот подход на десктоп. Однако у Compose нет встроенного десктопного WebView — и мы увидели отличную возможность закрыть этот пробел.
Новая модель UI
Compose использует декларативный подход: UI описывается состоянием, вместо императивного обновления элементов. Компонент отображает текущее состояние, и изменения происходят автоматически по мере смены состояния.
Основная техническая задача: рендеринг
Chromium рендерит страницу в отдельном процессе, а затем результат — пиксели — нужно передать обратно Java/Kotlin для отображения внутри Compose. Мы решили это двумя способами:
1. Копирование пикселей — Chromium рендерит страницу, копирует пиксели в Java-буфер, и затем изображение рисуется в Compose
2. Рендеринг на нативной поверхности — более производительно: Chromium отрисовывает контент напрямую на нативной поверхности, встроенной в Compose.
https://teamdev.com/jxbrowser/blog/building-web-view-for-compose/
✍️ @kotlin_lib
В компании TeamDev мы занимаемся разработкой JxBrowser — коммерческой библиотеки, которая позволяет встраивать Chromium-движок в Java-приложения на десктопах. Ранее нами уже были реализованы контролы
BrowserView
для классических Java GUI-фреймворков: Swing, JavaFX и SWT. Теперь мы решили расширить поддержку и создать аналогичный компонент для Compose Multiplatform — для Desktop.Что такое WebView внутри приложения
WebView — это UI-компонент, позволяющий приложению отображать и взаимодействовать с веб-контентом (вроде браузера внутри вашего приложения). Он отображает веб-страницы, обрабатывает JavaScript, куки и другие веб-взаимодействия — полностью в рамках жизненного цикла приложения.
Зачем Compose
Jetpack Compose быстро стал популярен среди Kotlin-разработчиков на Android. Compose Multiplatform расширяет этот подход на десктоп. Однако у Compose нет встроенного десктопного WebView — и мы увидели отличную возможность закрыть этот пробел.
Новая модель UI
Compose использует декларативный подход: UI описывается состоянием, вместо императивного обновления элементов. Компонент отображает текущее состояние, и изменения происходят автоматически по мере смены состояния.
Основная техническая задача: рендеринг
Chromium рендерит страницу в отдельном процессе, а затем результат — пиксели — нужно передать обратно Java/Kotlin для отображения внутри Compose. Мы решили это двумя способами:
1. Копирование пикселей — Chromium рендерит страницу, копирует пиксели в Java-буфер, и затем изображение рисуется в Compose
Canvas
.2. Рендеринг на нативной поверхности — более производительно: Chromium отрисовывает контент напрямую на нативной поверхности, встроенной в Compose.
https://teamdev.com/jxbrowser/blog/building-web-view-for-compose/
✍️ @kotlin_lib
👍3
Разница между job.cancel() и scope.cancel() в Kotlin Coroutines
В Kotlin-корутинах часто путают отмену конкретного
Что такое Job и Scope?
-
-
Отменяет только одну корутину.
Scope остаётся активным и можно запускать новые задачи.
Отменяет все корутины в области видимости и сам scope.
После этого новые корутины запустить уже нельзя.
https://medium.com/proandroiddev/kotlin-coroutines-the-real-difference-between-job-cancel-and-scope-cancel-05e1d9dd5245
✍️ @kotlin_lib
В Kotlin-корутинах часто путают отмену конкретного
Job
и всей области видимости (Scope
). Разберёмся.Что такое Job и Scope?
-
Job
- отдельная корутина, возвращается при launch
или async
.-
CoroutineScope
- контейнер для корутин. В нём есть общий Job
, управляющий жизненным циклом всех корутин внутри.job.cancel()
Отменяет только одну корутину.
val scope = CoroutineScope(Dispatchers.Default)
val jobA = scope.launch { delay(5000) }
val jobB = scope.launch { delay(10000) }
jobA.cancel() // Отменится только jobA, jobB продолжит работу
Scope остаётся активным и можно запускать новые задачи.
scope.cancel()
Отменяет все корутины в области видимости и сам scope.
scope.cancel() // Все корутины в scope будут остановлены
После этого новые корутины запустить уже нельзя.
https://medium.com/proandroiddev/kotlin-coroutines-the-real-difference-between-job-cancel-and-scope-cancel-05e1d9dd5245
✍️ @kotlin_lib
👍5
🦾 Ответишь — пройдешь на продвинутый курс "Android Developer. Professional " от OTUS.
За 5 месяцев обучения ты освоишь:
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cOz4d1
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Элегантная обработка ошибок в Kotlin: использование
Обработка исключений — важный аспект написания надёжных приложений, однако традиционные блоки
В этой статье рассматривается, как эффективно использовать эти возможности для улучшения вашей стратегии обработки ошибок.
https://carrion.dev/en/posts/runcatching-result-pattern/
✍️ @kotlin_lib
runCatching
и Result
Обработка исключений — важный аспект написания надёжных приложений, однако традиционные блоки
try/catch
могут приводить к многословному и вложенному коду, который сложно читать и сопровождать. Kotlin предлагает более изящный подход с помощью функции runCatching
и типа Result
, которые позволяют обрабатывать исключения в функциональном стиле, сохраняя читаемость кода и предотвращая сбои. В этой статье рассматривается, как эффективно использовать эти возможности для улучшения вашей стратегии обработки ошибок.
https://carrion.dev/en/posts/runcatching-result-pattern/
✍️ @kotlin_lib
👍3👎1
Media is too big
VIEW IN TELEGRAM
Making native SDKs Multiplatform at RevenueCat
Joop Korteweg
В быстро развивающейся экосистеме Kotlin Multiplatform одним из критических пробелов было отсутствие единого решения для покупок внутри приложения и подписок. До сегодняшнего дня. SDK RevenueCat для Kotlin Multiplatform позволяет написать код работы с подписками один раз и запускать его как на Android, так и на iOS. Но как мы это реализовали? У нас уже были нативные SDK для Android и iOS, и мы не хотели переписывать всю основную логику заново. В этом докладе мы расскажем о стратегиях, подводных камнях и уроках, которые мы извлекли из нашего подхода к переносу нативных SDK в Kotlin Multiplatform.
источник
✍️ @kotlin_lib
Joop Korteweg
В быстро развивающейся экосистеме Kotlin Multiplatform одним из критических пробелов было отсутствие единого решения для покупок внутри приложения и подписок. До сегодняшнего дня. SDK RevenueCat для Kotlin Multiplatform позволяет написать код работы с подписками один раз и запускать его как на Android, так и на iOS. Но как мы это реализовали? У нас уже были нативные SDK для Android и iOS, и мы не хотели переписывать всю основную логику заново. В этом докладе мы расскажем о стратегиях, подводных камнях и уроках, которые мы извлекли из нашего подхода к переносу нативных SDK в Kotlin Multiplatform.
источник
✍️ @kotlin_lib
🔥2👍1💩1
Курс «Kotlin Backend Developer. Professional» — всё, что нужно для создания гибких и производительных приложений.
Что вы освоите:
Почему выбирают нас?
🎫 Курс можно приобрести в рассрочку
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Освой Kotlin и Android за 60 часов
Этот обширный курс по Kotlin и Android проведёт вас от основ до продвинутых концепций с практическими заданиями. В ходе курса для начинающих научит вас создавать несколько реальных приложений, включая впечатляющий клон Uber, демонстрирующий профессиональные приёмы разработки.
Курс охватывает Firestore, SQLite, MVVM, Retrofit, Navigation Component, Jetpack Compose и многое другое.
https://www.youtube.com/watch?v=blKkRoZPxLc
✍️ @kotlin_lib
Этот обширный курс по Kotlin и Android проведёт вас от основ до продвинутых концепций с практическими заданиями. В ходе курса для начинающих научит вас создавать несколько реальных приложений, включая впечатляющий клон Uber, демонстрирующий профессиональные приёмы разработки.
Курс охватывает Firestore, SQLite, MVVM, Retrofit, Navigation Component, Jetpack Compose и многое другое.
https://www.youtube.com/watch?v=blKkRoZPxLc
✍️ @kotlin_lib
👍4🔥1🤯1
News-KMP-App
Приложение News KMP - это мультиплатформенный проект на Kotlin Compose, цель которого - обеспечить единообразный опыт чтения новостей на различных платформах, включая Android, iOS, Windows, macOS и Linux. В этом проекте используются мультиплатформенные возможности Kotlin для совместного использования кода и логики, а также Compose для пользовательского интерфейса, что обеспечивает бесшовную и естественную работу на каждой платформе.
https://github.com/Coding-Meet/News-KMP-App?tab=readme-ov-file
✍️ @kotlin_lib
Приложение News KMP - это мультиплатформенный проект на Kotlin Compose, цель которого - обеспечить единообразный опыт чтения новостей на различных платформах, включая Android, iOS, Windows, macOS и Linux. В этом проекте используются мультиплатформенные возможности Kotlin для совместного использования кода и логики, а также Compose для пользовательского интерфейса, что обеспечивает бесшовную и естественную работу на каждой платформе.
https://github.com/Coding-Meet/News-KMP-App?tab=readme-ov-file
✍️ @kotlin_lib
👍2
Онлайн-курс «Android Developer. Professional» от OTUS поможет вам освоить самые современные инструменты и фреймворки, такие как Kotlin, Dagger, RxJava и Kotlin coroutines, а также научит проектировать архитектуру приложения и оптимизировать код.
🦾 После обучения вы сможете разбираться в Android SDK, устранять баги, ускорять приложения, проектировать надежную архитектуру и работать с CI/CD.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Недавно я разбирался с проблемой времени сборки в Kotlin/Native и подумал: «Хм, а что на самом деле делает задача
linkReleaseFrameworkIosArm64
? Почему она так долго выполняется?» Хотя я понимаю, как работает компиляция на Android, я вдруг осознал, что совершенно не разбираюсь в нативном мире. Работает ли задача линковки только с моим кодом или ещё и с зависимостями? А что насчёт задачи
compileKotlinIosArm64
? Что именно она делает? Честно говоря… не знаю. Понятия не имею, но мне определённо хочется разобраться. И я воспользуюсь тобой 🫵, читатель, как мотивацией для исследования и написания этой статьи. Так что спасибо, что остаёшься рядом.✍️ @kotlin_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎1