Обновить
256K+

Java *

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

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

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

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

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

Читать далее

Apache Flink: использование и автоматическая проверка собственного сериализатора состояния

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

Привет, Хабр! На связи Александр Бобряков, техлид команды МТС Аналитики. Это мой финальный пост про Apache Flink. В предыдущих частях мы рассматривали процессы сериализации данных, написали кастомный сериализатор, а также покрыли его тестами. В них проверялась поддержка эволюции схемы состояния. Для этого мы реализовали много удобных абстракций, связанных с перезагрузкой Flink MiniCluster, компиляцией тестовых java-классов, использованием их в classpath кластера и так далее.

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

Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring. В master-ветке представлен итоговый проект по всей серии. Данная статья соответствует релизной ветке с названием release/11_JacksonEvolvingState. По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.

Список моих постов про Flink:

Читать далее

Java становится надежнее: «Целостность по умолчанию» в действии

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

Команда Spring АйО перевела статью про ужесточение контроля за динамической загрузкой агентов, ограничения доступа к опасным методам работы с памятью и JNI в новых версиях JDK.

Читать далее

Telegram бот + ИИ Jlama своими руками

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

Хабр, привет! Сегодня мы попробуем сделать свой ИИ с телеграм ботом для возможности простого общения с ней. Сразу оговорюсь, мы не будем в очередной раз использовать открытый API ChatGPT или новомодного Deepseek. Мы развернем свой полноценный ИИ локально и сынтегрируем его с телеграм ботом.

Читать далее

Разработка эффективных агентов с помощью Spring AI (Часть 1)

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

Команда Spring АйО перевела статью, в которой рассказывается про разработку эффективных агентов с помощью Spring AI. Исследование Anthropic "Building effective agents" подчеркивает важность простоты и модульности в разработке LLM-агентов.

В статье рассматривается, как эти принципы реализуются в Spring AI через пять ключевых паттернов: Chain Workflow, Parallelization Workflow, Routing Workflow, Orchestrator-Workers и Evaluator-Optimizer.

Читать далее

Введение в реактивное программирование

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

Так уж получилось, что, устроившись на свою первую работу, я был вынужден напрямую столкнуться с Project Reactor в некоторых сервисах (чего, честно говоря, совсем не ожидал). Почесав репу, я понял, что придется мне идти курить доку, так как знаний по данной теме у меня, мягко говоря, было немного (знал Reactor примерно на уровне: чем отличается Mono от Flux).

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

Читать далее

Уйти от ORM

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

По результатам статьи про Spring Data JPA хабровчане критиковали нас за то, что мы наступали на трудовые мозоли, но не сказали что надо делать. В этой статье мы, наконец, предложим концептуальное решение проблемы ORM.

Читать далее

Использование Drools для конфигурирования приложения

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

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

Читать далее

Amplicode Frontend — фуллстек на час: создай админку для своего Spring-приложения

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

Не часто Spring разработчикам нужно разрабатывать админки, но когда нужно… Встает вопрос, какую технологию для этого выбрать. Неплохим решением может стать фреймворк Vaadin, или платформа Jmix, которую тоже разрабатывает наша компания. Языковая преемственность и возможность писать фронтенд код на бекенде очень подкупают, однако, эти технологии не лишены определенных проблем. В частности, глубокая кастомизация потребует серьезного погружения в технологию, что создает определенные риски для проекта. Возможно, есть какая-то альтернатива с использованием более популярных фронтенд технологий?

Читать далее

Java, Taint и SAST: что это и зачем, и причём здесь ГОСТ 71207

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

На Java пишется огромное количество серверного кода. Отсюда следует, что написанные на ней веб-приложения должны быть устойчивы к специальным уязвимостям. И эта небольшая статья как раз про один из способов борьбы с ними — SAST. И ещё про то, что такое taint-анализ и как он во всём этом участвует.

Читать далее

Как тестировать бизнес-процессы в Camunda: пошаговый гайд

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

На один из процессов я разработала почти 150 тестов. В статье показываю и рассказываю, как тестировать в Camunda.

Читать далее

Гайд по подготовке к собеседованию для Backend-разработчиков

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

Недавно я провёл своё 40-е собеседование в Booking.com, где оцениваю кандидатов по кодингу, системному дизайну и код‑ревью. Я хорошо понимаю ожидания от кандидатов на разные уровни: core developer, senior developer и engineering manager. Эти знания могут быть полезны для тех, кто готовится к собеседованию в Booking.com или других крупных компаниях с аналогичной структурой.

Читать далее

Docker — все в одной «коробке»

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

Представь себе ситуацию, когда для включения компа тебе понадобилось бы отдельно включать монитор, клавиатуру, мышку, колонки и с толкача заводить БП в коробке с материнской платой. Так себе история. А так, нажал кнопку и всё включилось. С кодом можно сделать то же самое — собрать все под один “включатель” — Docker.

Читать далее

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

Прагматичное функциональное программирование в Java

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

Прагматичное функциональное программирование в Java при помощи монады XResult<T>, которая сочетает в себе свойства Optional<T>, Result<T> и Either<L,R>

Читать далее ...

Java для Sega Mega Drive — возможно ли это?

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

В этом проекте я хотел ответить на вопрос: возможно ли написать игру на Java для Sega Mega Drive/Genesis. Не хочу раскрывать спойлеры, но ответом будет «да». Несколько лет назад я повстречал проект Java Grinder, который позволяет писать код для различных ретро процессоров на Java, в том числе для Sega Mega Drive. По сути, он интерпретирует байт-код из файлов .class, полученных после компиляции, в код на Ассемблере 68K. Если файлу класса нужны другие файлы классов, то они тоже считываются и обрабатываются. Все вызовы методов API записываются в выходном коде, либо как встроенный ассемблерный код, либо как вызовы предварительно написанных функций, выполняющих свою задачу.

Читать далее

Демистификация размеров объектов в Java: компактные заголовки, сжатые указатели и многое другое

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

Понимание размера объектов в Java — важный шаг для оптимизации памяти в высоконагруженных системах. 

В новом переводе от команды Spring АйО вы узнаете про использование HotSpot JVM таких механизмов, как сжатые указатели (Compressed Oops) и компактные заголовки объектов (Compact Object Headers), необходимых для минимизации объема занимаемой памяти.

Читать далее

PVS-Studio в 2024 году

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

За окном январь 2025 года, а это значит, пора подвести итоги за 2024 год! В этой статье вы узнаете, чем занималась команда PVS-Studio в прошлом году: новые плагины, интеграции, фичи и многое другое!

Читать далее

Как писать связующий код без Java-делегатов в Camunda Cloud

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

Бернд Рюкер рассказывает о о преимуществах использования паттерна external task по сравнению с JavaDelegate и уверяет, что это совсем не больно. А если вы хотите использовать standalone-движок, то в общем-то у вас нет выбора, только external task.

Читать далее

JSpinner: меньше багов, больше стрелочек

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

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

Сегодня поговорим про JSpinner — инструмент, который может показаться чем‑то простым и заурядным. Но это только на первый взгляд. На деле он может стать мастхев инструментом в разработке удобного и надёжного интерфейса.

JSpinner — это компонент для выбора значений из заранее заданной последовательности. Цифры, строки, даты — всё, что душе угодно. И его главная фича — минимизация ошибок: пользователь выбирает значения, а не вводит их вручную.

Читать далее

BPMS мёртв в энтерпрайзе

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

Мы инженерная компания, которая занимается производством инструментов и платформ для корпоративной разработки. Недавно перевыпущенный для Jmix BPM-плагин активно набирает популярность в России и в мире. Мы получаем обратную связь от разработчиков и руководителей проектов. Многие сетуют на ограниченность BPMS. Он мёртв, окончательно и бесповоротно.

Ну просто потому, что для сколь-либо понятных и устоявшихся на рынке деловых или отраслевых процессов уже представлены специализированные платформы, а настроить что-то прорывное и кастомное на единой унифицированной BPMS платформе всё равно невозможно. Вендоры в погоне за расширением рынка превратили свои платформы в неповоротливых монстров по мере перетаскивания в коробки удачных фичей с клиентских проектов. Особенно веселят модули процессной аналитики, которые почти никто не использует. Нет области применения для этого класса систем, она сузилась до того предела, за которым содержать отдельную большую платформу в контуре предприятия становится экономически нецелесообразно. На смену идет процессная разработка на open-source стеке и с более высокой инженерной культурой внутри организации, необходимой для скорейшего восприятия и адаптации под нужды предприятия новых технологических возможностей (облака, роботы, ИИ и т. п.).

Цифровая и бизнес трансформация

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

Читать далее