KMP for Mobile Native Developers: The Book - открытая онлайн книга про KMP.
Что входит:
1️⃣ Введение в KMP
2️⃣ Базовая структура проекта
3️⃣ Dependency Injection
4️⃣ Модуляризация
5️⃣ Тестирование
6️⃣ Использование нативных библиотек в KMP
7️⃣ Библиотеки: сеть, хранилище, база данных, Jetpack KMP
#kmp
Что входит:
#kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
February 11
На основе обратной связи от партнеров JetBrains отказалась от разработки отдельной IDE для KMP разработки, а также свернет поддержку KMP в Fleet к июню 2025.
🎉 Поддержка KMP будет сделана в IntelliJ IDEA and Android Studio. Жду когда все фичи из Fleet для KMP перейдет в IDEA
Лично меня новость очень порадовала, чтобы не плодилось кучу IDEA
#kmp #idea #fleet
Please open Telegram to view this post
VIEW IN TELEGRAM
February 12
Junie - новый кодинг ассиcтент от JetBrains. На момент выхода поста находится в EAP
#idea #ai #jetbrains
#idea #ai #jetbrains
February 12
💡Делайте как можно меньше public
Представьте, что вы случайно сделали внутреннюю функцию публичной – и ваш Gradle-модуль начинает "протекать" наружу лишним кодом. Неявное указание модификаторов доступа может привести к тому, что даже те классы и функции, которые вы планировали использовать только внутри модуля, становятся частью публичного API. Это усложняет поддержку и тестирование, а также увеличивает риск возникновения нежелательных зависимостей.
Решение? Включите Kotlin Explicit Mode (введён в Kotlin 1.4)! С включением этой опцией разработчики будут обязаны явно указывать модификаторы доступа для всех элементов. Таким образом, вы контролируете, что именно экспортируется, и защищаете внутреннюю логику от случайного использования.
Пример настройки в Gradle
Рекомендация: используйте internal или private, а к public прибегайте только тогда, когда вы точно понимаете, что этот API должен быть доступен в модулях, подключивших ваш код.
Это небольшое усилие на этапе разработки поможет сохранить чистоту архитектуры и упростить поддержку вашего кода в будущем. Хотя данная функция рекомендуется для авторов библиотек, в современных многомодульных проектах, где работает целая команда разработчиков, она позволяет эффективно ограничить доступ к API из других модулей.
#kotlin #лучшиепрактики
Представьте, что вы случайно сделали внутреннюю функцию публичной – и ваш Gradle-модуль начинает "протекать" наружу лишним кодом. Неявное указание модификаторов доступа может привести к тому, что даже те классы и функции, которые вы планировали использовать только внутри модуля, становятся частью публичного API. Это усложняет поддержку и тестирование, а также увеличивает риск возникновения нежелательных зависимостей.
Решение? Включите Kotlin Explicit Mode (введён в Kotlin 1.4)! С включением этой опцией разработчики будут обязаны явно указывать модификаторы доступа для всех элементов. Таким образом, вы контролируете, что именно экспортируется, и защищаете внутреннюю логику от случайного использования.
Пример настройки в Gradle
kotlin {
// Без указания модификатора доступа код не скомпилируется
explicitApi()
// или
explicitApi = ExplicitApiMode.Strict
// Сборка пройдет успешно, но в логах появятся предупреждения
explicitApiWarning()
// или
explicitApi = ExplicitApiMode.Warning
}
Рекомендация: используйте internal или private, а к public прибегайте только тогда, когда вы точно понимаете, что этот API должен быть доступен в модулях, подключивших ваш код.
Это небольшое усилие на этапе разработки поможет сохранить чистоту архитектуры и упростить поддержку вашего кода в будущем. Хотя данная функция рекомендуется для авторов библиотек, в современных многомодульных проектах, где работает целая команда разработчиков, она позволяет эффективно ограничить доступ к API из других модулей.
#kotlin #лучшиепрактики
February 13
🚀 Ktor 3.1.0 уже здесь!
JetBrains выпустила новый минорный релиз, который приносит множество полезных обновлений для Android-разработчиков.
👉 Новый CLI-конфигуратор – генерация проектов стала проще.
👉 Поддержка SSE – улучшенная сериализация и heartbeat-события.
👉 Multipart в HttpClient – удобная работа с загрузкой файлов.
👉 Экспериментальная поддержка WASM – новые горизонты для Ktor.
👉 Начало интеграции gRPC – первый шаг к мощной серверной коммуникации.
👉 Движок на основе Curl больше не требует установки сторонних зависимостей, поддерживает ARM и WebSocket
#kotlin #ktor #wasm #grpc
JetBrains выпустила новый минорный релиз, который приносит множество полезных обновлений для Android-разработчиков.
👉 Новый CLI-конфигуратор – генерация проектов стала проще.
👉 Поддержка SSE – улучшенная сериализация и heartbeat-события.
👉 Multipart в HttpClient – удобная работа с загрузкой файлов.
👉 Экспериментальная поддержка WASM – новые горизонты для Ktor.
👉 Начало интеграции gRPC – первый шаг к мощной серверной коммуникации.
👉 Движок на основе Curl больше не требует установки сторонних зависимостей, поддерживает ARM и WebSocket
#kotlin #ktor #wasm #grpc
February 14
February 14
Кажется, я совсем недавно еще работал с бета-версиями первой версии Kotlin, писал приложения с расписанием для университета, где учился, чтобы попробовать эту технологию. Тогда была только поддержка JVM и проводились эксперименты с JS.
Сегодня Kotlin - это уже целая экосистема
Уже появилось поколение разработчиков, которые начали свой путь именно с Kotlin для разработки под Android 🤯🤯🤯
Поделитесь в комментариях под постом в @kotlin_broadcast своей историей знакомства с этим языком и тем, что вас привлекло в нем.
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
February 14
Forwarded from Kotlin Adept Notes (Alex Panov)
Decompose Detekt Rules
Я написал кастомные правила для Detekt, которые будут полезны в каждом проекте с Decompose.
На данный момент в библиотеке есть два правила:
🟣 DecomposeComponentContextRule — проверяет, что вы не создаете ComponentContext внутри Composable функций, так как это может привести к падениям в рантайме.
🟣 SerializableDiscriminatorRule — это правило не относится напрямую к Decompose, но тесно с ним связано. Оно проверяет, что в конфигурации компонента не указаны свойства, совпадающие с дискриминатором класса в kotlinx.serialization, подробнее про это здесь.
Правила работают с обычной конфигурацией Detekt, без type resolution. Также я не пытался охватить все возможные краевые кейсы, поэтому, если в вашем проекте они не работают, смело зводите issue.
🐱 Документация и инструкция по подключению находится здесь.
Я написал кастомные правила для Detekt, которые будут полезны в каждом проекте с Decompose.
На данный момент в библиотеке есть два правила:
Правила работают с обычной конфигурацией Detekt, без type resolution. Также я не пытался охватить все возможные краевые кейсы, поэтому, если в вашем проекте они не работают, смело зводите issue.
Please open Telegram to view this post
VIEW IN TELEGRAM
February 16
Используйте Kotlin Sequences ?
Anonymous Poll
21%
Что это?
34%
Знаю, но не использую
33%
Использую очень редко
6%
Использую регулярно
1%
Не пишу на Kotlin
4%
Не участвую в опросе
February 16
Kotlin Sequences - это API для процессинга набора данных, где каждый оператор в цепочке обрабатывает каждый элемент в последовательности, а не все элементы на каждом шаге оператора
Операторы Kotlin Std Lib для коллекций на каждом этапе обрабатывают все элементы.
Сравнение работы таких подходов вы найдете в статье "Should you use Kotlin Sequences for Performance?" (EN, 5 минут).
Операторы Kotlin Std Lib для коллекций на каждом этапе обрабатывают все элементы.
Сравнение работы таких подходов вы найдете в статье "Should you use Kotlin Sequences for Performance?" (EN, 5 минут).
February 17
Какая нейросеть лучше для помощи с Kotlin кодом?
Anonymous Poll
5%
OpenAI o1
11%
DeepSeek-R1
5%
OpenAI o3-mini
4%
Google Gemini 2.0 Flash
6%
Anthropic Claude 3.5 Sonnet
14%
OpenAI GPT-4o
3%
Другая
52%
Не участвую в опросе
February 18
JetBrains провела сравнение популярных AI моделей, оценивая, как они отвечают на вопросы, связанные с Kotlin. Для этого они создали свой бенчмарк - KotlinHumanEval. Победители:
Второй бенчмарк - Kotlin_QA, который проверяет, как модель качественно отвечает на вопросы по Kotlin и объясняет, что делает Kotlin-код. Dev Advocate собрали 47 популярных вопросов и отправили нейросеткам. Победители второго теста поменялись:
#kotlin #ai #jetbrains
Please open Telegram to view this post
VIEW IN TELEGRAM
February 18
February 19
Разбор Kotlin Guard в when (EN, 12м) из Kotlin 2.1 (фиче в экспериментальном статусе)
🔗 Ссылка без VPN
#kotlin
🔗 Ссылка без VPN
#kotlin
February 20
Проблема с валидацией DI графа зависимостей при использования Koin - очень актуальная. Авторы решили подойти к её решению через анализ кода проектов в IDE, хотя уже обсуждали перенос инструмента в CLI.
Для использования вам понадобится зарегистрироваться на сайте Kotzilla.
#kotlin #idea #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
February 22
This media is not supported in your browser
VIEW IN TELEGRAM
KMP Project View - IDEA/Android Studio плагин для добавления специального представления плагина, удобного для KMP проектов
#kotlin #kmp #idea #androidstudio
#kotlin #kmp #idea #androidstudio
February 23