Kotlin
2.17K subscribers
273 photos
123 videos
18 files
396 links
Подборки полезного материала по Kotlin. По всем вопросам @evgenycarter
Download Telegram
Библиотека Scout — быстрый и безопасный DI на Kotlin

Привет! Меня зовут Александр Миронычев. Я занимаюсь инфраструктурой приложения Яндекс Маркет под Android. Около двух лет назад при работе над модульностью у меня появилось желание написать собственную библиотеку для внедрения зависимостей, которая позволила бы ускорить сборку приложения и упростить процесс модуляризации. Так появился Scout. Сегодня его код мы выложили в открытый доступ.

Эта статья — рассказ о том, как пройти путь от безумной идеи до конкурентоспособного опенсорс-фреймворка. Статья будет полезна тем, кто ищет замену DI-фреймворку в своем проекте, а также тем, кто мечтает написать свою библиотеку, но никак не может начать.

https://habr.com/ru/companies/yandex/articles/764920/

✍️ @kotlin_lib
👍6
The_Joy_of_Kotlin.pdf
3.8 MB
The Joy of Kotlin
Pierre-Yves Saumont (2019)

Kotlin - один из самых новых языков в экосистеме Java, устраняющий многие ограничения Java и гораздо более универсальный. Среди его преимуществ: полная совместимость с Java и возможность интеграции на уровне исходного кода, широкая поддержка парадигмы функционального программирования, помогающая писать надежный и безопасный код, лаконичность синтаксиса, а также, что весьма немаловажно, гарантии поддержки со стороны IT-гиганта Google. Пьер-Ив Сомон, опытный разработчик на Java, в своей книге подробно освещает нюансы программирования на Kotlin, переходя от общего описания языка к его характерным особенностям и возможностям, включая приемы функционального программирования. Издание предназначено для разработчиков, знакомых с Java и стремящихся повысить безопасность своих программ, а также упростить их написание, тестирование и сопровождение.

✍️ @kotlin_lib
👍7
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