Обновить
179.02

Java *

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

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

Почему java -jar игнорирует твой -cp и как это обойти

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

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

Когда java -jar цинично игнорирует ваш -cp, хочется грустить, но спокойствие, сегодня рассмотрим, почему так происходит и как это обойти.

Читать далее

Разработка Java-проекта с Jmix AI Assistant, часть 2

Время на прочтение10 мин
Количество просмотров350

В первой части статьи с помощью инструмента Jmix AI Assistant начато создание системы для проведения онлайн курсов.

Были сгенерированы сценарии использования (use cases), разработана UML-диаграмма в формате PlantUML для этих use cases, разработана доменная модель для системы и ее реализация на JMIX. Далее все классы разбиты по пакетам.

Продолжим эксперименты по разработке кода с помощью Jmix AI Assistant, включая следующие:

- Генерация класса, заполняющего доменную модель тестовыми данными

- Генерация REST API для модели домена, включая создание контроллеров и REST сервисов

- Генерация пользовательского интерфейса

Читать далее

Spring Data Ahead of Time репозитории

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

Команда Spring АйО перевела статью про новую версию AOT-репозиториев, которые позволяют генерировать реализацию методов запросов на этапе сборки. Это ускоряет запуск приложений, снижает потребление памяти и делает поведение репозиториев более прозрачным для разработчиков.

Читать далее

Иногда приходится¹ копаться² в кишках³ Apache Spark

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

¹ …просто потому, что другого варианта добиться необходимого результата тупо не существует.
² и да, довольно-таки глубоко.
³ нет, серьёзно!



Давайте рассмотрим следующий бизнесовый кейс.


Дано: реально большие данные. Очень много датасетов по много терабайтов каждый, — в сумме объём тянет на петабайты. Лежат в облаке, но это не важно. Важно, что мы эти данные покупаем в «сыром» виде, каким-то образом «готовим», а потом перепродаём конечному потребителю.


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


Довольно-таки сложный, продвинутый ETL у нас. Поясню на типичном примере.

Читать дальше →

Один assert на тест. А может быть, нет?

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

Команда Spring АйО перевела статью эксперта Михаила Поливахи о том, почему правило о единственном assert'е на тест иногда можно и нужно нарушать.

Читать далее

Проектируем архитектуру Camunda Cloud: подключаем движок процессов к вашему миру

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

Вы начали свой первый проект, используя автоматизацию бизнес-процессов как сервис с Camunda Cloud? Одной из первых задач будет набросать базовую архитектуру вашего решения. Этот блог-пост поможет вам ответить на важные начальные вопросы: как подключить движок выполнения процессов Zeebe к вашему приложению или к внешним системам? Что такое job worker, какую роль он играет и сколько их вообще нужно?

Читать далее

Как пропатчить Intellij Idea для FreeBSD

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

Здравствуйте, эта статья не про аниме, но мы точно знаем как пропатчить Intellij Idea для FreeBSD. И не боимся об этом рассказывать.

Читать далее

Как я открыл WebSocket для Сомников из Чёрного Зеркала, а они начали водить хороводы

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

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

Читать далее

Двоичная Java: CDS, CRaC и AOT для ускорения запуска и прогрева JVM

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

Это текстовая версия доклада с HighLoad++ 2024, с которым выступал один из наших бывших девелопер-адвокатов @RustamKuramshin Также есть отдельная запись доклада, сделанная силами участников программного комитета HighLoad++.

Читать далее

Java Highload и сборка мусора

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

Разработка HL-решения со строгим SLA по RPS и latency затрагивает множество аспектов. В частности OLTP, мультиплексирование запросов, неблокирующий I/O и прочее. В данной статье хотел бы поговорить про сборку мусора. Мы не будем погружаться в цитирование спецификации. Напротив, взглянем на сборку глазами инженера, перед которым стоит задача оптимизировать процесс с минимальными издержками.

Читать далее

Docker в песочнице: Запуск контейнеров без root-прав и привилегий

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

Приветствую всех! В своей прошлой и по совместительству первой статье я рассказывал про упаковку приложения в докер контейнеры. В комментариях мне сделали замечание, что я не упомянул про защиту приложения и запуск от non-root. Что ж, исправлюсь и сделаю это в отдельной статье. Напомню, что я написал простое приложение для голосование за лучший ресторан и попытался по простому объяснить как произвести его контейнеризацию. Также уточню, что упор я делаю именно упаковку приложения в докер контейнеры, а не на бизнес-логику и UI.

Читать далее

Опрос: тестовое покрытие — must-have или bullshit

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

Всем привет! Судя по ответам, которые мы получили от посетителей конференций Joker, Heisenbug и JPoint, примерно в половине компаний есть требования по набиванию тестового покрытия (обычно 60-70% кода должно быть покрыто тестами).

Однако, при личном общении с разработчиками и тестировщиками мы постоянно слышим, что никаких требований нет и покрытие никак не контролируется.

Кто отвечает за тестовое покрытие? Должны его набивать разработчики или эта задача ложится на плечи тестеров? Будем благодарны, если ответите на 1 (один) вопрос. Если хочется поговорить о наболевшем и рассказать, как у вас в проекте обстоят дела с тестовым покрытием, пишите в комментарии.

Всем хорошей пятницы и классных выходных!

Скачать последнюю версию Explyt Test плагина можно на сайте или напрямую с GitHub.

Для обратной связи и сообщений об ошибках: GitHub Issues

Для общения: t.me/explyttest

Опрос в один вопрос

Сегодня — Java 30 лет: ретроспектива выдающейся экосистемы разработки

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

Сегодня Java исполняется 30. Три десятилетия — это эпоха. За это время технологии успели смениться кардинально, а некоторые модные языки — появиться, поиграть мускулами и тихо исчезнуть. А Java по-прежнему тут. Она не просто "ещё жива" — она стабильно занимает лидирующие места в рейтингах, используется в крупнейших корпорациях и продолжает эволюционировать. Как так получилось?

В этой статье я расскажу, почему Java прожила 30 лет и всё ещё чувствует себя уверенно: как она развивалась, как решаются проблемы производительности JVM, и почему на неё до сих пор делают ставку разработчики, архитекторы и CTO.

Предаться воспоминаниям

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

Стратегическое партнёрство Kotlin и Spring

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

Команда Spring АйО перевела новость о стратегическом партнёрстве Kotlin и Spring. Полная null-безопасность, официальные обучающие материалы, мощная рефлексия и выразительный DSL — звучит многообещающе.

Читать далее

Интеграционное тестирование в Spring Boot: SourceCraft + Amplicode + Docker Compose Starter в деле

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

Когда одних юнит-тестов уже недостаточно, на сцену выходят интеграционные. В этой статье от команды Amplicode мы покажем, как протестировать REST API в Spring Boot с использованием современного стека: генерация тестов через Amplicode, автоматический запуск окружения с помощью Docker Compose Starter и поддержки со стороны LLM-инструментов от Яндекса.

Читать далее

Управление транзакциями в Spring: подробно о @Transactional

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

Команда Spring АйО перевела статью об использовании аннотации @Transactional для управления транзакциями в Spring и в различных фреймворках экосистемы Spring, а также о ее интеграции с Hibernate. После прочтения данной статьи вы будете гораздо лучше понимать основы работы с этой аннотацией, а также механизмы, которые работают под капотом при ее использовании.

Читать далее

Spring. Аутентификация на reactive feign

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

В этой статье проведены параллели между обработкой ошибок в feign и reactivefeign клиентах на примере реализации starter, который реализует аутентификацию по OAuth 2.0 в spring reactive подходе. В этой статье не будет описания реактивного стека. Если Вы хотите разобраться, какие есть преимущества и зачем его применять, рекомендую посмотреть эту серию статей. В этой статье не будет сравнения реактивного и нереактивного подхода. Для этого есть такая статья. В этой статье я хочу показать, что перевод компонентов на реактивность - несложная задача по рефакторингу, которая не займет много времени. Добавить монетку в копилку того, что перевод на реактивность - процесс, основные затраты в котором нужно сделать на первом шаге, когда Вы решаетесь применять этот подход, а адаптировать существующие компоненты просто.

Читать далее

Что нового в Amplicode 2025.1

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

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

* Поиск по эндпоинтам 

* Улучшенный HTTP Client 

* Editor Inlay  

* Улучшенная генерация Docker-файлов 

* Интеграция с DBeaver  

* Spring Boot Initializer 

Читать далее

Что нового в Hibernate 7.0

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

Команда Spring АйО перевела статью про новые функции и возможности, добавленные в Hibernate ORM версии 7.0 : новая лицензия Apache 2.0, переход на Jakarta Persistence 3.2 и Java 17, замена HCANN на Hibernate Models, а также множество улучшений для работы с JSON, XML, enum, soft-delete и запросами.

Добавлено экспериментальное API для batch-операций, Set-returning functions и удобный доступ к кэшу первого уровня.

Читать далее

Хотите писать без ошибок? Узнайте, как Java обрабатывает кодировки

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

Многие наверняка сталкивались с ситуацией, когда при открытии файла в текстовом редакторе (например, Word) вместо ожидаемого текста появляется хаотичный набор символов: или «кракозябры». Такое происходит, когда программа неправильно определяет кодировку файла — набор правил, по которым символы преобразуются в двоичный код.

Каждый формат файла (TXT, DOCX, PDF и другие) имеет свою структуру и использует определённую кодировку для хранения данных. Если приложение неверно интерпретирует эти правила, текст становится нечитаемым.

Читать далее

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