Обновить
151.13

Java *

Объектно-ориентированный язык программирования

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

Вся правда о данных: от примитивов до озера данных в эпоху микросервисов. Гайд для Java-разработчика

Уровень сложностиПростой
Время на прочтение127 мин
Охват и читатели2.7K

Данные — это новая нефть. От эффективности работы с ними напрямую зависит успех любого проекта, особенно в эпоху микросервисов. В этой статье мы погрузимся в мир данных и рассмотрим его с точки зрения Java-разработчика, который хочет добиться продуктивности и оставаться во всеоружии при работе с любыми объемами информации.

Цель этой статьи - предоставить полное руководство по структурам, концептам и инструментам для работы с данными в экосистеме Java, с уклоном в микросервисную архитектуру.

Мы пройдем путь от простейших структур данных, таких как примитивы и массивы, до сложных концептов, таких как озера данных и потоки событий. Рассмотрим различные способы хранения, обработки и передачи данных, а также архитектурные компоненты, необходимые для построения эффективных систем. Подробно остановимся на стратегиях развития - как правильно выбрать структуру и инструменты в зависимости от стадии развития проекта, от прототипа до высоконагруженной системы. Особое внимание уделим специфике микросервисной архитектуры и тому, как она влияет на выбор подходов к работе с данными.

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

Читать далее

Телеграм-бот с ИИ Jlama: добавляем новые фичи

Уровень сложностиСложный
Время на прочтение6 мин
Охват и читатели908

Привет Хабр! В прошлый раз мы сделали телеграм-бота с полноценным ИИ. Теперь мы продолжим добавлять новые интересные фичи нашему боту, но в этот раз мы начнем с конца и посмотрим на готовый результат, а потом разберем код и детали реализации.

Читать далее

Глубокое погружение в процедуру запуска JVM

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели6K

Новый перевод от команды Spring АйО расскажет вам, что происходит при запуске самого простого приложения на Java, какие шаги выполняет JVM, сколько классов ей необходимо загрузить, чтобы просто написать «Hello World!» и как все это выглядит на уровне byte code.

Читать далее

Сложные «танцы» дилетанта вокруг телеграмм-бота викторины на java

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели393

Написав в 2023 году своего второго бота — картинную галерею (функционал которого был достаточно прост — выдавать пользователю по запросу примеры картин художников, экспонирующиеся в крупных российских музеях), во мне зародилась мысль трансформировать его в викторину, где пользователь должен угадать художника той или иной картины.

Читать далее

Итоги года вместе с Amplicode

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели777

Первые публичные демо, ажиотаж на конференциях, поддержка Spring Data JDBC, разработка собственного HTTP-клиент (Connekt), интеграция с Kubernetes, тысячи активных пользователей, сотни тысяч просмотров на YouTube и участие в создании OpenIDE — так можно охарактеризовать 2024 год одним предложением с точки зрения команды Amplicode.

Читать далее

TrueSql — ультимативный sql-коннектор для Java

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели1.5K

Community долго шло к видению, что Java новых версий это хороший язык, но у него проблема с библиотеками. Сегодня мы готовы публично представить TrueSql – библиотеку для “right” работы с базой данных из Java.

Читать далее

Flyway Baseline миграция без лишних слов: Что это и зачем нужно

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели1.9K

В новом переводе от команды Spring АйО вы узнаете, как работает baseline миграция во Flyway, в чем ее отличие от обычного скрипта миграции и каковы преимущества ее использования.

Читать далее

Java Digest #21

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели2.4K

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

Читать далее

Как уронить Minecraft своим модом

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели2.9K

Разработка модификаций для игры Minecraft — очень интересное и приятное хобби. В этой статье мы посмотрим на ошибки в модификациях для нашей любимой игры на примере проекта Custom NPC+. Воспроизведём их в игре и уроним Minecraft.

Читать далее

Lombok в Java: избавляемся от бойлерплейта

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

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

Если вы писали на Java хоть раз, то знаете этот ужас — бесконечные геттеры, сеттеры, конструкторы, да ещё toString() и equals() на закуску. Одной только стандартной обвязки в классах моделей больше, чем самого кода.

Lombok — это библиотека, которая берёт всё это бойлерплейтное безумие оставляет только чистую суть.

Читать далее

Spring Security: разберём по полочкам токены, фильтры и авторизацию (с диаграммами!)

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели16K

Команда Spring АйО перевела статью, в которой подробно рассматривается процесс регистрации и аутентификации пользователей с использованием Spring Security.

Читать далее

Valhalla — эпичный рефакторинг Java. Часть 1: История проекта, сложности реализации и цели

Время на прочтение7 мин
Охват и читатели7.4K

Команда Spring АйО перевела и адаптировала доклад Брайана Гоетца «Valhalla — эпичный рефакторинг Java», который будет опубликован несколькими частями. В первой части серии будет рассказано об истории и причинах появления проекта Valhalla и, вкратце, об основных целях, которые ставила перед собой команда.

Читать далее

Мне 34, я был в 67 странах, и у меня есть для вас лайфхак (часть 2)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели43K

Два месяца назад я написал Телеграм-бот, который помогает мне выхватывать дешёвые авиабилеты (и нет, это не рекламная интеграция). Я прикрутил Python-интеграцию к Telegram по протоколу для клиентов, чтобы читать сообщения из любых публичных групп, к backend-части на Spring — она позволяет через бота подписываться на эти группы и настраивать, какие сообщения выхватывать для вас.

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

Я реанимировал бот, добавил несколько киллер-фичей и готов поделиться с вами всеми наработками. В статье найдёте код, ссылки на бот и примеры, как другие пользователи ищут через бот скидки на айфоны и много чего ещё.

Читать далее

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

Путеводитель по техническим транзакциям с Camunda 8 и Spring

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели1.7K

Интересно, как работают технические транзакции с Camunda и фреймворком Spring? Узнайте больше о транзакционном поведении в этом посте.

Читать далее

Пойдём в нейросети вместе со мной

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

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

Но как насчёт нейросети на jave реализованной без использования матриц? Просто нейроны. Просто связанные между собой.

И что если я скажу тебе, что скорость работы этих двух подходов примерно сравнима между собой?

Читать далее

Альтернатива Keycloak: как настроить SSO в Authentik

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели7.2K

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

Не так давно передо мной встала задача настроить единый вход (SSO) в наше приложение, и так исторически сложилось, что в компании для этого используют open‑source‑провайдер аутентификации authentik.

Первым делом я, конечно, полез в официальную документацию провайдера, но, к сожалению, не нашел там каких‑то подробных гайдов или туториалов по настройке. Дальше я, само собой, решил погуглить — нашел статьи по запуску authentik, а вот более‑менее подробного туториала, как все это заставить работать, используя наш стек (Java, Spring Boot), не оказалось. Поэтому я решил сделать его сам.

В статье разберем шаги для простейшей настройки authentik и запустим его в связке с Spring Boot приложением.

Читать далее

Заговор разработчиков против корпораций: архитектура и принципы

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.7K

С момента написания предыдущей статьи я находился под пристальным вниманием. Попытка опубликовать материалы на англоязычных платформах обернулась фиаско — в первые же минуты легионы последователей тайного братства обрушились с критикой:

— Нет никакой организации! — вопили они.

Подозреваю, что слежка велась через мой телеграм-канал.

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

Узнать тайны, о которых молчали

IntelliJ IDEA 2025.1 EAP 3

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

Команда Spring АйО перевела статью от JetBrains про релиз третей версии EAP для IntelliJ IDEA 2025.1. 

Среди нововведений: обновления режима Kotlin K2, улучшенное логическое представление в панели Structure и автодополнение для несуществующих репозиториев Spring Data.

Читать далее

WireMock: Легкий путь к эффективному тестированию

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели10K

Привет, меня зовут Иван, и я зануда.

Сразу скажу, что в моем понимании зануда в тестировании — не тот человек, который всех достал и которого все хотят удушить, а тот, который умеет показать людям, что нужно делать хорошо и не делать плохо, и добиться от них этого. Я считаю, что QA должно расшифровываться как Quality Assistant. Это даже не про Assurance, когда вы обеспечиваете качество, это именно про то, что вы как тестировщик и участник команды помогаете на каждом этапе от требований до выкатки в прод и работы с сопровождением и вашими коллегами добиться того, чтобы каждый этап проходил все лучше и лучше.

В тестировании я уже семь лет, для кого-то это маленький срок, для кого-то — большой, я очень впечатлен коллегами, которые работают уже по 15-20 лет, но развиваюсь, стараюсь нести добро в массы. Одна из моих основных специализаций заключается в том, что я прихожу на проекты, которые начинаются с большой бизнес-идеи, движущейся через много команд. Мне нравятся все вопросы межкомандного тестирования, интеграционного взаимодействия, выстраивания стендов, как драйвить коллег, чтобы мы двигались в одном направлении и не словили на проде кучу ошибок — этим я и занимаюсь.

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

Читать далее

JDBC Fetch Size: Маленькая настройка, большие последствия

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

В новом переводе от команды Spring АйО Гевин Кинг, создатель Hibernate, объясняет, почему значение fetch size по умолчанию в драйвере Oracle может замедлять запросы — и как его изменение помогает повысить масштабируемость системы.

Читать далее

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