Telegram

Kotlin Developer

Прямой пост
t.me/KotlinSenior
Нет баллов
Описание канала в Telegram

Самый топовый канал по Kotlin По вопросам сотрудничества и рекламы: ссылка скрыта Мы на бирже: ссылка скрыта

Аудитория
Смешанная аудитория
Подписчики
6 303
-3день
-15неделя
-55месяц
Охват поста
486
486за 24 часа
578в среднем
Вовлечённость
7,7%
7,7%за 24 часа
14,5%в среднем
Упоминания в других каналах

Канал упомянули 205 раз в 40 каналах

Чем больше упоминаний и каналов — тем заметнее канал в своей нише.

Информация о подписчиках
Вк, телеграм

Похожие каналы

28 939
Смешанная аудитория
ERR 14%

🔓 Популярные игры, приложения для android устройств, новости технологий и многое другое. 🤝 Сотрудничество: https://clck.su/FWLEf ⚠️ Наш чат: 🔓 Популярные игры, приложения для android устройств, новости технологий и многое другое. 🔓 Популярные игры, приложения для android устройств, новости технологий Игры, приложения, модификации, моды, новости, android, сма

2 200
3 725
Мужская аудитория
ERR 24%

Пишем про новые ИИ-модели, open-source проекты и инструменты для разработки. Следим за релизами и собираем главное в одном месте. Реклама: @clucai_sup Купить рекламу: https://telega.in/c/+tiyGChxuJ0oyZjAy

1 800
9 764
Смешанная аудитория
ERR 14%

Канал направленный на исследование в сфере ИБ, OSINT. Сотрудничество: @glebsto Медиа: @agencytender Мы на бирже: https://telega.in/c/info_cybersecurity Архив: https://t.me/tochkaseti

3 000
5 278
Мужская аудитория
ERR 23%

Здесь рассказывают о технологиях просто и с огоньком 🔥 Канал про гаджеты, ИИ, электронику и интересные технологии. Сотрудничество, реклама: 6max.ru/vladimir1 Купить рекламу: https://telega.in/m/FbFIsKXPoya2aX6FB83Xo77xJSXr7njgfcbC8EaUtoA Статистика канала: https://maxframe.ru/channel-profile/72081107124477/

2 200
14 788
Женская аудитория
ERR 19%

Сотрудничество: https://clck.ru/3TDf8p Бот: https://max.ru/id231150744090_bot Chat GPT, ЧатГПТ, чат гпт, Claude (Клод), Gemini (Гемини), DeepSeek (Дипсик)- твой бесплатный AI бот №1 в Max! 🎨Фотошоп и картинки: Nano Banana 2 (Нана банана), GPT image 2. Улучшить фото, фотосессия. 🎬 Видео: Veo 3.1, Kling. 💬 Написать текст, рисовать, перевод, ответы на вопросы, поиск. ИИ для любых задач!

3 800
1 964
Смешанная аудитория
ERR 31%

Вся самая новая и полезная литература для Java разработчиков! По вопросам авторских прав, сотрудничества и рекламы: https://t.me/NadikaKir или в ЛС сообщества ВК https://vk.com/javatutorial Мы на бирже: https://telega.in/channels/bookofgeek/card_max/?r=lcDuijdm Канал в перечне РКН: https://vk.cc/cJrTqo

900
Формат размещения
1 400

топ 1 час · сутки в ленте · цена напрямую от автора

💎Эффективность за эти деньги
2,9
CPV · за показ
2 881
CPM · за 1000
Пересчитывается от формата и охвата 486/24ч
Гарантия выхода поста и возврат средств
Надёжность сделки
Среднее время ответа админа
Среднее время ответа админа
Обычно отвечает быстро
Размещений через Помогач
Размещений через Помогач
Первое размещение — за вами
Посты в канале
Kotlin Developer
Telegram · канал
Вопрос с собеседования по Kotlin Расскажите о Data классах. Какие преимущества они имеют? 👇 Правильный ответ: Data класс предназначен исключительно для хранения каких-либо данных. Основное преимущество: для параметров, переданных в основном конструкторе автоматически будут переопределены методы toString(), equals(), hashCode(), copy(). Также для каждой переменной, объявленной в основном конструкторе, автоматически генерируются функции componentN(), где N — номер позиции переменной в конструкторе. Благодаря наличию вышеперечисленных функций внутри data класса мы исключаем написание шаблонного кода. @KotlinSenior #kotlin
370 просм.14 авг., 14:47
Тренинги по ИИ с выездом экспертов Практикума в ваш офис ⚡ Чтобы закрывать больше задач с меньшими ресурсами, нужна «суперсила». И это — ИИ, который снимает рутину, ускоряет процессы и повышает качество решений. Обучайте сотрудников ИИ, чтобы автоматизировать операционные задачи и ускорить ключевые процессы. Выберите формат, который подходит именно вашей команде: ✅ Базовый ИИ - закладываем фундамент. ✅ ИИ под роль - навыки для конкретных функций и специалистов: руководители, продукт и аналитика, маркетинг и продажи, HR и L&D, операционные команды. ✅ ИИ-трансформация - для компаний, которые хотят внедрять нейросети системно. ✨ При покупке любой из программ в августе и сентябре дарим доступ к бибиотеке ИИ навыков для команды Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе
401 просм.14 авг., 13:00
Kotlin Android MVVM Template — шаблон Android-приложения Kotlin Android MVVM Template — простой и легкий шаблон для приложения Jetpack Compose с полностью настроенной навигацией, Retrofit и Dagger-Hilt для вашего удобства, чтобы вы могли сосредоточиться только на важном. Фичи: 🔘 Полностью на Jetpack Compose 🔘 Jetpack Compose Navigation 🔘 Полностью настроенный Retrofit 🔘 MVVM 🔘 Kotlin DSL 🔘 Gradle Version Catalog для инъекции зависимостей detekt для проверки кода 🔘 Dependabot для обновления зависимостей 🔘 GitHub Actions CI/CD для проверки линтера, тестов и сборки APK 🔘 Coil для изображений 🖥 Kotlin Android MVVM Template на GitHub @KotlinSenior #kotlin
520 просм.13 авг., 17:06
Бесплатный курс: веб-дизайн, графика, интерфейсы Получи востребованные навыки: - создание дизайна сайтов и приложений - создание инфографики и карточек для маркетплейсов - работа в графическом редакторе Figma и др. Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Зарегистрироваться #реклама 16+ ydaev.ru О рекламодателе
493 просм.13 авг., 14:20
5 ошибок в Kotlin, которые незаметно ухудшают производительность 1️⃣ Использование data class copy() в узких циклах Классы данных удобны. Но вот это: items = items.map { it.copy(isSelected = false) } Создает новый объект для каждого элемента. Если в вашем списке 5000 элементов? Это 5000 новых выделений памяти. И если это происходит часто (например, при обновлении состояния в Compose), вы постоянно генерируете мусор. Почему это вредно: 🔘 Увеличивается нагрузка на кучу 🔘 Увеличивается частота сборки мусора 🔘 Увеличивается количество пауз в потоках пользовательского интерфейса В областях, чувствительных к производительности, следует учитывать: 🔘 Обновление только измененных элементов 🔘 Тщательно используйте шаблоны неизменяемости 🔘 Избегайте полного пересоздания списка Чистая архитектура не означает пересоздания всего мира при каждом изменении состояния. 2️⃣ Запуск слишком большого количества корутин Корутины легковесны. Но не бесплатны. Распространен такой шаблон: items.forEach { launch { process(it) } } Теперь представьте 1000 элементов. Вы только что запустили 1000 корутин. Даже если они легковесные, они все равно увеличивают накладные расходы на планирование, добавляют переключение контекста, увеличивают нагрузку на диспетчер. 🔹 Лучший подход Используйте структурированную параллельность: coroutineScope { items.map { async { process(it) } }.awaitAll() } Или, еще лучше, выполняйте работу пакетами. Корутины — мощный инструмент, но неограниченный параллелизм — это ловушка производительности. 3️⃣ Чрезмерное переключение диспетчеров Это выглядит безобидно: ``` withContext(Dispatchers.IO) { val result = apiCall() withContext(Dispatchers.Main) { updateUI(result) } } ``` Но если этот шаблон повторяется внутри циклов или вложенных вызовов, вы платите за: 🔘 Переключение контекста потока 🔘 Стоимость синхронизации 🔘 Планирование основного потока Переключение диспетчера не является бесплатным. В высокочастотных операциях избегайте ненужного переключения между потоками. Думайте большими блоками работы. 4️⃣ Использование Flow для всего Современные разработчики Android обожают Flow. Иногда даже слишком сильно. Пример: flowOf(data) .map { transform(it) } .flowOn(Dispatchers.Default) .collect { render(it) } Для одной эмиссии. Это избыточно. Flow вводит механизмы корутин, отслеживание состояний, цепочки операторов, проверки отмены. Если вам нужен просто вызов функции, используйте функцию. Реактивные потоки мощны, когда у вас есть несколько эмиссий, проблемы с Backpressure, долгоживущие потоки. Не для простых преобразований. 5️⃣ Игнорирование выделения памяти внутри биндинга RecyclerView Это тонкий момент. override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.textView.text = "${user.firstName} ${user.lastName}" } Интерполяция строк? Создает новую строку при каждом срабатывании биндинга. Быстрая прокрутка 100 элементов = более 100 срабатываний в секунду. Немного? Да. Повторяется тысячи раз? Не такое уж немного. То же самое с созданием объектов DateFormat, созданием ClickListeners внутри биндинга, выделением новых списков при каждой привязке. Переместите все выделения за пределы биндинга, когда это возможно. Производительность RecyclerView умирает из-за 1000 микро-аллокаций. @KotlinSenior #kotlin
400 просм.13 авг., 13:47
Какие коллекции есть в Kotlin Коллекция — это объект, содержащий в себе набор значений одного или различных типов, а также позволяющий к этим значениям обращаться и извлекать. Другими словами — это контейнер, в который вы можете помещать то, что вам нужно, а затем каким-либо образом с ним взаимодействовать. В Kotlin есть три типа коллекций: 🔘 List (список). Упорядоченная коллекция, в которой к элементам можно обращаться по их индексам. Идентичные элементы (дубликаты) могут встречаться в списке более одного раза. Примером списка является предложение: это группа слов, их порядок важен, и они могут повторяться. 🔘 Set (множество/набор). Неупорядоченная коллекция без повторяющихся значений. Примером множества является алфавит. 🔘 Map (словарь/ассоциативный список). Набор из пар "ключ-значение". Ключи уникальны и каждый из них соответствует ровно одному значению. В коллекции могут присутствовать повторяющиеся значения, но не повторяющиеся ключи. Пример — ID сотрудников и их должностей. Map не является наследником интерфейса Collection. Два типа интерфейсов, на основе которых создаются коллекции: 1. Неизменяемый (read-only) — дают доступ только для чтения (Set, List, Map, Collection). 2. Изменяемый (mutable) — расширяет предыдущий интерфейс и дополнительно даёт доступ к операциям добавления, удаления и обновления элементов коллекции (MutableSet, MutableList, MutableMap, MutableCollection). @KotlinSenior #kotlin
540 просм.12 авг., 19:49
Kotlin DSL: создание предметно-ориентированных языков от теории до JsonBuilder. Бесплатный урок курса «Проектирование и разработка Kotlin-бэкенда» Одна из сильных сторон Kotlin — возможность создавать выразительные DSL, которые делают код понятнее и позволяют описывать сложную бизнес-логику практически как естественный язык. Однако многие разработчики используют готовые DSL, не понимая, как они устроены и какие возможности языка стоят за их реализацией. На открытом уроке 19 августа в 20:00 разберём принципы построения предметно-ориентированных языков в Kotlin. Поговорим о задачах и сценариях использования DSL, на практике создадим собственный JsonBuilder, изучим лямбды с получателем и extension-функции, а также посмотрим, как эти возможности помогают создавать удобные API и упрощать разработку. Урок не для тех, кто хочет ограничиться базовым синтаксисом Kotlin и не планирует использовать его продвинутые возможности. Будет полезен как Kotlin-разработчикам, так и тем, кто только знакомится с языком и хочет понять его сильные стороны. 👉 Записаться: https://vk.cc/d0q20O Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
569 просм.12 авг., 14:01
5 ошибок в Kotlin, которые незаметно ухудшают производительность 1️⃣ Последовательное выполнение операций с коллекциями внутри Hot Paths Это встречается повсюду. val result = users .filter { it.isActive } .map { it.profile } .sortedBy { it.name } Выглядит красиво. Но каждый оператор: 🔘 Создает новую промежуточную коллекцию 🔘 Выделяет память 🔘 Добавляет стоимость итерации Если это выполняется в коллбэке прокрутки, внутри биндинга RecyclerView, при каждом ответе API, в перекомпозициях Compose, то вы просто умножаете объем работы. Что происходит на самом деле? Каждый вызов: 🔘 filter() → создает новый List 🔘 map() → создает еще один List 🔘 sortedBy() → снова копирует Это множественные выделения памяти и циклы. Лучший подход в коде, критически важном для производительности Используйте последовательности: val result = users.asSequence() .filter { it.isActive } .map { it.profile } .sortedBy { it.name } .toList() Последовательности вычисляются лениво и сокращают количество промежуточных выделений памяти. Ещё лучше: иногда один ручной цикл быстрее и понятнее. Не всё должно быть «функциональной элегантностью». 2️⃣ Чрезмерное использование Inline классов и дженериков без понимания боксинга Чрезмерное использование Inline классов и дженериков без понимания боксинга Kotlin скрывает сложность JVM. Но это все еще JVM. Generic типы могут вызывать боксинг: fun process(value: T) Если T — это Int, оно может быть упаковано в Integer. Упаковка = выделение памяти для объекта. Аналогично, inline/value классы не всегда исключают выделение памяти во всех контекстах. Если важна производительность: 🔘 Проверьте байт-код 🔘 Используйте профилировщик 🔘 Поймите, когда примитивы упаковываются Высокоуровневый Kotlin не устраняет низкоуровневые издержки. 3️⃣ Массивные графы объектов в ViewModel Некоторые ViewModel выглядят так: 🔘 12 Flow 🔘 5 операторов объединения 🔘 Множественные преобразования 🔘 Цепочки map → filter → flatMapLatest Это выглядит архитектурно чистым. Но во время выполнения? 🔘 Каждый оператор добавляет накладные расходы 🔘 Объединение увеличивает выбросы 🔘 Частые перерасчеты Особенно в Compose, где изменения состояния запускают рекомпозицию. Сложные реактивные графы могут вызывать: 🔘 Неожиданные повторные вычисления 🔘 Скачки загрузки ЦП 🔘 Разряд батареи Иногда более простой контейнер состояния работает лучше, чем идеально реактивный конвейер. 4️⃣ «Совсем небольшая» блокировка основного потока Это опасно, потому что не приводит к сбою. val result = runBlocking { repository.getData() } Или: Thread.sleep(50) Или: database.query() Если блокировка длится 10–20 мс, вы можете этого не заметить. Но 16 мс = один кадр при 60 кадрах в секунду. Всё, что больше этого = пропущенный кадр. Микроблокировки накапливаются. Пользователи не видят «блокирующий вызов». Они чувствуют, что «приложение тормозит». 5️⃣ Не профилируют — просто предполагают Самая большая ошибка не в Kotlin. Это образ мышления. Разработчики предполагают. «Всё выглядит нормально». «Корутины легковесны». «Поток оптимизирован». «Compose всё обрабатывает». Производительность — это не вопрос убеждений. Это вопрос измерений. Используйте: 🔘 Профилировщик ЦП 🔘 Профилировщик памяти 🔘 Отслеживание выделения памяти 🔘 Системную трассировку Проверяйте: 🔘 Время холодного запуска 🔘 Рендеринг кадров 🔘 Частоту сборки мусора 🔘 Горячие точки выделения памяти Без профилирования вы просто гадаете. А в производительности полагаться на догадки — дорого. @KotlinSenior #kotlin
495 просм.12 авг., 10:33
Вопрос с собеседования по Kotlin Что такое нелокальный return? 👇 Правильный ответ: В Котлин non-local return — это механизм, который позволяет выйти из внешней функции или лямбда-выражения и вернуться к вызывающему коду, обходя оставшуюся часть текущей функции или лямбда-выражения. Он работает по-разному в зависимости от того, является ли функция inline или не-inline. В не-inline функциях: • Если внутри функции есть лямбда-выражение, non-local return из лямбда-выражения может привести к нелокальному завершению внешней функции. • Для использования non-local return внутри лямбда-выражения в не-inline функции, необходимо использовать метку (label) и оператор return@label. В inline-функциях: • В inline-функциях, лямбда-выражения становятся частью кода функции и имеют локальный контроль над потоком управления. • Оператор return внутри лямбда-выражения в inline-функции приведет только к завершению самого лямбда-выражения, не влияя на внешнюю функцию. @KotlinSenior #kotlin
549 просм.12 авг., 00:21
Почему reified можно использовать только с обобщенными типами (generics) Ключевое слово reified в языке Kotlin можно использовать только с обобщенными типами, потому что оно предназначено для решения конкретной проблемы, связанной именно с дженериками. Одна из особенностей обобщенных типов заключается в том, что информация о типе становится недоступной на этапе выполнения программы. Вместо этого на этапе компиляции создается код, который работает с типом-параметром "на уровне объекта", то есть как с любым другим объектом, не зная его конкретного типа. Именно reified позволяет сохранить информацию о типе-параметре на этапе выполнения программы. И дает нам возможность проверять типы в рантайме, создавать объекты типа-параметра и передавать их в качестве параметров других функций. Таким образом, ключевое слово reified не имеет смысла применять к необобщенным типам, поскольку они уже доступны в качестве конкретных объектов на этапе выполнения. @KotlinSenior #kotlin
562 просм.11 авг., 22:09
Rebound — мониторинг рекомпозиций Rebound — это плагин компилятора Kotlin, который инструментирует каждую функцию с аннотацией @Сomposable легковесными вызовами отслеживания. Во время выполнения он отслеживает частоту рекомпозиции в соответствии с бюджетами для каждого composable-объекта, обнаруживает нарушения и сообщает о них через окно инструментов Android Studio, CLI или logcat. Работает на Android и iOS (Compose Multiplatform). Настройка не требуется — просто примените плагин Gradle. Плагин IDE предоставляет панель мониторинга производительности с 5 вкладками, включающую мониторинг в реальном времени, ранжирование проблемных мест, тепловую карту временной шкалы, анализ стабильности и историю сессий с корреляцией с системами контроля версий. 🖥 Rebound на GitHub @KotlinSenior #kotlin
632 просм.11 авг., 20:30
Аннотация @JvmStаtic в Kotlin С помощью аннотации @JvmStatic есть возможность объявить методы по настоящему статическими, ее можно добавить как к методам object, так и к методам companion object. object ObjectWithStatic { @JvmStatic fun staticFun(): Int { return 5 } } В этом случае метод staticFun будет действительно объявлен статическим: public final class ObjectWithStatic { public static final ObjectWithStatic INSTANCE; @JvmStatic public static final int staticFun() { return 5; } private ObjectWithStatic() { INSTANCE = (ObjectWithStatic)this; } static { new ObjectWithStatic(); } } @KotlinSenior #kotlin
1 167 просм.8 авг., 00:19
Вопрос с собеседования по Kotlin Какие требования должны быть соблюдены для создания data класса? 👇 Правильный ответ: 🔵 Класс должен иметь хотя бы одно свойство, объявленное в основном конструкторе. 🔵 Все параметры основного конструктора должны быть отмечены val или var (рекомендуется val). 🔵 Классы данных не могут быть abstract, open, sealed или inner. @KotlinSenior #kotlin
1 213 просм.6 авг., 14:36
Как можно получить тип класса в Kotlin 1. Получение типа класса через функцию ::class Функция ::class возвращает объект KClass, который содержит информацию о типе класса во время выполнения. class Person(val name: String, val age: Int) fun main() { val person = Person("John", 30) println(person::class) // выводит "class Person" } 2. Получение типа класса через функцию javaClass Функция javaClass возвращает объект Class, который содержит информацию о типе класса во время выполнения. class Person(val name: String, val age: Int) fun main() { val person = Person("John", 30) println(person.javaClass) // выводит "class Person" } 3. Получение типа класса через функцию ::class.java Вызов функции ::class.java на объекте типа KClass возвращает объект Class, который содержит информацию о типе класса во время выполнения. class Person(val name: String, val age: Int) fun main() { val person = Person("John", 30) println(person::class.java) // выводит "class Person" } @KotlinSenior #kotlin
1 322 просм.4 авг., 18:13
🔴 Завтра тестовое собеседование с Java-разработчиком 5 августа(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Сергею Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.
1 035 просм.4 авг., 12:11
⚙️ ReduxKotlin — реализация Redux для Kotlin ReduxKotlin — контейнер предсказуемого состояния для приложений Kotlin. Миссия проекта: Предоставить стандартную реализацию Redux для Kotlin. Фичи: 🔵 Многоплатформенность. ReduxKotlin разработан с учетом приоритета многоплатформенности. Поддерживает все платформы, на которые ориентирован Kotlin (JVM, нативные приложения, JS, WASM), что позволяет совместно использовать код. 🔵 Предсказуемость. Redux помогает писать приложения, которые ведут себя согласованно и легко тестируются. 🔵 Централизация. Централизация состояния и логики вашего приложения позволяет легко обмениваться состоянием между компонентами и событиями жизненного цикла. 🔵 Портирование Redux для JavaScript. ReduxKotlin имеет тот же API, что и Redux для JavaScript. Если вы работаете с JavaScript или взаимодействуете с разработчиками JavaScript, использующими Redux, вы почувствуете себя как дома. 🖥 ReduxKotlin на GitHub @KotlinSenior #kotlin
919 просм.4 авг., 09:53
Что такое enum класс (перечислений) в Kotlin Если в процессе разработки возникает ситуация, когда переменная должна иметь определённые (заранее известные) значения — константы, то вместо того, чтобы плодить список констант, их все можно перечислить в классе, который был придуман специально для этого — enum (класс перечислений). Он позволяет создать набор значений, которые могут быть использованы как единственно допустимые значения переменной. Каждая константа в классе перечислений является экземпляром этого класса и отделяется от другой константы запятой. enum class ColorType { RED, BLUE, GREEN } Чтобы ограничить переменную одним из значений класса перечислений, нужно назначить ей тип объявленного класса перечислений. var color: ColorType color = ColorType.RED Помимо самих констант в класс перечислений можно добавить свойства и функции. Их необходимо отделять от констант точкой с запятойЭто единственное место в Kotlin, где используется точка с запятой. enum class ColorType { RED, BLUE, GREEN; fun names() = "Красный, Голубой, Зелёный" val rgb = "0xFFFFFF" } При этом каждая константа сможет обращаться к этому свойству или функции. var color: ColorType = ColorType.RED println(color.names()) // выведет "Красный, Голубой, Зелёный" println(color.rgb) // выведет "0xFFFFFF" Классы перечислений как и обычные классы также могут иметь конструктор. Так как константы являются экземплярами enum-класса, они могут быть инициализированы. enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } Enum-константы также могут объявлять свои собственные анонимные классы как с их собственными методами, так и с перегруженными методами базового класса. Напоминаю, что при объявлении в enum-классе каких-либо членов, необходимо отделять их от объявления констант точкой с запятой. enum class ProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING }; abstract fun signal(): ProtocolState } @KotlinSenior #kotlin
882 просм.3 авг., 10:53
Как работают SAM-conversions Single Abstract Method (SAM) интерфейсы — это интерфейсы только с одним абстрактным методом (функциональные интерфейсы). Kotlin поддерживает соглашение SAM — автоматическую конвертацию функций и lambda между Kotlin и Java. SAM-conversions позволяют использовать Java-интерфейсы с единственным абстрактным методом в Kotlin, как если бы это были функциональные типы. В Kotlin вы можете использовать такие интерфейсы для создания лямбда-выражений без явного определения функционального типа. При использовании интерфейса с единственным абстрактным методом в качестве функционального интерфейса в Java, вы можете передавать его экземпляры вместо лямбда-выражений. Это тоже возможно в Kotlin, но на самом деле Kotlin предоставляет более простой синтаксис для этого. Когда вам нужно использовать функциональный интерфейс в Kotlin, вы можете передать lambda-выражение, которое соответствует сигнатуре единственного метода интерфейса, вместо экземпляра интерфейса. Компилятор сам преобразует лямбда-выражение в экземпляр интерфейса, используя функцию-расширение метода invoke интерфейса. Пример: interface OnClickListener { fun onClick(view: View) } class Button { fun setOnClickListener(listener: OnClickListener) { // ... } } val button = Button() button.setOnClickListener { view -> // обработка нажатия кнопки } В этом примере мы определяем интерфейс OnClickListener с единственным абстрактным методом onClick. Затем мы создаем класс Button, который может иметь слушатель, реализующий данный интерфейс. После этого мы создаем экземпляр Button и передаем лямбда-выражение с соответствующей сигнатурой в качестве слушателя. Компилятор автоматически преобразует это лямбда-выражение в экземпляр интерфейса OnClickListener, используя функцию-расширение invoke интерфейса. @KotlinSenior #kotlin
1 093 просм.31 июля, 21:40
Чем Any в Kotlin отличается от Object в Java Any не является полным аналогом java.lang.Object. В Object 11 методов в классе, в Any только 3 метода: equals(), hashCode() и toString(). При импорте типов Java в Kotlin все ссылки типа java.lang.Object преобразуются в Any. Поскольку Any не зависит от платформы, он объявляет только toString(), hashCode() и equals() в качестве своих членов, поэтому, чтобы сделать другие члены java.lang.Object доступными, Kotlin использует функции расширения. Несмотря на то, что классы Object и Any имеют сходства (корневые классы иерархии классов), они также имеют и отличия, связанные с языковыми особенностями Kotlin и Java: 1️⃣ Класс Any в Kotlin является не только базовым классом для пользовательских классов, но также и супертипом для всех не-nullable типов данных, включая примитивные. В то время как в Java, класс Object является базовым классом только для пользовательских классов. 2️⃣ Класс Any в Kotlin также имеет nullable версию Any?, которая является супертипом для всех nullable типов данных в Kotlin. В то время как в Java, класс Object не имеет nullable версии. @KotlinSenior #kotlin
1 220 просм.30 июля, 09:54
Vibrance — естественное смешивание цветов Vibrance — естественное смешивание цветов для Kotlin и Compose Multiplatform. С помощью этой библиотеки вы можете смешивать (или интерполировать) цвета sRGB, как в реальных красках. Этот процесс создает другой путь между исходным и целевым цветами, имитируя субтрактивное смешивание цветов. Фичи: 🔵 Субтрактивное смешивание цветов: интерполирует цвета sRGB, преобразуя их в скрытое цветовое пространство, представляющее концентрацию пигментов 🔵 Kotlin Multiplatform: поддержка Android, JVM, iOS, macOS, JS и Wasm 🔵 Поддержка Jetpack Compose/Compose Multiplatform: предоставляет простые в использовании API Compose, включая модификаторы и кисти для добавления градиентов, полученных методом смешивания красок: вертикальные, горизонтальные, направленные, радиальные градиенты и градиенты развертки 🖥 Vibrance на GitHub @KotlinSenior #kotlin
1 085 просм.29 июля, 15:15
🕯 Kotlin отмечает 15-летний юбилей Kotlin — это современный кроссплатформенный язык программирования с статической типизацией и объектно-ориентированным подходом, работающий на базе Java Virtual Machine. Он был создан компанией JetBrains в 2010 году под руководством Андрея Бреслава, а первая официальная презентация состоялась в июле 2011 года. Основная задача разработчиков заключалась в создании языка, который был бы более лаконичным и безопасным по типам, чем Java, и одновременно более простым в использовании по сравнению со Scala. Это упрощение привело к ускорению компиляции и улучшению поддержки в интегрированных средах разработки. Kotlin полностью совместим с Java, что облегчает переход Java-разработчиков на новый язык. Он также интегрируется с Android, позволяя добавлять новые функции в существующие приложения без необходимости их полной переработки. По случаю 15-летия JetBrains подготовила специальный сайт и поздравительную открытку, чтобы выразить признание влияния Kotlin на разработчиков и их работу. Кроме того, компания предоставила бесплатный доступ к избранным курсам по Kotlin на платформе Hyperskill. Поздравляем Kotlin с 15-летием!💜 @KotlinSenior #kotlin
920 просм.29 июля, 13:01
💻 Fuel — очень простая библиотека Kotlin для работы с HTTP-сетями implementation("com.github.kittinunf.fuel:fuel:3.0.0-alpha03") Fuel поддерживает основные HTTP-методы: GET/POST/PUT/DELETE/HEAD/PATCH, поддерживает асинхронные и блокирующие запросы, а также имеет массу других возможностей 🖥 GitHub 🟡 Доки @KotlinSenior #kotlin
727 просм.29 июля, 09:16
1 392 просм.29 июля, 09:16
1 385 просм.29 июля, 09:16
Kotlin Multiplatform на практике (2026) PDF Хотите писать код один раз и запускать его на Android и iOS, сохранив нативное качество и производительность? В этой книге вы освоите все шаги разработки полнофункциональных кросс-платформенных приложений с помощью Kotlin Multiplatform SDK – от создания проекта с нуля до миграции существующих нативных решений. Подробные инструкции, архитектурные подходы и реальные примеры помогут уверенно работать с общими модулями, многопоточностью, сетевым слоем, хранением данных и Compose Multiplatform для iOS.
1 016 просм.28 июля, 18:19
Битва нативных платформ: Spring Boot 4, Quarkus, Micronaut, Kotlin Multiplatform, Go и Rust. Бесплатный урок курса «Проектирование и разработка Kotlin-бэкенда» Выбор серверной платформы всё чаще влияет не только на удобство разработки, но и на стоимость эксплуатации приложения. Быстрый запуск, низкое потребление памяти и высокая производительность становятся критичными для микросервисов и высоконагруженных систем. Но разобраться в преимуществах разных технологий по обзорам сложно — гораздо полезнее увидеть их в одинаковых условиях. На открытом уроке 5 августа в 20:00 проведём практическое сравнение Spring Boot 4, Quarkus, Micronaut, Kotlin Multiplatform Native, Go и Rust. Запустим одинаковую вычислительную нагрузку на каждом стеке, посмотрим на время старта приложений, скорость обработки запросов и потребление памяти. Отдельно обсудим, какие задачи лучше подходят каждой технологии и когда переход на нативный код действительно оправдан. Урок не для тех, кто выбирает технологию только по популярности или маркетинговым обещаниям. Будет полезен разработчикам и архитекторам, которые хотят принимать решения на основе реальных показателей производительности. 👉 Записаться: https://vk.cc/cZYLdO Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
861 просм.28 июля, 13:16
889 просм.28 июля, 08:44
💻 Kvaesitso — Android лаунчер на Kotlin, с упором на поисковые возможности Kvaesitso — это open-source Android лаунчер с акцентом на возможности поиска Можно взять Kvaesitso за основу и использовать в своих проектах, благо лицензия GPL-3.0 🖥 GitHub 🟡 Доки @KotlinSenior #kotlin
997 просм.28 июля, 08:44
💻 Calendar — гибкая библиотека Kotlin для создания и работы с календарями Calendar — это гибко настраиваемая библиотека календаря для Android, опирающаяся на RecyclerView для просмотра и LazyRow/LazyColumn для создания календаря. 🖥 GitHub 🟡 Пример кода готового календаря 🟡 Скачать демо-apk @KotlinSenior #kotlin
1 115 просм.27 июля, 09:41
1 032 просм.27 июля, 09:41
💻 http4k — набор функциональных инструментов для HTTP-приложений http4k — это легкий, но полнофункциональный набор инструментов для работы с HTTP, написанный на чистом Kotlin. http4k позволяет писать приложения как простые функции Kotlin. Например, так выглядит простой эхо-сервер: val app: HttpHandler = { request: Request -> Response(OK).body(request.body) } val server = app.asServer(SunHttp(8000)).start() 🖥 GitHub 🟡 Доки @KotlinSenior #kotlin
851 просм.26 июля, 13:40
827 просм.26 июля, 13:40
💻 FileKit — библиотека Kotlin, которая позволяет вам выбирать и сохранять файлы простым способом Позволяет выбирать отдельные файлы, или целые папки, позволяет учитывать нужный формат (скажем, только .png) Для каждой платформы FileKit использует собственный API для выбора файлов, чтобы обеспечить корректную работу. 🖥 GitHub 🟡 Затестить, как это работает @KotlinSenior #kotlin
770 просм.26 июля, 09:26

Посты загружаются автоматически из канала. Администрация сайта не несёт ответственности за их содержание и размещённые в них ссылки.