Telegram Web
🏝 В Kotlin 2.2.20 прокачали работу exhaustive when

enum class UserRole { ADMIN, MEMBER, GUEST }

fun getPermissionLevel(role: UserRole): Int {
// Проверяем один кейс из Enum до работы с when
if (role == UserRole.ADMIN) return 99

return when (role) {
UserRole.MEMBER -> 10
UserRole.GUEST -> 1
// С Kotlin 2.2.20 не надо добавлять else,
// так как кейс уже был проверен выше
// else -> throw IllegalStateException()
}
}


Фича экспериментальная и требует включения через опции

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍67🔥26🤔161
🏝 Как использовать API из macOS в Kotlin Multiplatform (EN)

Разработчик демонстрирует как из KMP кода вызывать API из macOS на примере реализации синхронизации данных через iCloud. Всё сводится к тому, как на JVM вызывать C/C++ код через JNI.

#kotlin #macos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤯63
💉 Вышел Koin IDE плагин 1.4.0 с AI фичами для работы с ошибками конфигурациями и крешами.

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

🛠 Конечно же, внесли улучшения в скорость работы и исправили баги.

#kotlin #koin #di
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
25🤔7👍2🤯1
💡 Знаете ли вы, что Kotlin Multiplatform позволяет использовать до 70% 99% общего кода между Android и iOS?
Это значит — быстрее выпускать продукт, меньше багов и проще поддерживать проект.

📘 Книга «Kotlin Multiplatform на практике» Анны Жарковой — именно тот гид, который проведёт вас от первых шагов до уверенной разработки полнофункциональных кросс-платформенных приложений.

Здесь собраны реальные примеры, архитектурные решения, приёмы работы с общим и нативным кодом, многопоточностью, сетью, хранением данных и Compose Multiplatform для iOS.

🔥 Вы научитесь мигрировать нативные проекты, тестировать с Kotest, ускорять разработку с KSP и ИИ-ассистентами, а также создавать и публиковать собственные KMP-библиотеки. В книге есть и краткий справочник по Kotlin и Swift — чтобы уверенно чувствовать себя в обеих экосистемах.

🎯 Для Android- и iOS-разработчиков, которые хотят выйти на новый уровень.

👉 По промокоду broadcast — скидка 5%

#реклама
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51🤔17👍6
🏝 Важность форсирования написания кода, который валидируется компилятором до запуска

Иногда в проектах встречаю код:
class Sample(
val value1: Type1?,
val value2: Type2?,
) {

init {
require(
(value1 != null && value2 != null) ||
(value1 == null && value2 == null)
}
}

Минус такого подхода - проверка сработает только в рантайме, а на уровне написания кода легко допустить ошибку и лучше избежать ошибки.

class Sample private constructor(
val value1: Type1?,
val value2: Type2?,
) {

constructor(value1: Type1, value2: Type2): this(value1 as Type1?, value2 as Type2?)
constructor(): this(value1 = null, value2 = null)
}


#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍254🤔3
🚀 Яндекс открыл регистрацию на Yandex Cup — чемпионат по программированию с финалом в Стамбуле и призовым фондом 12 млн ₽!

📱 Направление «Мобильная разработка» ждёт iOS- и Android-разработчиков. Будет 5 призовых мест:
🥇 500 000 ₽
🥈 400 000 ₽
🥉 300 000 ₽
🏅 200 000 ₽
🏅 100 000 ₽

📅 Важно:
⏺️20–29 октября — пробный тур (знакомство с задачами)
⏺️2 ноября — квалификация (отбор 180 финалистов)
⏺️5–7 декабря — офлайн-финал в Стамбуле 🎉

👨‍💻 Финалисты получат шанс пройти собеседование в Яндекс по упрощённой схеме.

Для специалистов — это возможность посоревноваться с лучшими программистами со всего мира и проверить свои навыки мобильной разработки.

🔗 Регистрируйтесь до 29 октября

Успейте заявить о себе! 💡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯4🔥21
🏝 В Kotlin 2.2.20 прокачали contracts — механизм, который позволяет компилятору делать больше проверок на этапе компиляции и давать дополнительные гарантии от разработчика (но это не мешает сделать ошибки в выполнении этих гарантий)

❗️ Все новые функции пока экспериментальные — их использование требует аннотаций или специальных флагов компилятора.


1️⃣ Контракты в get/set у property
val Any.isHelloString: Boolean
get() {
contract { returns(true) implies (this@isHelloString is String) }
return "hello" == this
}


2️⃣ returnsNotNull() — новая функция в контрактах, которая гарантирует, что функция вернёт не null
fun decode(encoded: String?): String? {
contract { (encoded != null) implies (returnsNotNull()) }
if (encoded == null) return null
return java.net.URLDecoder.decode(encoded, "UTF-8")
}


3️⃣ holdsIn() — новая функция, которая позволяет зафиксировать, что условие будет true в пределах указанной лямбды
Документация
fun <T> T.alsoIf(
condition: Boolean,
block: (T) -> Unit,
): T {
contract {
// Объявляет, что лямбда будет вызвана не более одного раза
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
// Объявляет, что условие считается истинным внутри лямбды
condition holdsIn block
}
if (condition) block(this)
return this
}


4️⃣ Поддержка generic типов в контрактах типов
fun <T, F : Failure> Result<T, F>.isHttpError(): Boolean {
contract {
returns(true) implies (this@isHttpError is Result.Failed<Failure.HttpError>)
}
return this is Result.Failed && this.failure is Failure.HttpError
}


Зачем это нужно
Контракты помогают компилятору и IDE лучше понимать поведение функций и условий в коде. Это значит: меньше лишних !!, меньше кастов типов, больше подсказок от IDE и меньше багов на рантайме. По сути, вы даёте компилятору «дополнительные знания», и он становится умнее при анализе вашего кода.


#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46🔥9
Forwarded from Android Broadcast
🔥 Вышел JUnit 6 с поддержкой Kotlin

Прошло более 8 лет с релиза JUnit 5 (10 сентября 2017 года) и вот новая мажорная версия популярного фреймворка для написания Unit тестов в Java

Ключевые изменения в новой версии:
👉 Поддержка Java 17 и Kotlin 2.2+
👉 Переход на аннотации JSpecify
🏝 Поддержка корутин из Kotlin
👉 Поддержка Java Flight Recorder (JFR) из коробки
👉 Поддержка отмены выполнения теста
👉 Удалено deprecated API
👉 --fail-fast режим для запуска тестов из терминала

#тестирование #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍7
🏝 Вышел Kotlin 2.2.21-RC c поддержкой XCode 26 для Kotlin Multiplatform и исправлением багов

#kotlin #kmp #xcode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26🎉6👍3
🏝 Вышел KSP 2.0.4 с исправлением багов. Поддерживает Kotlin 2.2.20

#kotlin #ksp
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9👍4🤔2
🎉 Вышел Koin Annotations 2.2 - привычный DI с кодогенраций на базе Koin с проверкой графа во время компиляции кода

Основные изменения:
💉 Совместимость с JSR-330 - набор API для работы с DI в java (Dagger тоже поддерживает его). Переход между DI фреймворками с поддержкой JSR-330 станет проще. Например, с Dagger или Hilt 😁

💉 Популярные Scope прямо из коробки: @ActivityScope, @ActivityRetainedScope, @FragmentScope, @ViewModelScope. Что-то еще больше пахнет Dagger Hilt

💉 Умная конфигурация: можно пометить модуль аннотацией @Configuration, а объект помеченный @KoinApplication найдет их при компиляции и включит в граф. Работает в многомодульных проектах
@Module
@Configuration
class DatabaseModule {
@Singleton fun database() = ...
}

@KoinApplication
object ProductionApp

fun main() {
// Функция startKoin() сгенерируется
ProductionApp.startKoin()
}


💉 Встроенный в фреймворк мониторинг скорости работы компонентов, используя интеграцию с Kotzilla Platform. Добавляете аннотацию @Monitor и автоматически расставятся все трейсинги вызовов методов
@Monitor
@Single
class UserService(private val repository: UserRepository)


🚀 Улучшили скорость работы процессора кода, уменьшили расход памяти, сделали больше проверок при работе процессора. Вообщем поработали по всем направлениям для улучшения работы

Koin Annotations - это хорошая альтернатива тем, кто хочет уйти с Dagger или Hilt, либо нужна поддержка KMP, а переписывать весь код не хочется. С версией 2.2 становится только лучше и проще миграция. Но всё также от кодогенерации не уйти, а значит влияние на время сборки проекта.

#kotlin #koin #kmp #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍251
🏝 В Koog добавили возможность взаимодействия между агентами

Koog, фреймворк для разработки агентов на Kotlin от JetBrains, обзавёлся возможность коммуникации между Агентами, для создания мультиагенстких систем. Делается это с помощью протокола A2A (Agent2Agent)

Пример реализации на 🐱 Github

#ai #agent
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥8🤔1
Forwarded from Aurora Developers
Kotlin Multiplatform снова расширяет свои возможности. Опубликован проект Aurora KInterop выводящий на новый уровень поддержку KMP в ОС Аврора.

Проект Aurora KInterop позволяет взаимодействовать Kotlin с операционной системой Аврора для выполнения различных платформа зависимых задач. В проекте 16 независимых друг от друга библиотек Kotlin Multiplatform для различных задач.

👉 Battery Info.
👉 Camera Info.
👉 Connectivity Info.
👉 Device Info.
👉 Local Notification.
👉 Location Info.
👉 Package Info.
👉 Path Info.
👉 Sensors Info.
👉 Share Data.
👉 Shared Pref.
👉 Shared Pref Secure.
👉 Theme Info.
👉 Uri Launcher.
👉 Vibration.
👉 WakeLock.

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

🔗 https://omprussia.gitlab.io/kmp/docs

Мы продолжаем развивать поддержку Kotlin Multiplatform в операционной системе Аврора. Новый проект значительно расширяет способы использования KMP в ОС Аврора. Проекты открыты, будем рады вашим issue и мерж-реквестам.

🔗 https://gitlab.com/omprussia/kmp

@aurora_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔29🔥18👍8🤯1
2025/10/17 01:26:31
Back to Top
HTML Embed Code: