Kotlin
2.16K subscribers
273 photos
123 videos
18 files
396 links
Подборки полезного материала по Kotlin. По всем вопросам @evgenycarter
Download Telegram
Создаем нативное Kotlin приложение на Spring Boot Native, Gradle и GraalVM без докера под MacOS и Windows

В этой статье я хочу рассказать о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM . Начну сразу с минусов и плюсов самой возможности нативной компиляции и где она может быть полезна, и дальше перейду уже непосредственно к процессу сборки под MacOS и Windows.

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

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

✍️ @kotlin_lib
👍3
Media is too big
VIEW IN TELEGRAM
Как собрать iOS-фреймворк из исходных файлов на Kotlin
Вячеслав Кормушкин, RetailNext


Вячеслав рассказал, как собрать iOS-фреймворк из исходных файлов на Kotlin. Обсудил, какие типы фреймворков можно сгенерировать и чем они отличаются, а также рассмотрел, как фреймворк подключается в Xcode проект.

00:00 Вступление
01:38 Kotlin Multiplatform Mobile
02:36 Особенности KMM
04:11 Магические процессы фреймворка
10:40 Gradle
15:36 Universal Framework
17:19 XCFramework
22:22 Плагин для Android Studio
22:23 KDoctor
24:11 Заключение

источник

✍️ @kotlin_lib
👍4
Kotlin Contracts

Одной из самых загадочных возможностей 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
👍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
👍2
NoArchitecture Kotlin Compose

Все начинается в 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
👍4
Библиотека 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