Как стать автором
Поиск
Написать публикацию
Обновить
49.37

Kotlin *

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

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

Rich Errors в Kotlin 2.4: шаг вперёд или шаг в сторону?

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

Команда Spring АйО не могла остаться в стороне и не прокомментировать одну из самых обсуждаемых новинок Kotlin, анонсированную на KotlinConf 2025 — Rich Errors.

Читать далее

Новости

Mobile System Design. Проектируем новостную ленту

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

Элементы System Design уже прочно вошли в процесс собеседований. Однако в мобильной разработке довольно часто возникает недопонимание что же все-таки необходимо продемонстрировать чтобы получить заветный офер. В этой статье я разберу один из кейсов, который может встретиться на реальном собеседовании и кроме этого покажу примерный сценарий такого интервью. Данная статья будет интересна мобильным разработчикам, как Android, так и iOS. Сам формат System Design Interview я разбирал в предыдущей статье. Здесь же мы сконцентрируемся на практике.

Итак, задача: спроектировать новостную ленту. 

Читать далее

Structured Concurrency в Java: наконец-то находит опору

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

API structured concurrency в Java наконец-то обрёл устойчивость. В новом переводе от команды Spring АйО подробно рассматриваются последние изменения, появившиеся с выходом JEP 505: фабричный метод open(), политики Joiner'ов, улучшенная отмена задач, дедлайны, передача контекста через ScopedValues и строгая защита от ошибок использования. Всё это делает параллельное программирование в Java более безопасным, читаемым и управляемым.

Читать далее

Пишем агента на Kotlin: KOSMOS

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

Интернет завален реализациями на Питоне, но иногда удобнее разбираться с технологиями на своём основном языке. Для мен;я это Kotlin.

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

Статья обещает соблюдать два принципа, упрощающих восприятие:

‣ Движение от частного к общему, потому что легче воспринимать примеры, чем абстракцию.
‣ Быстрая обратная связь, как с REPL.

Агента реализуем так, чтобы легко было заменить лежащую в основе LLM. Посмотрим, как отличается работа при использовании REST API в сравнении с SDK, пощупаем Гигачат и Anthropic.

Ах да, 🪐 KOSMOS — акроним. Kotlin Open Synthetic Mind Orbiting System.

Читать далее

Погружение в разработку плагинов для Android Studio

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

В одной из прошлых статей было рассказано, как начать разработку собственного плагина для Android Studio (или IntelliJ Idea). В этой статье окунёмся немного глубже и создадим более сложные и, хочется верить, ещё более полезные инструменты для повседневной работы в IDE.

Рассмотрим разработку плагинов для IntelliJ Idea и Android Studio на нескольких нетипичных, но простых и боевых задачах. Будет много полезных ссылок, пояснений и несколько примеров с кодом.

Читать далее

Spring Data JDBC и R2DBC 4.0 получат поддержку составных идентификаторов

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

Эксперт Spring АйО и по совместительству Spring Data контрибьютор Михаил Поливаха прокомментировал статью, переведенную командой Spring АйО, про поддержку составных ключей со стороны Spring Data JDBC и R2DBC, начиная с версии 4.0.0-M4 — то, чего так не хватало при работе с моделями, где первичный ключ состоит из нескольких полей.

Теперь достаточно просто описать record с нужными полями, пометить его как @Id, и Spring Data сам корректно построит SQL-сущность. В статье наглядно показано, как использовать новую возможность, какие аннотации пригодятся и как обойти ограничение с автоинкрементом через BeforeConvertCallback.

Читать далее

lateinit вместо nullable: пять ошибок

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

Привет, Хабр!

Сегодня разберёмся, почему попытка «избавиться от ? любой ценой» приводит к проблемам, и как жить с этим вообще жить.

Читать далее

«Open Tracker: как разработать Android-приложение для автоматического трекинга коммерческих представителей. Часть 2»

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

Во второй части статьи рассматривается реализация пользовательского интерфейса Android‑приложения Open Tracker для автоматического трекинга коммерческих представителей. Основное внимание уделено минималистичному дизайну, работе с системными разрешениями и механизму передачи данных между фоновым сервисом и UI. Описаны три ключевых экрана (OverView, Log, Settings), а также особенности их взаимодействия с ядром приложения. Статья будет полезна разработчикам, создающим аналогичные решения с использованием Jetpack Compose, StateFlow и современных архитектурных подходов.

Читать далее

«Open Tracker: как разработать Android-приложение для автоматического трекинга коммерческих представителей. Часть 1»

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

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

Читать далее

IntelliJ IDEA переходит на единый дистрибутив

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

Команда Spring АйО перевела статью от JetBrains, в которой анонсировано важное обновление: начиная с версии 2025.3, IntelliJ IDEA будет распространяться в виде единого дистрибутива, вместо отдельных версий Community и Ultimate. 

Теперь каждый разработчик получит более мощный, гибкий и удобный инструмент «из коробки», независимо от подписки. Open source-компоненты по-прежнему доступны, а новая модель обещает улучшенный user experience, бесплатный доступ к большему числу функций и упрощённый процесс сборки из исходников.

Читать далее

Циклические зависимости в Spring: проблема и способы её решения

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

Если вы хоть раз разрабатывали проект на Spring, наверняка сталкивались с циклическими зависимостями. Эта проблема настолько распространена и одновременно болезненна, что о ней можно услышать как от спикеров, так и от участников крупнейших технических конференций.

На недавнем JPoint один из разработчиков рассказал мне, как вручную избавлялся от циклических зависимостей на огромном боевом проекте, изучая гигантскую диаграмму зависимостей.

К счастью, современные инструменты разработчика позволяют решать эту задачу намного быстрее и эффективнее.

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

Читать далее

День рождения Kotlin и релиз нового HTTP-клиента для IntelliJ IDEA в Open Source

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

День рождения Kotlin уже на следующей неделе! Мы не могли обойти это замечательное событие стороной и решили провести прямую трансляцию, посвященную ему.

Мероприятие пройдет онлайн 22 июля, в 17:00 (МСК), на YouTube, VK и RUTUBE каналах Amplicode. Участие абсолютно бесплатное.

Главное – зарегистрироваться, чтобы получить на почту ссылки на трансляцию и файл .ics для добавления события в календарь.

Читать далее

Каскадное меню в Jetpack Compose Kotlin

Время на прочтение3 мин
Количество просмотров1.7K

В Jetpack Compose легко реализуется меню первого уровня. Но реализация вложенного (каскадного) меню не очевидна, поскольку в лямбде onClick пункта меню DropdownMenuItem() невозможно вызвать @Composable функцию, которая будет отображать вложенное меню.

Мне пришлось потратить значительное время на поиски решения. Для того, чтобы помочь ищущим предлагаю разработанный мной вариант.

Тест меню реализован на основе проекта Empty Activity Android Studio.

Читать далее

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

OpenIDE — профессиональные инструменты без ограничений

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

31 июля состоится публичный запуск OpenIDE — новой мультиязычной среды разработки, построенной на базе IntelliJ IDEA Platform. Вместе с ключевыми разработчиками, лидерами и представителями отрасли мы обсудим:

1) Зачем появилась OpenIDE
2) Как она уже сегодня может заменить IntelliJ Platform для Java и Spring
3) В чём её ценность для всей экосистемы
4) Как работать с проектами на Go, Python и TypeScript
5) И расскажем, как присоединиться к сообществу и развитию проекта

Мероприятие пройдет онлайн 31 июля, в 17:00 (МСК), на YouTubeVK и RUTUBE каналах Spring АйО. Участие абсолютно бесплатное.

Главное — зарегистрироваться, чтобы получить на почту ссылки на трансляцию и файл .ics для добавления события в календарь.

Читать далее

Explyt Spring Plugin: поддержка Quarkus

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

Всем привет! На связи команда Explyt Spring. На этот раз как следует из названия будем говорить о поддержке Quarkus. На первый взгляд может показаться странным, причем тут Spring плагин и Quarkus. Но если разобраться более детально, то Spring также имеет поддержку Java EE аннотаций и к тому же поддержка Dependency Injection является одной из сильной сторон нашего плагина. Да и логика DI в Quarkus сильно проще чем в Spring, можно убедиться в этом прочитав официальную документацию, поэтому можно легко переиспользовать все наши текущие наработки и добавить поддержку Quarkus DI в наш плагин. И это также позволило переиспользовать для него многие другие наши «фичи», о чем будет рассказано ниже.

Читать далее

Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 2

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

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

Читать далее

Подключение Spring AI к локальным AI-моделям с помощью Foundry Local

Время на прочтение8 мин
Количество просмотров1.7K

Команда Spring АйО перевела статью, которая покажет, как интегрировать Spring AI с Foundry Local — десктопным приложением от Microsoft, совместимым с OpenAI API. Вы узнаете, как настроить локальную AI-модель, подключить её к Spring Boot и создать REST-эндпоинты для чат-бота и суммаризации текста. Всё это — с акцентом на производительность, безопасность и автономность.

Читать далее

Я написал свой VPN-клиент для Android. Зачем, если их сотни, и что скрывается под капотом?

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

Каждый раз, нажимая кнопку «Connect» в очередном VPN-приложении, я ловил себя на мысли: а что там, под капотом? Как эта магия на самом деле работает на уровне Android? Вокруг сотни готовых решений, но простое пользовательское любопытство переросло в профессиональное: мне захотелось не просто использовать, а понять. Понять, какие подводные камни скрывает VpnService, как реализовать весь цикл от авторизации до поднятия защищённого туннеля и что на этом пути может пойти не так.

Эта статья — мой личный "бортовой журнал". Я не претендую на создание самого безопасного решения, это скорее история о пути, граблях и открытиях для тех, кто тоже решит заглянуть под капот VPN-технологий на Android.

Так родилась идея этого проекта — создать свой, пусть и простой, VPN-клиент. Это не попытка сделать коммерческий продукт, а скорее исследовательское погружение, мой личный "челлендж" и способ разложить всё по полочкам.

Заглянуть под капот

Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 1

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

Чистая архитектура — не просто модный термин, а способ держать код в узде по мере роста Android-приложения. В этой статье — подробный разбор того, как выстроить работу с UseCase’ами: от базовой интеграции в ViewModel до сложных кейсов с несколькими провайдерами и платежными системами. Разберёмся, как применять принципы SOLID на практике, не скатываясь в оверинжиниринг — и при этом не жертвовать гибкостью архитектуры.

Читать далее

Java Digest # 26

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

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

В этом выпуске будут материалы о том, как ускорить запуск приложений с помощью ReadyNow и CRaC — двух подходов к оптимизации старта. Разберем тонкости аннотации @TestInstance(PER_CLASS) в JUnit 5 и ее влияние на жизненный цикл тестов. 

Тем, кто работает со Spring, может пригодиться обзор Spring Debugger от JetBrains — плагина, который делает отладку наглядной и удобной. Еще будет доклад о повышении производительности Spring Data JPA и Hibernate. И в завершение — сравнение FFM API с Unsafe: посмотрим, какой трейдофф между скоростью и безопасностью предлагает новый подход. Приятного прочтения!

Читать выпуск №26
1
23 ...