Kotlin
2.17K subscribers
273 photos
123 videos
18 files
396 links
Подборки полезного материала по Kotlin. По всем вопросам @evgenycarter
Download Telegram
A Glimpse at Constants in Kotlin

Когда мне нужно определить константы, избежать "магических чисел" и смоделировать данные в Kotlin и других языках, я обычно по умолчанию использую классы enum.

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

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

https://molidevwrites.com/a-glimpse-at-constants-in-kotlin/

✍️ @kotlin_lib
👍2
Ликбез по корутинам Kotlin

Корутины — это паттерн проектирования, предназначенный для написания асинхронных программ, способных выполнять нескольких задач одновременно.

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

Корутины — это альтернативный способ написания асинхронных программ, но в сравнении с потоками гораздо более легковесный. Они представляют собой вычисления, которые работают поверх потоков.

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

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

В этой статье мы с вами разберемся, как использовать корутины в Kotlin.

https://reflectoring.io/understanding-kotlin-coroutines-tutorial/

✍️ @kotlin_lib
👍9👎1
Real_World_Android_by_Tutorials_1st_Edition_2021_Ricardo_Costeira.pdf
25.4 MB
Real-World Android by Tutorials
By Ricardo Costeira, Kolin Stürt and Subhrajyoti Sen (2021)

Лучшая книга, которая научит вас создавать профессиональные и безопасные приложения для реального мира на базе Android с использованием наиболее важных архитектур и библиотек. Вы получите все основы разработки под Android, необходимые для принятия оптимальных решений в собственной кодовой базе, а также решите такие важные проблемы, как выбор правильной архитектуры, обеспечение отзывчивости и привлекательности пользовательского интерфейса, реализация эффективной анимации.

✍️ @kotlin_lib
👍6
Специальные типы Kotlin: Any, Unit и Nothing

Kotlin предоставляет несколько специальных типов, которые служат для определенных целей, включая такие типы, как Any, Unit и Nothing. Понимание этих типов и их характеристик очень важно для написания чистого и лаконичного кода на языке Kotlin. В этой статье мы рассмотрим особенности и случаи использования каждого типа, а также соответствующие примеры.

https://medium.com/@amoljp19/kotlins-special-types-any-unit-and-nothing-d4fe837c2891

✍️ @kotlin_lib
👍5
Kotlin Lateinit vs by Lazy

Сегодня я расскажу о различиях между lateinit и By Lazy на Kotlin. Прежде всего, я пройдусь по объяснениям и примерам этих двух основных тем. Далее я остановлюсь на том, в каких случаях нам следует использовать тот или иной из них. Если вы готовы, давайте начнем!

https://medium.com/huawei-developers/kotlin-lateinit-vs-by-lazy-initialization-example-tutorial-c19d84216480

✍️ @kotlin_lib
👍5👎1
Kotlin Cacheable

Основанная на аннотациях библиотека кэширования для Kotlin Multiplatform.
При вызове функции с аннотацией Cacheable она будет возвращать кэшированное значение, если функция будет вызвана с теми же аргументами.

https://github.com/mori-atsushi/kotlin-cacheable

✍️ @kotlin_lib
👍6
👍4
Пару слов о полях и свойствах в Kotlin

Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить поле. Все — свойства!

Однако, во избежании путаницы, я предпочитаю разделять определения полей и свойств на следующей основе:

Полями являются приватные переменные-члены класса. Это то, для чего выделена память.

Свойствами являются публичные или защищенные (protected) функциями геттеры и сеттеры, которые позволяют вам получить доступ к приватным полям.

Я считаю хорошей идеей разграничивать эти понятия таким образом, потому что это способствует моему пониманию, а также упрощает объяснение связанных с этим вещей.

https://vtsen.medium.com/understand-fields-and-properties-in-kotlin-2a78e1132bde

✍️ @kotlin_lib
👍6
Crash Course on the Kotlin Compiler | K1 + K2 Frontends, Backends

Небольшой экскурс о том, почему существует так много версий и как это влияет на преобразования данных в компиляторе

https://medium.com/google-developer-experts/crash-course-on-the-kotlin-compiler-k1-k2-frontends-backends-fe2238790bd8

✍️ @kotlin_lib
👍6
Собеседование на Junior Android Dev у Анны Жарковой

Собеседование проходило в формате вопрос-ответ, при необходимости писали пример ответов на вопрос.
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech.

https://www.youtube.com/watch?v=ka30zdgOAYg

✍️ @kotlin_lib
👍6
10 полезных Kotlin Extension Functions для Android-разработчиков

https://medium.com/@akshay.kalola28/10-useful-kotlin-extension-functions-for-android-developers-2-c063d0b1464e

✍️ @kotlin_lib
👍1👎1
Kotlin под капотом: inline функции

Я провожу довольно много технических интервью и вижу, что многие разработчики не до конца понимают суть inline функций. Не понимают в чем профит от использования inline функций. Зачем нужен crossinline и как работает reified. Отчасти, источник популярных заблуждений про inline функции в том, что раньше на сайте kotlinlang.org было дано не совсем верное описание. Мне захотелось это исправить и наглядно показать как работают inline функции и какой профит мы получаем от их использования.

https://habr.com/ru/articles/775120/

✍️ @kotlin_lib
👍8
The State of Kotlin Multiplatform

JetBrains Kotlin Multiplatform (KMP) - это технология с открытым исходным кодом, предназначенная для гибкой кроссплатформенной разработки. Она позволяет разрабатывать приложения для Android, iOS, настольных компьютеров, веб-приложений и серверной части и эффективно использовать код для разных платформ, сохраняя при этом преимущества нативного программирования. После 8 лет разработки KMP была доработана до уровня технологии, готовой к продакшену, и перешла в статус Stable, а это значит, что сейчас самое время начать использовать ее в своем проекте.

На этом вебинаре мы обсудим, как работает KMP, как применить ее гибкость в ваших разнообразных проектах и как получить максимальную отдачу от нее. Мы расскажем об инструментах и экосистеме KMP и о том, как их можно использовать для оптимизации работы разработчиков. Наконец, мы представим дорожную карту KMP и расскажем о стремлении JetBrains постоянно совершенствовать KMP, включая обновления для Compose Multiplatform и инструментария KMP.

Докладчик: Светлана Исакова, Мартон Браун

https://www.youtube.com/watch?v=bz4cQeaXmsI

✍️ @kotlin_lib
👍3
Kotlin Flow: простая, но мощная реализация

С тех пор как Flow был впервые представлен в Kotlin версии 1.3.0, он стал важной и обсуждаемой темой в сообществе Kotlin. Но почему?

Flow - это простая, но мощная реализация асинхронного программирования в Kotlin.

Flow - это не что иное, как корутин, который возвращает несколько результатов. Она позволяет разработчикам писать структурно параллельный, асинхронный и неблокирующий код в последовательном стиле. Но что означают все эти технические термины, начинающим разработчикам сложно понять сразу. Мне потребовалось некоторое время, чтобы понять это.

https://proandroiddev.com/kotlin-flow-simple-yet-powerful-implementation-c585f337161a

✍️ @kotlin_lib
👍31
Kotlin-Swift interopedia

Kotlin/Native обеспечивает двунаправленное взаимодействие с Objective-C. На момент написания статьи Kotlin не взаимодействует со Swift напрямую, а скорее опосредованно, через мост Objective-C. Экспорт Swift - это то, что команда Kotlin/Native намерена решить в будущем. Тем не менее, выбор в пользу Objective-C вполне обоснован: старые проекты, содержащие код Objective-C, могут вызывать общий код Kotlin, а также проекты, содержащие код Swift.

https://github.com/kotlin-hands-on/kotlin-swift-interopedia

✍️ @kotlin_lib
👍2
Создание паттернов креативного дизайна в Kotlin

Этот блог предназначен для тех, кто только начинает изучать паттерны проектирования в Kotlin. Здесь я попытался создать креативные паттерны проектирования с нуля, а не просто предоставить их синтаксис и теорию.

https://proandroiddev.com/creating-the-creational-design-patterns-in-kotlin-319d08fdf9b6

✍️ @kotlin_lib
👍4
Совет

ifEmpty позволяет нам выполнить второе действие, если содержимое нашего значения пусто. Это отличный способ избавиться от if-else с isEmpty.

Пример

1- Обычный способ
2- С помощью ifEmpty
3- Максимальное

✍️ @kotlin_lib
👍17
Работаем с enum в kotlin/jvm правильно

А вы знали, что HashMap для enum уступает по эффективности EnumMap? Или что EnumSet под капотом это обычный long? Под катом несколько рецептов удобного применения этих структур.

https://habr.com/ru/articles/781730/

✍️ @kotlin_lib
👍5
Тюнинг производительности Kotlin: 20 советов

Производительность — это критический показатель, который может привести к успеху или сломать ваше приложение. Хотя Kotlin предлагает множество функций, облегчающих разработку, знание того, как использовать их для повышения производительности, может стать решающим фактором. В этой статье приведены 20 советов, которые помогут вам писать высокопроизводительный код на Kotlin.

https://medium.com/@android-world/kotlin-performance-tuning-20-best-practices-you-should-know-354011076664

✍️ @kotlin_lib
👍5👎1
Media is too big
VIEW IN TELEGRAM
Андрей Данилов — Gradle Kotlin DSL: о чем умолчали в документации

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

Вы узнаете, есть ли вообще причины переходить на kts в 2023 году и насколько все плохо (или хорошо) с перформансом, учитывая что во многих release notes сообщают об ускорениях. Спикер также разберет все проблемы, возникающие как при миграции крупного проекта, так и при интеропе Kotlin/Groovy.

источник

✍️ @kotlin_lib
👍4
Media is too big
VIEW IN TELEGRAM
IntelliJ IDEA Tips and Tricks

Антон Архипов - специалист по работе с разработчиками в команде Kotlin в компании JetBrains. В сферу его профессиональных интересов входят языки программирования и инструментарий для разработчиков. С 2014 года он является чемпионом по Java.

источник

✍️ @kotlin_lib
👍3