Что нового в UUID из Kotlin Standart Library
🏝 Теперь функция Uuid.parse() поддерживает не только привычный формат с дефисами (hex-and-dash), например,
🏝 Появились явные функции для работы с hex-and-dash форматом:
parseHexDash() – парсинг UUID из формата с дефисами.
toHexDashString() – преобразование UUID в строку с дефисами.
🏝 UUID теперь реализует интерфейс Comparable. Это значит, что UUID можно напрямую сравнивать и сортировать, используя операторы <, > и стандартные функции вроде sorted().
⚠️ Не забывайте, поддержка UUID в стандартной библиотеке пока экспериментальная. Для её использования используйте:
#kotlin
UUID (Universally Unique Identifier) – это стандарт для генерации уникальных идентификаторов длиной 128 бит, который широко используется для идентификации объектов в распределенных системах.
550e8400-e29b-41d4-a716-446655440000
, но и простой шестнадцатеричный формат без дефисов, например, 550e8400e29b41d4a716446655440000
.parseHexDash() – парсинг UUID из формата с дефисами.
toHexDashString() – преобразование UUID в строку с дефисами.
⚠️ Не забывайте, поддержка UUID в стандартной библиотеке пока экспериментальная. Для её использования используйте:
@OptIn(ExperimentalUuidApi::class)
fun main() {
val uuid = Uuid.parse("550e8400e29b41d4a716446655440000")
println(uuid.toHexDashString())
val sortedUuids = listOf(
uuid,
Uuid.parse("780e8400e29b41d4a716446655440005"),
Uuid.parse("5ab88400e29b41d4a716446655440076")
).sorted()
println(sortedUuids)
}
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
// Kotlin Common Code
expect fun openInBrowser(
url: String,
completionHandler: (Boolean) -> Unit = {}
)
// Kotlin iOS Common
actual fun openInBrowser(
url: String,
completionHandler: (Boolean) -> Unit
) {
NSURL.URLWithString(url)?.let {
UIApplication.sharedApplication.openURL(
url = it,
options = emptyMap<Any?, Any>(),
completionHandler = completionHandler
)
}
}
actual fun openInBrowser(
url: String,
completionHandler: (Boolean) -> Unit
) {
val result = try {
context.startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
true
} catch (_: ActivityNotFoundException) {
false
}
completionHandler(result)
}
// Kotlin JVM Desktop Common
actual fun openInBrowser(
url: String,
completionHandler: (Boolean) -> Unit
) {
with(Desktop.getDesktop()) {
val result = if (isSupported(Desktop.Action.BROWSE)) {
try {
browse(URI.create(url))
true
} catch (e: IOException) {
false
} catch (e: SecurityException) {
false
}
} else false
completionHandler(result)
}
}
Источник тут
#kmp #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40
В Kotlin проекте для генерации кода у вас используется...
Anonymous Poll
9%
Нету кодогенерации
28%
KAPT
59%
KSP
8%
Плагин Kotlin компилятора
11%
Генерация через Gradle плагин
2%
Другой способ генерации
7%
Не знаю
9%
Не участвую в опросе
👍3
Вышла KotlinX Serialization 1.8.1 с исправлениями багов и минорными улучшениями. Также обновили Kotlin до 2.1.20
#kotlin
#kotlin
👍17
#kotlin #di #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Media is too big
VIEW IN TELEGRAM
Хотите узнать, как использовать платформозависимые API в своих приложениях Kotlin Multiplatform (KMP) или запутались в связанных с этим лучших практиках?
В этом видео мы расскажует об использования механизма expect/actual для создания отличных приложений на KMP.
#kmp #kotlin #jetbrains
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
В Kotlin 2.1.20 несовместим со свежей версий XCode, поддержка будет в Kotlin 2.1.21. Отложите обновление!
#kotlin #kmp #xcode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23
Разработчики, работающие с Kotlin и WebAssembly, обратите внимание! В Kotlin 2.1.20 добавили поддержкой DWARF - технологии, которая позволяет выполнять отладку кода пошагово в WASM-виртуальной машине и инспектировать значения переменных.
#kotlin #wasm
#kotlin #wasm
👍18
В Kotlin 2.1.20 добавили экспериментальную новый проход inline оптимизации, который по тестам JetBrains ускоряет работу кода в runtime на 9.5%
Чтобы попробовать надо передать компилятору опцию
-Xbinary=preCodegenInlineThreshold=40
#kotlin #native #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
Metro - Новый DI фреймворк на чистом Kotlin (ещё в разработке)
#kotlin #di #ksp
@DependencyGraph
interface AppGraph {
val httpClient: HttpClient
@Provides
private fun provideFileSystem(): FileSystem = FileSystem.SYSTEM
}
@Inject
class HttpClient(private val fileSystem: FileSystem)
@Inject
@Composable
fun App(circuit: Circuit)
#kotlin #di #ksp
👍35
Kotlin и Swift покинули 20 самых популярных языков программирования
Всё из обновления рейтинга TIOBE 20. Kotlin опустился на 25-е место. Лидирует Python 🤯
#kotlin
Всё из обновления рейтинга TIOBE 20. Kotlin опустился на 25-е место. Лидирует Python 🤯
У Kotlin и Swift одна и та же причина спада. Оба они в основном используются для одной конкретной мобильной платформы — Android и iOS соответственно, тогда как в настоящее время существуют и другие достаточно хорошие языки и фреймворки для разработки кроссплатформенных приложений. Да, Swift можно использовать для разработки под Android, но это довольно сложно. А Kotlin на iOS так и не получил широкого распространения.
#kotlin
👍16
Вышел KSP 2.0, который теперь работает на KSP2 по умолчанию. Теперь работает на K2 и отдельный генератор исходников с большей гибкостью
#kotlin #ksp
#kotlin #ksp
👍21
Forwarded from Android Broadcast
🔥 Главное нововведение этой версии Room — рефакторинг библиотеки для поддержки нескольких платформ через KMP: Android, iOS, JVM (Desktop), native Mac и native Linux. Документацию о том, как начать, можно найти здесь. В рамках поддержки KMP было выделено SQLiteDriver.
#android #kmp #jetpack #ios #desktop #mac #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28
Forwarded from Android Broadcast
Demeter хорош тем, что он не заменяет привычные инструменты анализа производительности, а дополняет собираемую информацию для лучшего понимания скорости работы кода приложения. Также всю информацию можно увидеть прямо на экране устройства.
Инструмент имеет плагинную архитектуру и открытый исходный код, что позволяет вам сделать собственные расширения. Из коробки доступны плагины:
• Замер времени выполнения методов и добавление большей информации для профайлера
• Подсчет количества рекомпозиций в Composable функциях
• Время инициализации зависимостей из Dagger графа
(предлагайте в комментариях, какие замеры было бы полезно сделать в ваших приложениях, а я буду делиться своими)
Demeter может работать через плагин Kotlin компилятора (только с исходным кодом в вашем проекте) и/или через модификацию байткода, где уже можно следить за кодом в подключённых библиотеках без исходного кода. Подробнее можно ознакомиться в статье.
Измерять производительность на дебаг билдах смысла не имеет, так как там много лишнего, а вот когда проходит регресс или через автотесты замерять, то как раз Demeter тут будет полезен, так как важна оценка в одинаковых условиях.
Задавайте свои вопросы по библиотеке, и ещё сделаем отдельное интервью про производительность приложений и тем как за ней постоянно следить, выдерживая заданную планку качества работы.
#android #производительность #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
🔥 На конференции по Аврора ОС объявили о поддержки 🏝 Kotlin Multiplatform и в скоро будущем будет работать и ⚙️ Compose Multiplatform
Как только станет доступно попробовать - подключу в свой проект Frame.io
Источник - @AuroraDevelopers
#kmp #аврораос
Как только станет доступно попробовать - подключу в свой проект Frame.io
Источник - @AuroraDevelopers
#kmp #аврораос
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46
На сайте издательства Питер доступна бумажная и электронные версии. Скоро устрою розыгрыш пару таких книг, так что подождите немного с покупкой
Скриншоты оглавления в комментариях 🔽
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
Коллеги из ОМП поделились со мной презентаций по KMP. Что самое важное
👉 Появится Gradle плагин для добавления Aurora таргета в KMP проекты
👉 Будут сделаны QT Binding чтобы пользоваться нативными API из KMP кода
👉 ОМП сделают версии популярных KMP библиотек под Аврора с публикацией в собственном Maven репо
👉 Compose Multiplatform в работе и покажут в 2026
#kotlin #аврораос
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28