Обновить
177.08

Java *

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

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

Эта неделя в мире Java (21 ноября)

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

Все сенсации, интриги, расследования, которые вам нужны 21 ноября.

Брайан Гёц — гриб (видео под катом, интервью с @boomburum)

jHipster требует Java 21 и не согласен на меньшее

Живой мастер-класс по JUnit от JUnit-джедая

Депо поездов имени В.В. Спринга

Тонна фиксов CVE уязвимостей

Первые попытки поддержать CRaC

Новая поделка: Penna для логов в JSON

Обновы в Quarkus, Micronaut, Payara, OpenLiberty, Mojarra, Grails, Tomcat...

Ничоси. Читать далее

Генерация контрактов OpenApi или прикладной API first: oneOf, anyOf, allOf

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


В продолжение истории с генерацией по спецификации OpenAPI покажу несколько примеров с использованием композиции и полиморфизма.

OneAllAnyOf

Spring и Hibernate простыми словами: обзор для новичков

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

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

Читать далее

Java-инспекции в IDEA 2023.2

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

Это ретроспективный пост про Java-инспекции IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.

А между тем, там не всё хорошо. Например, баги с тэгом @snippet до сих пор не поправили.

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

Залетайте под кат и погнали!

Читать далее

IntelliJ IDEA 2023.2. Долгожданный LSP, встроенный AI-чат, апгрейд до Windows 10 и -Xmx2G

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

Это ретроспективный пост фичей IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.

Идея раздулась до 2 гигабайт хипа, появилась поддержка LSP-серверов, и теперь вам нужно проапгрейдиться с Windows 7 минимум до Windows 10.

Из мелочей: появился чата с нейронкой "AI Assistant". Профилировщик научился отображать подсказки прямо в редакторе, а интеграция с GitLab позволяет меньше переключаться между браузером и IDE.

Хотите узнать подробней?

Восхитительно! Читать далее

Добавление micrometer-метрик для взаимодействий по SOAP

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

Когда мы хотим знать, в каком состоянии находятся системы, с которыми наше приложение взаимодействует, мы используем механизм метрик. Самым распространенным механизмом работы с метриками в приложениях на Spring Boot является micrometer.

Для интеграций по HTTP с использованием REST очень удобно использовать spring-boot-starter-actuator. Актуатор уже из коробки предоставляет набор из http_client_requests и http_server_requests метрик с разбивкой по uri, method и результату.

Но остались еще проекты, которые взаимодействуют по протоколу SOAP. Хотя экосистема Spring (как и ванильная Java) предоставляют возможность собирать веб-сервисы и клиенты для протокола SOAP, но коробочного решения для снятия метрик с таких клиентов не существует.

Читать далее

Разработка высоконагруженного игрового WebSocket сервера на Java, Netty с поддержкой BattleRoyale/Matchmaking

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

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

Читать далее

Сквозь дебри разработки, или как я пытался написать приложение

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

Хотелось бы начать эту статью хоть с какого-то приветствия, но так как мы собрались тут ради хоть как-то полезной информации, перейду сразу к делу. Итак, немного вводных и постановка проблемы: любому начинающему разработчику нужен опыт. А как наработать опыт? Именно опыт, а не просто определённый объём зазубренной теории с полным нулём практики. Есесна написать что-то своё – проект, который не стыдно и в портфолио положить, да и просто перед знакомыми похвастаться.

План прост: написать приложение, которое помогает отслеживать количество
каких-либо базовых упражнений.

Читать далее

Генерация контрактов OpenApi или прикладной API first: гайд по генерации в Spring Boot приложении

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

Стек: OpenAPI, Spring Boot, Gradle

Небольшой гайд по генерации серверной и клиентской части в Spring Boot приложении.

Краткое содержание:

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

В сервисе-сервере сгенерируйте сервер по спецификации. Настройте созданные контроллеры/имплементируйте интерфейсы.

В сервисе-клиенте сгенерируйте клиентскую часть по спецификации. Подключите сгенерированного feign клиента.

Generate it

Эта неделя в мире Java (13 ноября)

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

Если вам лень читать три тысячи тредов в рассылке OpenJDK и ленты с новостями сотен обновлений фреймворков, то этот дайджест - для вас.

Java-дайджест за последнюю неделю (3 ноября):

• Обзор статей на Хабре

• Новости OpenJDK

• Spring, Jakarta, Web

• IDE, Gradle, тулинг

• Странные фреймворки

Волшебно! Читать далее

Присматриваемся к Kafka tiered storage

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

Добрый день, уважаемые ИТ-ники. На связи Михаил Голованов.

В этом сезоне нашего Kafka шоу В статье я расскажу о реализации tiered storage в Apache Kafka.

Теория будет перемежаться практикой и найденными граблями.

Читать далее

Инициализация WebSocket-клиента в автотестах на Java cо Spring Boot Starter WebSocket

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

Если вам необходимо автоматизировать тестирование веб-сокетов, то эта статья будет для вас полезна.

В ней я поделюсь своим опытом «прикручивания» библиотеки Spring Boot Starter Websocket к проекту автотестов на Java.

Читать далее

Введение в Apache Flink: осваиваем фреймворк на реальных примерах

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

Всем привет, меня зовут Александр Бобряков. Я техлид в команде МТС Аналитики, занимаюсь Real-Time обработкой данных. Недавно мы начали использовать фреймворк Apache Flink. Эту технологию выбрали, так как она (в отличие от Apache Spark) относится к true-стримингу и позволяет строить обработку данных с минимальной задержкой. В качестве DI-фреймворка выбрали привычный нам Spring Framework.

Наша команда использует разные виды тестирования: Unit, интеграционное, E2E, ручное, автоматизационное, нагрузочное. Этой теме будет уделено особое внимание. Я расскажу, какие подходы и паттерны помогут быть уверенными в качестве того, что вы разработали.

Эти знания будут полезны любому Java-разработчику, знакомому со Spring. А начинающие Flink-специалисты найдут здесь примеры стандартных ошибок и пути их решения. Обратите внимание, что эти материалы писались, когда актуальной версией Flink была 1.17. В конце октября вышла версия 1.18, и она может отличаться некоторыми нюансами.

Читать далее

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

Helidon 4 вышел, а никто и не заметил

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

Те, кто использует Helidon в проде, наверняка точно знают, зачем им это нужно. Что делать остальным? Основная задача хомячка — объяснить детям концепцию смерти. Кажется, точно так же основная задача Helidon для широких народных масс — посмотреть на самые новые фишки Java и понять, нужно вам это или нет. Посмотрим, что же произошло в версии 4.0.0...

Интересно. Читать далее

Гайд по авторизации в Micronaut

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

Всем привет! В предыдущей статье я описал процесс аутентификации в Micronaut. Но аутентификация без авторизации мертва! Ну или крайне мало применима. Поэтому предлагаю заглянуть под кат и оценить различные механизмы авторизации в данном фреймворке, а заодно узнать, как это всё тестировать.

Читать далее

Java Digest #6

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

Всем привет! ? ? ?

Мы — Java-разработчики Тинькофф: Андрей, Арсений и Константин. Собираем все интересное из мира Java-разработки и решили делиться этим не только с коллегами, но и со всем сообществом.

В этом выпуске мы погрузимся в глубины нескольких JEP, что скрываются во мраке. Взглянем на проекты Loom и Вальхаллу. 

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

Но не только мрачные стороны Java раскроют нам свои секреты. Воссияет новый JShell, воскрешенный эхом древних заклинаний. Приготовьтесь отправиться в удивительное путешествие мира Java.

В честь Хеллоуина, эту аннотацию нам помог сгенерировать ChatGPT

Читать далее

Пишем минимальный ActivityPub-сервер с нуля

Время на прочтение12 мин
Охват и читатели11K
В последнее время, на фоне покупки Twitter Илоном Маском, люди начали искать ему альтернативы — и многие нашли такую альтернативу в Mastodon.

Mastodon — это децентрализованная социальная сеть, работающая по модели федерации, как email. Протокол федерации называется ActivityPub и является стандартом W3C, а Mastodon — далеко не единственная его реализация, но самая популярная. Различные реализации протокола, как правило, совместимы друг с другом, настолько, насколько им позволяют их совпадения в функциональности. У меня есть и мой собственный проект ActivityPub-сервера — Smithereen, такой зелёный децентрализованный ВК, где я когда-нибудь таки верну стену.



В этой статье мы рассмотрим основы протокола ActivityPub и напишем минимально возможную реализацию сервера, позволяющую отправлять посты в сеть («fediverse»), подписываться на других пользователей и получать от них обновления.
Читать дальше →

Цикл постов про Keycloak. Часть вторая: Контроль доступа на уровне приложения

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

Цикл постов про Keycloak. Часть вторая: Контроль доступа на уровне приложения.

Этот пост является продолжением данной статьи

В прошлый раз мы настроили ABAC (Attribute Based Access Control) с использованием Keycloak, теперь реализуем проверку разрешений на уровне приложения.

Читать далее

Ускоряем запуск Spring Boot-приложений в контейнере

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

Знаете ли вы, что Spring Boot-приложение в контейнере может запускаться за миллисекунды? При этом без ущерба для производительности, памяти, паритета окружений разработки-продакшена, без ограничений возможностей языка Java, и почти без изменения кода приложения. Но как? С помощью Liberty 23.0.0.10-beta…

Читать далее

Эта неделя в мире Java (3 ноября)

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

Java-дайджест за последнюю неделю (3 ноября):

• Spring, Jakarta, Web

• IDE и редакторы

• Тестирование

• Статьи и подкасты

• Обзор статей на Хабре

Волшебно. Читать далее

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