Spring АйО
8.43K subscribers
303 photos
209 videos
402 links
Русскоязычное сообщество Spring-разработчиков.

Habr: bit.ly/433IK46
YouTube: bit.ly/4h3Ci0x
VK: bit.ly/4hF0OG8
Rutube: bit.ly/4b4UeX6
Яндекс Музыка: bit.ly/3EIizWy

Канал для общения: @spring_aio_chat
Download Telegram
😲 Java 23 - Launch Stream

Уже через 7 часов на YouTube канале Java пройдет прямая трансляция, посвящённая релизу Java под номером 23.

Расписание трансляции (время GMT+3 МСК):

Deep Dive into Java 23's Features!
16:00: Welcome and event agenda
16:05: Java Language Update by Gavin Bierman
16:20: Java Language Features in Action
16:35: Integrity by Default with Ron Pressler
16:55: Markdown Documentation Comments with Jonathan Gibbons
17:10: ZGC: Generational Mode by Default with Stefan Karlson

Java Outreach in 2024
17:25: Java Playground Updates with Denys Makogon and Heather Stephens
17:40: Java Community Report from Sharat Chander and Jim Grisanzio

Java Preview Features and Future work
18:10: Sneak Peek at GraalVM Updates with Alina Yurenko and Fabio Niephaus
18:30: Class-File API with Brian Goetz
18:45: State of Project Leyden with John Rose
18:15: Enjoy Your Evening!

😉 https://www.youtube.com/watch?v=QG9xKpgwOI4

Также про JEP'ы, включенные в этот релиз, компания JetBrains записала целую серию видео. Смотреть можно здесь: 😉 JEP Explained.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍84
😎 Подчини паузы своей воле с Generational ZGC

Netflix перешел с G1 на Generational ZGC, начиная с JDK 21, из-за значительных преимуществ, связанных с многопоточной сборкой мусора.

Команда Spring АйО подготовила перевод статьи, в которой инженеры стримингового сервиса рассказали о неожиданных и ожидаемых преимуществах Generational ZGC.

📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/844048/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍83
🌳 JPA Entity Graph и нюансы его использования

Entity Graph — это один из мощных инструментов JPA, который помогает разработчикам гибко управлять загрузкой связанных сущностей. Entity Graph позволяет динамически настраивать загрузку данных во время выполнения программы, что делает его особенно полезным в проектах со сложными структурами данных.

Команда Spring АйО подготовила статью, в которой рассмотрела, как использовать Entity Graph.

📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/844336/

#SpringTips #JPA
1👍27🔥116🤔1
🗓 Еженедельный дайджест №14

Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!

Эффективное управление окружениями с Docker Composeрассказали про не всем известный способ настройки окружения с использованием extends и include

Java 23 - Launch StreamOracle в прямом эфире представил Java 23 и все её нововведения

Подчини паузы своей воле с Generational ZGCузнали от команды Netflix о неожиданных и ожидаемых преимуществах Generational ZGC

JPA Entity Graph и нюансы его использованияпогрузились в технологию гибкого переключения между стратегиями загрузки данных

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

😌 @spring_aio
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍7🔥6
⭐️ Haulmont – партнёр Spring АйО

Друзья, хотим поделиться с вами важной новостью. Сообщество Spring АйО активно начало свою деятельность в начале лета, и, за этот, казалось бы, небольшой промежуток времени, мы успели сделать многое:

– Опубликовано 34 статьи на Хабре
– Общее количество постов в нашем канале превысило 200
– Сообщество насчитывает более 3 000 участников

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

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

В ближайшее время мы объявим всех партнёров сообщества, благодаря которым возможна стабильная работа команды Spring АйО. Вместо рекламы мы будем время от времени публиковать партнёрские посты, которые будут отмечены эмодзи – ⭐️.

–––

Встречайте нашего первого партнёра – компанию Haulmont. Haulmont – российская компания, специализирующаяся на разработке корпоративного программного обеспечения для коммерческого сектора и государственных структур. Для нас, как для Spring-разработчиков, Haulmont интересен таким продуктом, как Amplicode. Отметим, что команда Amplicode активно помогает нам в создании материалов и приглашает нас принимать участие в своих мероприятиях, за что им отдельное спасибо!

Благодаря поддержке наших партнёров, мы сможем продолжать развивать сообщество и создавать для вас качественный контент 💚
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍53🔥1211👎4
🪲 Взлом JVM-приложения с помощью отладчика IntelliJ IDEA

Что если мы скажем вам, что отладчик может стать не просто инструментом для поиска ошибок, а настоящим "режимом бога" в мире кода?

В новом переводе от команды Spring АйО рассматривается, как можно исследовать память приложения и изменить его функциональность, при этом не затрагивая исходного кода, а используя только лишь отладчик IntelliJ IDEA.

📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/845554/
🔥36👍94🤩1
Hibernate 7.0 уже близко!

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

Hibernate ORM 7.0 — следующий большой шаг после революции, начатой ORM 6. Я только что завершил поддержку функций JSON и XML.

Сейчас занимаюсь разработкой функций для преобразования массивов в строки с возвращением результата в виде таблиц или наборов значений.

Следующий этап — использовать всё это в нашей реализации составных агрегатов. Независимо от того, как вы храните данные, Hibernate позволит вам моделировать и запрашивать их одинаково через HQL/Criteria. Я верю, что это изменит игру для тех, кто заботится о производительности запросов. Иерархическое хранение данных не только избавляет от JOIN (что всегда приятно), но и позволяет на некоторых базах данных создавать индексы на такие сложные столбцы! Такой подход может значительно повысить скорость поиска, например, при поиске товаров с множеством фильтров по атрибутам, таким как бренд, цвет и т.д. А в базах данных вроде PostgreSQL вы можете достичь индексного или даже только индексного сканирования для ваших запросов 🔥

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

Как только я завершу реализацию этих функций в Hibernate ORM, я покажу вам, как справиться с денормализацией 😀


Делитесь своим мнением касаемо грядущего обновления в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍35👎7🔥63🤔1👌1
#ВопросЭксперту: Spring Data R2DBC. Что не так с реактивными ORM?

В новом посте из цикла "#ВопросЭксперту" Михаил Поливаха – эксперт сообщества Spring АйО, ответил на мучающий многих вопрос и рассказал про нюансы Spring Data R2DBC.

–––

Работать с RDBMS в реактивных приложениях бывает сложно, и на то есть реальные причины. Тут совершенно неважно, написаны эти приложения с использованием RXJava или Project Reactor, есть некоторые проблемы на стыке концепций. Но надо понимать, что иногда с этим добром приходится работать, поэтому предлагаю взглянуть на пример ниже (полный код можно увидеть в моем playground репо на GitHub'е):


@Table("orders")
public class Order {

@Id
@EqualsAndHashCode.Include
private Long id;
private String status;
@MappedCollection(keyColumn = "order_id", idColumn = "order_id")
private List<OrderItem> orderItems;
}

@Table("order_item")
public class OrderItem {

@Id
@EqualsAndHashCode.Include
private Long id;
private String name;
private double price;
}

public interface OrderRepository extends ReactiveCrudRepository<Order, Long> { }

// INSERT INTO orders(id, "status") VALUES(1, 'NEW');
// INSERT INTO order_item("name", "order_id") VALUES('Lego', 1);
class OrderRepositoryTest extends AbstractPostgreSQLIntegrationTest {
@Test
void testR2dbcAggregateLoading() {
StepVerifier
.create(orderRepository.findById(1L))
.expectNextMatches(order -> {
System.out.println(order);
return order.getOrderItems().size() == 2 && order.getStatus().equals("NEW");
})
.expectComplete()
.verify();
}
}


А теперь ответьте на вопрос: "Пройдет ли тест успешно?". Я специально сделал пример довольно простым, убрал какие-то доп. компоненты/настройки.

На самом деле проблема в том, что у нас не подгрузилось One-To-Many отношение. Казалось бы, в концепцию DDD оно нормально ложится, и в Spring Data JDBC оно работает нормально. В таком случае вопрос: "Что пошло не так и почему?". Наверное, многим будет интересно узнать, что же случилось?

Ответ я разобью на пункты:

1. Это не баг, поддержки любого рода relation'ов в Spring Data R2DBC сейчас нет.
2. Конкретно в текущем случае, который мы рассматриваем, сделать поддержку relation'ов можно.
3. Почему поддержки relation'ов нет сейчас? TL;DR: потому что отсутствует нормальный способ реализовать поддержку relation'ов в общем случае(!) для Aggregates с учетом парадигмы реактивного программирования.

Хочу заметить, что, в целом, реализовать поддержку relation'ов можно, но будут свои нюансы и вытекающие проблемы. Поскольку эта тема очень большая, детали того, почему же так, что делать, и какие планы работы с этим, я поясню на своем докладе на Joker.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍28🔥92👌1
⚠️ Критическая уязвимость с оценкой CVSS 9.9 обнаружена в системах GNU/Linux

Недавно была обнаружена критическая уязвимость, угрожающая всем системам GNU/Linux, которая позволяет выполнять код удаленно без аутентификации. Проблема затронула такие компании, как Canonical и Red Hat, и получила оценку 9.9 из 10 по шкале CVSS, что подтверждает её серьёзность. Пока патч не выпущен, разработчики и пользователи находятся в состоянии неопределенности, опасаясь возможных последствий.

В новом переводе от команды Spring АйО приводятся подробности о сроках раскрытия деталей уязвимости и предлагаются временные меры для защиты систем.

📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/846498/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥62
🤣 Если бы программисты строили дома #old_but_gold

Иногда кажется, что события многолетней давности произошли буквально вчера. Но за это время, на самом деле, много чего произошло — например, выросло новое поколение разработчиков! Почему мы об этом говорим? Есть материалы, которым уже много лет, но они не теряют актуальности. Некоторые из нас выросли на них, а другие, возможно, никогда о них не слышали.

Мы решили время от времени публиковать такие материалы. Одни смогут поностальгировать, другие — понять, что некоторые проблемы остаются неизменными. Такие посты мы будем отмечать хэштегом #old_but_gold.

–––

И первым таким материалом мы выбрали занимательный рассказ, опубликованный в 2001 году о том, что было бы, если бы программисты строили дома 😂

Обсуждали проект. Сидоров предлагает крупноблочную архитектуру. Петрович настаивает, что все надо строить по старинке, из кирпича, не по-ламерски. Самый радикальный проект предложил Алекс: построить несколько десятков деревянных коттеджей и потом соединить их подземными туннелями. На Западе сейчас так модно. Напомнили ему, что заказчик требует именно 12-этажный дом. Пытались решить вопрос дуэлью в Quаkе. Алекса с его коттеджами завалили сразу, но между Петровичем и Сидоровым вышла ничья. В итоге каждый будет строить по своему плану, а потом попытаемся все это соединить, чтоб не рухнуло.


📚 Читать целиком на Хакер.ру: https://xakep.ru/2001/06/19/12860/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁13🔥3
🗓 Еженедельный дайджест №15

Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!

Взлом JVM-приложения с помощью отладчика IntelliJ IDEAизменили функциональность приложения, при этом не притронулись к исходному коду

Hibernate 7.0 уже близко!поделились новостью про грядущее обновление Hibernate

#ВопросЭксперту: Spring Data R2DBC. Что не так с реактивными ORM?посмотрели на интересный кейс из реактивного стека от эксперта сообщества

Критическая уязвимость с оценкой CVSS 9.9 обнаружена в системах GNU/Linuxне оставили без внимания недавно обнаруженную проблему в GNU/Linux, а также способы ее обхода

Если бы программисты строили дома #old_but_goldпоностальгировали и посмеялись с рассказа с аналогией между строителями и программистами

😌 @spring_aio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥31
📏 Почему нет достойных форматтеров кода для Java?

Форматирование кода в Java всегда было темой обсуждения среди разработчиков. Многочисленные инструменты предлагают свои решения, но ни один из них не кажется идеальным. Так, возникает вопрос: есть ли форматтер, который действительно отвечает всем нашим требованиям?

В новом переводе от команды Spring АйО рассмотрены популярные инструменты, их плюсы и минусы, а также рассуждения на тему: может ли Java-экосистема предложить достойный форматтер?

📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/846278/
🔥20👍96👎2