Обновить
161.25

Java *

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

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

Структура кода в папке Domain по DDD

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

В слое Domain 90% проектов с тактическим DDD забыли о самом главном. Сегодня мы вспомним то о чем забыли или узнаем то чего не знали.

Читать далее

Как приручить iText8: превращаем HTML в PDF без седых волос

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

Представьте ситуацию: пятница, вечер, до релиза осталось два дня. Заказчик внезапно вспоминает, что «было бы неплохо генерировать договоры в PDF». Знакомо?

Я оказался в похожей ситуации год назад. Задача казалась тривиальной: взять HTML-шаблон счёта, подставить данные и получить красивый PDF. «Часа на два работы», — подумал я. Как ошибался...

Читать далее

OpenIDE Pro: ответ на запросы бизнеса и разработчиков одновременно

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

Привет! Я Фёдор, CEO OpenIDE. За год с момента анонса OpenIDE выросла в стабильную, привычную и активно используемую IDE, которую всё чаще выбирают разработчики и компании. Мы создали её быстрой, предсказуемой и полностью доступной — и теперь готовы к следующему шагу.

В этой статье — что мы сделали, зачем мы это делаем и куда дальше движется OpenIDE.

Читать далее

Fluent API. Часть 3 — что нам стоит Fluent API построить?

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

Теперь, после того как в предыдущей статье так красочно описаны преимущества Fluent API появилось опасение что все  эти “плюшки” просто не могут быть бесплатными. Наверняка это очень дорого, или нет?

Читать далее

Fluent API. Часть 2 — а оно нам надо?

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

Продолжаем разговор о Fluent API. И теперь, после того как мы из предыдущей статьи (или/и личного опыта) узнали о том что это чудо из себя представляет давайте разберемся зачем оно нужно?

Читать далее

Fluent API. Часть 1 — это вообще о чём?

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

В то время как аналитики жарко спорят на тему станет ли основным языком программирования 6-го (видимо) поколения английский или все-таки китайский предлагаю поговорить немного на другую тему, но в том же направлении: как сделать код программы ближе к человеку? 

Один из ответов на этот вопрос зародился еще в 70-х годах прошлого столетия как method chaining в рамках языка Smalltalk и, благодаря стараниям Эрика Эванса и Мартина Фаулера дошел до нас как Fluent API.

Читать далее

Больше никаких велосипедов: готовый Spring Boot Starter для Telegram-ботов

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

После создания примерно десятка Telegram-ботов я понял, что архитектура, конфигурации и маршрутизация повторяются из проекта в проект. Готовых актуальных решений для Spring Boot я не нашёл. Поэтому разработал собственный Telegram Bot Spring Boot Starter: с прозрачным пайплайном, набором готовых компонентов и возможностью гибкой кастомизации.

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

Читать далее

Elasticsearch: реляционная база данных против поискового движка — Битва Титанов

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

В мире разработки часто возникает соблазн использовать знакомый инструмент для всех задач. Зачем изучать что-то новое, если есть проверенная реляционная база данных (РСУБД), такая как PostgreSQL или MySQL? Однако, когда дело доходит до реализации мощного, быстрого и релевантного поиска, этот подход терпит неудачу.

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

Чтобы статья была максимально практико-ориентированной, мы рассмотрим, как с помощью Spring Boot быстро поднять приложение с интегрированным Elasticsearch и реализовать поиск, который «летает».

Читать далее

Hibernate Validator 9.1: самый мощный апгрейд за последние годы

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

Что, если ваш валидатор стал бы в 3 раза быстрее и потреблял бы вдвое меньше памяти — без единой правки бизнес-логики? Именно это случилось с Hibernate Validator 9.1: ушли тяжёлые коллекции, пришёл умный стек. Каскадная валидация теперь летает, даже при циклах в графе объектов.

Плюс бонус: меньше мусора в памяти, меньше аллокаций, быстрее интерполяция сообщений. В бенчмарках — просто космос. Все это – в новом переводе от команды Spring АйО.

Комментарий Поливаха Михаила: Несмотря на то, что с валидацией мы напрямую работаем не часто, имейте в виду, что Spring Boot и ваши @RestController-ы под капотом всё равно используют hibernate-validator. Поэтому почитайте, не поленитесь.

Читать далее

Внешний мониторинг доступности IT-приложений

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

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

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

Читать далее

Миграция демо-проекта на Spring Boot 4, Spring 7.0, JDK 25

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

Продолжаю серию публикаций про наши Java-онлайн курсы. Предыдущие посты:

Тесты на дженериках. Параметризация AssertJ и сравнение Json через объекты

Контроллеры на дженериках: пишем кода в 3 раза меньше

Миграция Java Spring Boot на Kotlin

Работа с документами в Java

Как многие знают, недавно вышел Spring Boot 4 / Spring 7.0. В постах компании@spring_aio есть несколько статей по новому функционалу.

Я мигрировал наш небольшой учебный демо-проект Spring Boot 3.x HATEOAS (ссылка на GitHub) на Spring Boot 4 и добавил API версионирование. В статье даю ссылки на новый функционал, описываю шаги миграции и код проекта. Буду рад читателям:)

Читать далее

OpenIDE 2025.2: поддержка Java 25, Virtual Thread Debugging и обновления UI

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

Вышла OpenIDE 2025.2 — первая российская IDE с поддержкой Java 25. Мы идём в ногу с платформой и остаёмся на самом острие технологий. Но не только этим релиз интересен: в нём появилась улучшенная отладка виртуальных потоков, обновления связанные с UI, а ещё пара важных обновлений экосистемы.

Поехали по порядку.

Читать далее

Помогите, мой Java-объект исчез (и GC тут ни при чём)

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

Команда Spring АйО подготовила перевод разбора реального бага в HotSpot от разработчика OpenJDK. Во время работы над Project Valhalla его Java-объекты и классы начали «исчезать» без участия сборщика мусора — и поиск причины привёл к одному неверному биту в заголовке объекта, miscompilation в C2 и очень нетривиальному отладочному квесту. Этот текст показывает, как устроены mark word и Compact Object Headers, чем живёт Valhalla и как системное мышление плюс флаги JVM помогают выловить самые коварные ошибки.

Читать далее

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

Три способа менять один объект из нескольких потоков. Больше нет

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

Три способа менять один объект из нескольких потоков. Больше нет

Mutex, CAS, акторы, STM, CRDT, иммутабельность, MVCC, Disruptor…

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

На самом деле их ровно три. Всё остальное — реализации и комбинации.

Эта статья — попытка навести порядок в голове. После неё вы сможете:

за 5 секунд классифицировать любой подход к конкурентности;
понимать, почему Erlang выбрал акторы, а Java предлагает synchronized;
не изобретать велосипеды и не зацикливаться на «единственно правильном» решении;
проектировать многопоточный код, держа в голове простую модель.

Заодно, покажу почему ООП вообще не было изначально спроектировано под многопоток.

Читать далее

“JavaScript — это плохо, а Java — это хорошо”. AI, вайб-кодинг, Spring и рынок труда: что волнует джавистов сегодня

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

На конференции Joker 2025 у нас была отличная возможность понять, как живётся Java-сообществу.

Как AI влияет на Java-разработку? Вайб-кодинг — полезный инструмент или угроза рабочим местам? Spring — незаменимый фреймворк или слишком тяжёл для многих задач? Что с рынком труда и зачем кандидаты накручивают опыт? И главное — зачем писать на Java, если есть JavaScript? 

Смотрите на YouTube и VK Видео

Читать далее

Ouroboros — язык программирования почти без синтаксиса

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

От переводчика: статья немного сокращена по сравнению с оригиналом, исключён раздел об этимологии слова "Ouroboros", а также полные каламбуров отсылки автора к латинским, прочим романским и английским корням.

Далее - от автора.

Можно ли создать язык программирования, в котором нет синтаксиса? Кажется, что это чистое противоречие. Вся суть языков программирования заключается в синтаксисе, плюс немного в генерации и оптимизации кода, настройке сред выполнения и т.д. Но с точки зрения программиста — именно синтаксис самая важная часть языка. Когда вы приступаете к изучению нового языка программирования, вам обязательно придётся уделить время освоению синтаксиса. 

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

Именно этих целей мы попытались достичь, создав язык Ouroboros. Его синтаксис максимально прост. Настолько, что в этом языке даже не предусмотрен синтаксический анализатор. В нём есть только лексический анализатор, код которого составляет 20 строк.

Читать далее

Проблемно-ориентированная система на основе консольных JAVA приложений

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

Привет, Хабр! Хочу поделиться опытом разработки такой системы. Определяющими параметрами проблемно‑ориентированной системы являются.

Читать далее

Создаём мини-фреймворк для MapReduce в Scala с конкретной реализацией

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

Статья демонстрирует построение минималистичного MapReduce-фреймворка на Scala для локальных экспериментов. Рассматриваются стадии Map, Shuffle и Reduce с ленивыми вычислениями через Iterator, а также абстракции ввода/вывода IO и локальные исполнители с виртуальными потоками.

Читать далее

HistoryHelper — плагин для DBeaver, который генерирует history-таблицы и триггеры за пару кликов. Часть 2

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

Приветствие

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

Читать далее

Java Digest #31

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

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

Этот месяц в мире Java выдался насыщенным. В JDK 26 готовят превью Lazy Constants и Structured Concurrency, собираются убрать режим строк только UTF‑16, а стандартный HttpClient получает более гибкую поддержку TLS.

Главное событие — GA‑релизы Spring Framework 7 и Spring Boot 4: модульная автоконфигурация, новый HTTP‑клиент, версионирование REST API, переход на Jackson 3 и множество других улучшений.

Из практики: разбор пагинации в Spring Data JPA, подводные камни MapStruct и заметка о балансе между чтением и написанием кода. Приятного чтения!

Читать тридацать первый выпуск

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