Как стать автором
Обновить
35.97

Kotlin *

Статически типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Библиотека Scout — быстрый и безопасный DI на Kotlin

Уровень сложности Простой
Время на прочтение 23 мин
Количество просмотров 2.2K

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

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

Читать далее
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 12

Новости

NoArchitecture Kotlin Compose

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 1K

Статья про основные моменты использования Compose в Android разработке на примере простого приложения. Три таба в одном Activity. Обращение в сеть, парсинг Json. Немного анимации. Приложение сделано на коленке за пару дней. Скорее как вопрос к сообществу

TODO: Добавить Clean Architecture

Не кидайтесь тапками, лучше пишите советы как ускорить загрузку списка на холодную и как запустить xcode-kotlin plugin в Xcode

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 3

Эффективная и идиоматическая обработка ошибок в Kotlin

Уровень сложности Средний
Время на прочтение 26 мин
Количество просмотров 2.3K
Туториал

Во многих программах написанных на Kotlin, в том числе и доступных на GitHub, а также в некоторых статьях, особенно на Medium, я снова и снова вижу, что авторы обрабатывают ошибки, с моей точки зрения, неэффективно и неидиоматически. При этом результат работы программ может быть правильный. Неэффективность и «неидеоматичность» проявляется в этих случаях в том, что авторы либо используют дополнительные классы, либо городят ненужные костыли, либо делают код более сложным для чтения, понимания и поддержки, чем нужно. 

Не претендуя на истину в последней инстанции, я попытаюсь в этой статье описать систематический подход к оптимальной и идиоматической обработке ошибок в Kotlin.  

Эта публикация должна быть интересна в первую очередь новичкам в Kotlin. Но я надеюсь, она будет небезинтересна и профессионалам. 

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Комментарии 1

Реализуем современный UI на Jetpack Compose

Время на прочтение 7 мин
Количество просмотров 4.4K
Обзор

Всем привет, на связи Никита Пятаков, Android-разработчик в МТС Диджитал. В этой статье я расскажу вам о том, как в приложении Мой МТС была проведена работа над UI новой карточки услуги. Рассказ мой будет последовательным – сначала про саму задачку, потом про решение, которое разбито на подпункты.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 17

Истории

Protobuf или Reflection в JNI

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 8.8K
Кейс

Вы когда нибудь задумывались, на сколько grpc быстрый. Да в сети, ему равных нет. Если вы гоняете маленькие сообщения, которые надо быстро доставить, то лучше grpc попросту не найти ( найти, но по мнению автору protobuf остается движком сериализации, поддерживающим большее кол-во языков ). Но насколько он хорош? Сможет ли он к примеру сравнится просто с нативными вызовами?

Попробуем сравнить это, но так как в обычной жизни нам это может не пригодится, то добавим еще одно условие - сравниваем как лучший способ взаимодействия с jni библиотекой.

Читать далее
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 14

Есть ли смысл начинать писать мобильное приложение не на Kotlin Multiplatform и Compose Multiplatform?

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 7.9K
Мнение

Всем привет! Меня зовут Борис Вербицкий, и я представитель того редкого типа iOS разработчиков, которые тепло относятся к Kotlin Multiplatform Project и рады появлению Compose Multiplatform. Здесь я решил поделиться своим опытом использования этих технологий, а также кое-какими размышлениями вокруг процессов с такой разработкой. Цель этой статьи - это поднять обсуждение предложенного мной подхода, послушать все за и против в комментариях.

Приятного чтения!

Читать далее
Всего голосов 13: ↑9 и ↓4 +5
Комментарии 25

Создаем нативное Kotlin приложение на Spring Boot Native, Gradle и GraalVM без докера под MacOS и Windows

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 2.7K
Туториал

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

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

Read more →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 12

Пишем plugin для IDEA, используя External System API, на примере простой build системы

Уровень сложности Средний
Время на прочтение 20 мин
Количество просмотров 801
Туториал

Привет, ранее я написал статью о своем плагине и том, как переосмыслил подход к получению проектной модели Maven. И обещал более подробно рассказать о технических деталях реализации плагина и точках расширения IDEA, которые использовал.

Большинство так называемых внешних систем, по отношению к IDE, соответствуют общему шаблону: имеют конфигурационные файлы, на основании конфигурационных файлов можно построить проект, предоставляют возможность выполнения каких-либо задач.

Всем этим условиям удовлетворяют популярные билд-системы: Gradle, Maven, Sbt и не только, например Docker-compose. IDEA плагины для них построены на External System API. Поэтому для написания своего плагина, я также использовал данное API и хочу рассказать о нем более подробно.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 4

Всё, что вы хотели знать о Java, но не доходили руки спросить: что будет на Joker 2023

Время на прочтение 18 мин
Количество просмотров 2.5K
Обзор

Как ускорить запуск JVM? Каково переходить с SQL на Cassandra? Что нас ждёт в Java 21? Как профилируют в Alibaba? Какие части Java были сделаны в России? И как в названия докладов на Java-конференции прокралось не только слово «Kotlin», но и «Python» с «PHP»?

На все эти и многие другие вопросы ответит Joker 2023. До конференции остался месяц, её программа готова — представляем её Хабру.

Программа Joker 2023
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 0

Ускоряем поиск по коду в Android Studio

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 3.5K
Туториал

Рассмотрим возможности Android Studio, позволяющие быстрее ориентироваться в коде: находить нужные фрагменты и выявлять связи между ними.

Если вы опытный пользователь, то вам известно большинство нижеперечисленных лайфхаков. Но я узнавал о многих возможностях случайно, через многие месяцы работы в Android Studio, поэтому хочу рассказать всё, везде и сразу.

Читать далее
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 22

Java Digest #4

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 4.6K
Дайджест

Всем привет! 👋 👋 👋 Мы Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим не только с коллегами, но и со всем сообществом.

В этот раз эпиграф к выпуску нам придумал ChatGPT:

In the whimsical world of Java, where code dances with curiosity and logic wears a hat of wonder, our Java Digest takes you on a delightful journey through the rabbit hole of programming brilliance.

Stay tuned! 🙂

Читать четвертый выпуск
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 3

Как публиковать и воспроизводить видео на Android с помощью опенсорс-библиотеки и стриминговой платформы EdgeЦентр

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 626
Туториал

Сделать собственный сервис, где пользователи могли бы смотреть готовые видео на смартфонах в хорошем качестве, с адаптивным битрейтом кажется довольно сложной и дорогой задачей. Но на самом деле реализовать публикацию и проигрывание VOD (Video on Demand, видео по запросу) — не так уж и сложно, а в качестве составных частей можно использовать опенсорс.

Меня зовут Денис Филиппов, я руководитель отдела разработки стриминговой платформы EdgeЦентр. Сегодня расскажу вам, как с помощью нашей платформы и опенсорс-библиотеки tus-android-client сделать приложение, где пользователи смогут смотреть видео на Android.

Материал будет полезен всем, кто хочет реализовать качественное воспроизведение видео на Android-смартфонах с минимальными денежными расходами.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Библиотека «Jetpack Compose» для начинающего Android-разработчика

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 3.5K
Туториал

Здравствуй, дорогой читатель. Каждому Android-разработчику во время разработки своего приложения необходимо сталкиваться с созданием пользовательского интерфейса. Для этого существует несколько способов, и сегодня будет рассмотрен один из них - Jetpack Compose UI.

Jetpack Compose - это библиотека, которую представила Google в 2019 году. Данная библиотека позволяет удобным способом создавать и организовывать интерактивный UI, облегчает тестирование и дает возможность грамотно использовать ресурсы устройства.

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

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 5

Ближайшие события

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
PG Boot Camp Russia 2023
Дата 5 октября
Время 10:00 – 17:00
Место Москва Онлайн
Joker
Дата 9 – 14 октября
Время 16:00 – 19:30
Место Санкт-Петербург Онлайн
Открытый урок «Kafka Streams»
Дата 16 октября
Время 10:00
Место Онлайн
Питч-сессия pravo (tech) impulse
Дата 19 октября
Время 15:45 – 17:30
Место Москва
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн
IT Recruiting – HR Forum 2023
Дата 8 – 10 ноября
Время 9:00 – 18:00
Место Москва
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн

Задачи про PEG-парсеры

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 1.4K

Когда-то я хотел сделать контест по парсингу для Codeforces. Придумал задания двух типов:

1. Дается неформальное описание языка, по которому нужно создать грамматику (например, "язык с правильными скобочными последовательностями")

2. Даны примеры строк в языке, по которым нужно восстановить грамматику

У обоих типов заданий есть свои проблемы, так что контест я не сделал.

В итоге я сделал игру программу, в которой можно решать задания второго типа, при этом проверять строки на принадлежность угадываемому языку.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Koin: Простой и легковесный фреймворк для внедрения зависимостей

Время на прочтение 15 мин
Количество просмотров 1.6K
Перевод

Принцип внедрения зависимостей становится все более неотъемлемой частью процесса разработки. Без него сложно представить себе достижение желанного разделения обязанностей в коде или обеспечение должного уровня тестируемости.

В то же время, хотя Spring Framework и является широко распространенным выбором, он далеко не всем подходит. Некоторым было бы предпочтительнее использовать более простые и легковесные фреймворки с продвинутой поддержкой асинхронных операций ввода-вывода. Другие были бы признательны за статическое разрешение зависимостей для более быстрого запуска приложения.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 0

Yandex MapKit для новичков: разрабатываем карты в Android-приложении

Уровень сложности Простой
Время на прочтение 19 мин
Количество просмотров 2.5K
Туториал

А давайте познакомимся поближе и поработаем с Яндекс-картами в Android-приложении! Внедрим и настроим библиотеку Yandex MapKit: откроем определенную область на карте, выставим метку в нужном месте, установим на неё желаемые растровые и векторные изображения, поиграемся с зумом, обработаем нажатие на пин, а также будем визуально выделять объекты на карте при клике и получать от них интересующую нас информацию.

Поехали!
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 4

Книга «Head First. Программирование для Android на Kotlin. 3-е изд.»

Время на прочтение 4 мин
Количество просмотров 4.4K
image Привет, Хаброжители!

Вам уже пришла в голову гениальная идея мобильного приложения, которое завоюет весь мир? Дело за малым — воплотить ее в жизнь.

Эта полностью переработанная и обновленная книга поможет сразу приступить к работе. Вы на практике узнаете, как структурировать приложение, создавать гибкие и интерактивные пользовательские интерфейсы, сохранять информацию в базе данных и использовать новейшие возможности Android Jetpack и Jetpack Compose. Все, что вам нужно для успешного старта — это немного базовых знаний о языке Kotlin.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 2

Ракету пустил и забыл. Или как заставить DI работать

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2.1K

Ваш первый день на работе. Вчера вы рассказывали про чистую архитектуру, SOLID принципы, и про то, как создавать аккуратную и масштабируемую архитектуру.

Сегодня нужно написать простенький экран, который будет отображать список. Вы с огромным энтузиазмом начинаете реализовывать прекрасный список - каталог товаров магазина. Один запрос, один список. Все сделали красиво, фрагмент создался, подтянул из DI ViewModel, которая в свою очередь передала остальным слоям, чтоб загрузить данные по АПИ и закешировать их. Все эти компоненты правильно освобождаются, так как все это сделано как надо отдельным Субкомпонентом с отдельным скоупом.

Следующий день, оказалось, что к списку нужно добавить расценки, однако их можно загружать только отдельным запросом. Этот запрос оказался тяжелым на сервере, так что каждый ответ может приходить дольше чем обычно, и сам запрос ко всему списку разбит на несколько подзапросов. При отправке запроса клиент должен выслать список наиболее просматриваемых товаров пользователем. Бэк при этом очень попросил лишний раз запросы не делать, так как сервер и так не справляется.

В одночасье, мы понимаем, что наша шаблонная архитектура превращается из легкой и понятной в сложную и нечитабельную. А все потому, что нам нужно прежде всего обеспечить жизненный цикл компонентов достаточно большим, чтобы эти компоненты успели: собрать информацию для запроса, выполнить долгие запросы, а может быть и несколько за раз, при страничной загрузке, сохранить ответы сервера и закешировать их, также сформировать один общий список товаров с 2 разных запросов и, наконец, выполнить фильтрацию и сортировку конечного списка.

Читать далее
Рейтинг 0
Комментарии 21

Kotlin Multiplatform в ОС Аврора

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 4.3K

В данной статье описана работа ОС Аврора с технологией Kotlin Multiplatform. Рассматривается метод подключения модуля Kotlin Multiplatform к приложению на Qt/QML. Для демонстрации было портировано уже существующие демо приложение "KMM RSS Reader". Проведены тесты производительности.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 7

Kotlin: взгляд изнутри — преимущества, недостатки и особенности

Уровень сложности Средний
Время на прочтение 32 мин
Количество просмотров 11K

Всем привет! На связи Сергей Керенцев, Android-разработчик Студии Олега Чулакова на проектах Сбера.

В данной статье мы углубимся в мир Kotlin, рассмотрим его основные преимущества, недостатки и особенности. Мы обойдем такие важные аспекты, как безопасность работы с null-значениями, гибкость типизации с помощью Generics, возможности расширения функциональности с помощью extension-функций, inline-функции, а также многое другое.

Давайте начнем наше увлекательное путешествие в мир Kotlin и раскроем его потенциал!

Читать далее
Всего голосов 16: ↑12 и ↓4 +8
Комментарии 31

Вклад авторов