Создаем нативное 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
В этой статье я хочу рассказать о практическом опыте нативной компиляции 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
Вячеслав Кормушкин, 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
Одной из самых загадочных возможностей 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