Kotlin Contracts
Одной из самых загадочных возможностей Kotlin являются контракты Kotlin Contracts. Большинство разработчиков используют их, даже не зная, как они работают и как их определить. Контракты Kotlin делают компилятор Kotlin умнее и позволяют нам делать то, что иначе было бы невозможно. Но прежде чем мы увидим их в действии, давайте начнем с определения контракта, которое можно найти в некоторых stdlib-функциях Kotlin.
https://kt.academy/article/ak-contracts
✍️ @kotlin_lib
Одной из самых загадочных возможностей Kotlin являются контракты Kotlin Contracts. Большинство разработчиков используют их, даже не зная, как они работают и как их определить. Контракты Kotlin делают компилятор Kotlin умнее и позволяют нам делать то, что иначе было бы невозможно. Но прежде чем мы увидим их в действии, давайте начнем с определения контракта, которое можно найти в некоторых stdlib-функциях Kotlin.
https://kt.academy/article/ak-contracts
✍️ @kotlin_lib
👍3
Реализуем современный UI на Jetpack Compose
Всем привет, на связи Никита Пятаков, Android-разработчик в МТС Диджитал. В этой статье я расскажу вам о том, как в приложении Мой МТС была проведена работа над UI новой карточки услуги.
Рассказ мой будет последовательным – сначала про саму задачку, потом про решение, которое разбито на подпункты.
https://habr.com/ru/companies/ru_mts/articles/761580/
✍️ @kotlin_lib
Всем привет, на связи Никита Пятаков, Android-разработчик в МТС Диджитал. В этой статье я расскажу вам о том, как в приложении Мой МТС была проведена работа над UI новой карточки услуги.
Рассказ мой будет последовательным – сначала про саму задачку, потом про решение, которое разбито на подпункты.
https://habr.com/ru/companies/ru_mts/articles/761580/
✍️ @kotlin_lib
👍5
Apress.Numerical.Methods.Using.Kotlin.pdf
42.9 MB
Numerical Methods Using Kotlin: For Data Science, Analysis, and Engineering
Haksun Li PhD (2023)
В этой книге вы реализуете численные алгоритмы на языке Kotlin с помощью NM Dev, объектно-ориентированной и высокопроизводительной библиотеки программирования для прикладной и промышленной математики. Узнайте, как Kotlin имеет множество преимуществ перед Java в скорости, а в некоторых случаях и простоте использования. В этой книге вы увидите, как он может
✍️ @kotlin_lib
Haksun Li PhD (2023)
В этой книге вы реализуете численные алгоритмы на языке Kotlin с помощью NM Dev, объектно-ориентированной и высокопроизводительной библиотеки программирования для прикладной и промышленной математики. Узнайте, как Kotlin имеет множество преимуществ перед Java в скорости, а в некоторых случаях и простоте использования. В этой книге вы увидите, как он может
✍️ @kotlin_lib
👍2
NoArchitecture Kotlin Compose
Все начинается в setContent. ComposeGenAppTheme необязательна. Surface кстати внутри себя содержит простой Box. Не привычно формировать все элементы без XML. Хотя интеграция во Fragmets как View возможна Using Compose in Views.
https://habr.com/ru/articles/763980/
✍️ @kotlin_lib
Все начинается в setContent. ComposeGenAppTheme необязательна. Surface кстати внутри себя содержит простой Box. Не привычно формировать все элементы без XML. Хотя интеграция во Fragmets как View возможна Using Compose in Views.
https://habr.com/ru/articles/763980/
✍️ @kotlin_lib
👍2👎2
От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin (Часть 1)
В этой статье мы рассмотрим, как и почему изменилась реализация примитивов синхронизации из стандартной библиотеки Java и пакета java.util.concurrent для Kotlin Coroutines и для языка Kotlin в целом. Сразу хочу предупредить: рассматриваемые в статье библиотеки и классы будут оцениваться не с точки зрения поддержки legacy-функциональности и возможности использовать их в Java, а с точки зрения эффективности и возможности использовать их в корутинах и Kotlin Multiplatform. Поэтому эта статья будет больше полезна тем, кто собирается писать новые проекты на языке Kotlin.
В рамках данной статьи будут рассмотрены:
критические секции;
атомарные переменные;
реактивные переменные;
барьерная синхронизация.
https://habr.com/ru/companies/garage8/articles/747948/
✍️ @kotlin_lib
В этой статье мы рассмотрим, как и почему изменилась реализация примитивов синхронизации из стандартной библиотеки Java и пакета java.util.concurrent для Kotlin Coroutines и для языка Kotlin в целом. Сразу хочу предупредить: рассматриваемые в статье библиотеки и классы будут оцениваться не с точки зрения поддержки legacy-функциональности и возможности использовать их в Java, а с точки зрения эффективности и возможности использовать их в корутинах и Kotlin Multiplatform. Поэтому эта статья будет больше полезна тем, кто собирается писать новые проекты на языке Kotlin.
В рамках данной статьи будут рассмотрены:
критические секции;
атомарные переменные;
реактивные переменные;
барьерная синхронизация.
https://habr.com/ru/companies/garage8/articles/747948/
✍️ @kotlin_lib
👍4
Библиотека Scout — быстрый и безопасный DI на Kotlin
Привет! Меня зовут Александр Миронычев. Я занимаюсь инфраструктурой приложения Яндекс Маркет под Android. Около двух лет назад при работе над модульностью у меня появилось желание написать собственную библиотеку для внедрения зависимостей, которая позволила бы ускорить сборку приложения и упростить процесс модуляризации. Так появился Scout. Сегодня его код мы выложили в открытый доступ.
Эта статья — рассказ о том, как пройти путь от безумной идеи до конкурентоспособного опенсорс-фреймворка. Статья будет полезна тем, кто ищет замену DI-фреймворку в своем проекте, а также тем, кто мечтает написать свою библиотеку, но никак не может начать.
https://habr.com/ru/companies/yandex/articles/764920/
✍️ @kotlin_lib
Привет! Меня зовут Александр Миронычев. Я занимаюсь инфраструктурой приложения Яндекс Маркет под 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
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
Когда мне нужно определить константы, избежать "магических чисел" и смоделировать данные в 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
Корутины — это паттерн проектирования, предназначенный для написания асинхронных программ, способных выполнять нескольких задач одновременно.
В асинхронных программах несколько задач выполняются параллельно в отдельных потоках, не дожидаясь завершения друг-друга. Потоки — ресурс дорогостоящий, и слишком большое их количество выливается в ощутимые накладные расходы в виде высокого потребления памяти и нагрузки на процессор.
Корутины — это альтернативный способ написания асинхронных программ, но в сравнении с потоками гораздо более легковесный. Они представляют собой вычисления, которые работают поверх потоков.
Мы можем приостановить выполнение корутины, чтобы позволить другим корутинам отработать в том же потоке. В дальнейшем выполнение этой корутины может быть возобновлено в том же или даже в другом потоке.
В момент приостановки работы корутины связанные с ней вычисления останавливаются, сохраняются в памяти и удаляются из потока, позволяя ему свободно заниматься другими задачами. Таким образом, мы можем одновременно запускать множество корутин, имея в нашем распоряжении небольшой пул потоков, что позволяет в значительной степени ограничить использование системных ресурсов.
В этой статье мы с вами разберемся, как использовать корутины в Kotlin.
https://reflectoring.io/understanding-kotlin-coroutines-tutorial/
✍️ @kotlin_lib
reflectoring.io
Understanding Kotlin Coroutines
Coroutines are a design pattern for writing asynchronous programs for running multiple tasks concurrently.
In asynchronous programs, multiple tasks execute in parallel on separate threads without waiting for the other tasks to complete.
In asynchronous programs, multiple tasks execute in parallel on separate threads without waiting for the other tasks to complete.
👍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
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
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
Сегодня я расскажу о различиях между 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
Основанная на аннотациях библиотека кэширования для Kotlin Multiplatform.
При вызове функции с аннотацией Cacheable она будет возвращать кэшированное значение, если функция будет вызвана с теми же аргументами.
https://github.com/mori-atsushi/kotlin-cacheable
✍️ @kotlin_lib
👍6
Amper – Improving the Build Tooling User Experience
https://blog.jetbrains.com/blog/2023/11/09/amper-improving-the-build-tooling-user-experience/
✍️ @kotlin_lib
https://blog.jetbrains.com/blog/2023/11/09/amper-improving-the-build-tooling-user-experience/
✍️ @kotlin_lib
👍4
Пару слов о полях и свойствах в Kotlin
Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить поле. Все — свойства!
Однако, во избежании путаницы, я предпочитаю разделять определения полей и свойств на следующей основе:
Полями являются приватные переменные-члены класса. Это то, для чего выделена память.
Свойствами являются публичные или защищенные (protected) функциями геттеры и сеттеры, которые позволяют вам получить доступ к приватным полям.
Я считаю хорошей идеей разграничивать эти понятия таким образом, потому что это способствует моему пониманию, а также упрощает объяснение связанных с этим вещей.
https://vtsen.medium.com/understand-fields-and-properties-in-kotlin-2a78e1132bde
✍️ @kotlin_lib
Терминология свойств и полей в 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
Небольшой экскурс о том, почему существует так много версий и как это влияет на преобразования данных в компиляторе
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
Собеседование проходило в формате вопрос-ответ, при необходимости писали пример ответов на вопрос.
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech.
https://www.youtube.com/watch?v=ka30zdgOAYg
✍️ @kotlin_lib
YouTube
Собеседование на Junior Android Dev у Анны Жарковой
Собеседование проходило в формате вопрос-ответ, при необходимости писали пример ответом на вопрос.
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech
🔗 Ген партнер Android Broadcast - AvitoTech https://cutt.ly/Dwq5wiTY
🔗 Каналы "Android…
Интервьюер: Анна Жаркова, руководитель группы разработки в Usetech
🔗 Ген партнер Android Broadcast - AvitoTech https://cutt.ly/Dwq5wiTY
🔗 Каналы "Android…
👍6
10 полезных Kotlin Extension Functions для Android-разработчиков
https://medium.com/@akshay.kalola28/10-useful-kotlin-extension-functions-for-android-developers-2-c063d0b1464e
✍️ @kotlin_lib
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
Я провожу довольно много технических интервью и вижу, что многие разработчики не до конца понимают суть 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
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
YouTube
The State of Kotlin Multiplatform
JetBrains Kotlin Multiplatform (KMP) is an open-source technology designed for flexible cross-platform development. It allows you to develop apps for Android, iOS, desktop, web, and server-side and efficiently reuse code across them, all while retaining the…
👍3