Уже через 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!
Также про JEP'ы, включенные в этот релиз, компания JetBrains записала целую серию видео. Смотреть можно здесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java 23 - Launch Stream
Come celebrate the #Java 23 launch with us on September 17th from 13:00 to 16:30 UTC. We will cover new features, community updates, and what to expect from future releases. We'll have presentations from exciting guests like Brian Goetz, Ron Pressler, Gavin…
🔥19👍8❤4
Netflix перешел с G1 на Generational ZGC, начиная с JDK 21, из-за значительных преимуществ, связанных с многопоточной сборкой мусора.
Команда Spring АйО подготовила перевод статьи, в которой инженеры стримингового сервиса рассказали о неожиданных и ожидаемых преимуществах Generational ZGC.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍8❤3
🌳 JPA Entity Graph и нюансы его использования
Entity Graph — это один из мощных инструментов JPA, который помогает разработчикам гибко управлять загрузкой связанных сущностей. Entity Graph позволяет динамически настраивать загрузку данных во время выполнения программы, что делает его особенно полезным в проектах со сложными структурами данных.
Команда Spring АйО подготовила статью, в которой рассмотрела, как использовать Entity Graph.
📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/844336/
#SpringTips #JPA
Entity Graph — это один из мощных инструментов JPA, который помогает разработчикам гибко управлять загрузкой связанных сущностей. Entity Graph позволяет динамически настраивать загрузку данных во время выполнения программы, что делает его особенно полезным в проектах со сложными структурами данных.
Команда Spring АйО подготовила статью, в которой рассмотрела, как использовать Entity Graph.
📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/844336/
#SpringTips #JPA
1👍27🔥11❤6🤔1
Какой технологией пользуетесь для взаимодействия с базой данных в продакшн-среде?
Anonymous Poll
74%
Spring Data JPA
19%
Spring Data JDBC/R2DBC
7%
Spring Data MongoDB/Reactive MongoDB
10%
Spring Data Redis/Reactive Redis
2%
Spring Data Cassandra/Reactive Cassandra
4%
Spring Data Elasticsearch
27%
Spring JDBC
4%
Spring MyBatis Framework
11%
JOOQ
4%
Свой вариант напишу в комментариях
🔥23👍6🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😁37🔥6❤4👎2👍1
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Эффективное управление окружениями с Docker Compose — рассказали про не всем известный способ настройки окружения с использованием extends и include
– Java 23 - Launch Stream — Oracle в прямом эфире представил Java 23 и все её нововведения
– Подчини паузы своей воле с Generational ZGC — узнали от команды Netflix о неожиданных и ожидаемых преимуществах Generational ZGC
– JPA Entity Graph и нюансы его использования — погрузились в технологию гибкого переключения между стратегиями загрузки данных
– Какой технологией пользуетесь для взаимодействия с базой данных в продакшн-среде? — провели опрос среди участников сообщества, который вызвал не мало обсуждений в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍7🔥6
Друзья, хотим поделиться с вами важной новостью. Сообщество Spring АйО активно начало свою деятельность в начале лета, и, за этот, казалось бы, небольшой промежуток времени, мы успели сделать многое:
– Опубликовано 34 статьи на Хабре
– Общее количество постов в нашем канале превысило 200
– Сообщество насчитывает более 3 000 участников
Самое главное, нам удалось собрать отличную команду, которая занимается созданием материалов. Некоторых экспертов сообщества вы уже хорошо знаете, с другими мы вас ещё познакомим, а кто-то предпочитает помогать без личного упоминания.
Мы стремимся быть максимально прозрачными с вами и хотим отметить, что для производства качественного контента и поддержки команды необходимы финансовые ресурсы. Вы могли заметить, что в нашем сообществе отсутствует прямая реклама. Вместо этого мы выбрали путь сотрудничества с крупными технологическими компаниями на взаимовыгодных условиях.
В ближайшее время мы объявим всех партнёров сообщества, благодаря которым возможна стабильная работа команды Spring АйО. Вместо рекламы мы будем время от времени публиковать партнёрские посты, которые будут отмечены эмодзи –
–––
Встречайте нашего первого партнёра – компанию Haulmont. Haulmont – российская компания, специализирующаяся на разработке корпоративного программного обеспечения для коммерческого сектора и государственных структур. Для нас, как для Spring-разработчиков, Haulmont интересен таким продуктом, как Amplicode. Отметим, что команда Amplicode активно помогает нам в создании материалов и приглашает нас принимать участие в своих мероприятиях, за что им отдельное спасибо!
Благодаря поддержке наших партнёров, мы сможем продолжать развивать сообщество и создавать для вас качественный контент
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍53🔥12❤11👎4
🪲 Взлом JVM-приложения с помощью отладчика IntelliJ IDEA
Что если мы скажем вам, что отладчик может стать не просто инструментом для поиска ошибок, а настоящим "режимом бога" в мире кода?
В новом переводе от команды Spring АйО рассматривается, как можно исследовать память приложения и изменить его функциональность, при этом не затрагивая исходного кода, а используя только лишь отладчик IntelliJ IDEA.
📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/845554/
Что если мы скажем вам, что отладчик может стать не просто инструментом для поиска ошибок, а настоящим "режимом бога" в мире кода?
В новом переводе от команды Spring АйО рассматривается, как можно исследовать память приложения и изменить его функциональность, при этом не затрагивая исходного кода, а используя только лишь отладчик IntelliJ IDEA.
📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/845554/
🔥36👍9❤4🤩1
Один из разработчиков 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🔥6⚡3🤔1👌1
В новом посте из цикла "#ВопросЭксперту" Михаил Поливаха – эксперт сообщества 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🔥9❤2👌1
Недавно была обнаружена критическая уязвимость, угрожающая всем системам 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🔥6❤2
Иногда кажется, что события многолетней давности произошли буквально вчера. Но за это время, на самом деле, много чего произошло — например, выросло новое поколение разработчиков! Почему мы об этом говорим? Есть материалы, которым уже много лет, но они не теряют актуальности. Некоторые из нас выросли на них, а другие, возможно, никогда о них не слышали.
Мы решили время от времени публиковать такие материалы. Одни смогут поностальгировать, другие — понять, что некоторые проблемы остаются неизменными. Такие посты мы будем отмечать хэштегом #old_but_gold.
–––
И первым таким материалом мы выбрали занимательный рассказ, опубликованный в 2001 году о том, что было бы, если бы программисты строили дома 😂
Обсуждали проект. Сидоров предлагает крупноблочную архитектуру. Петрович настаивает, что все надо строить по старинке, из кирпича, не по-ламерски. Самый радикальный проект предложил Алекс: построить несколько десятков деревянных коттеджей и потом соединить их подземными туннелями. На Западе сейчас так модно. Напомнили ему, что заказчик требует именно 12-этажный дом. Пытались решить вопрос дуэлью в Quаkе. Алекса с его коттеджами завалили сразу, но между Петровичем и Сидоровым вышла ничья. В итоге каждый будет строить по своему плану, а потом попытаемся все это соединить, чтоб не рухнуло.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁13🔥3
Кстати, сколько вам лет?
Anonymous Poll
3%
меньше 20
37%
от 20 до 30
36%
от 30 до 40
16%
от 40 до 50
3%
от 50 до 60
1%
больше 60
2%
не хочу говорить
👍10
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Взлом JVM-приложения с помощью отладчика IntelliJ IDEA — изменили функциональность приложения, при этом не притронулись к исходному коду
– Hibernate 7.0 уже близко! — поделились новостью про грядущее обновление Hibernate
– #ВопросЭксперту: Spring Data R2DBC. Что не так с реактивными ORM? — посмотрели на интересный кейс из реактивного стека от эксперта сообщества
– Критическая уязвимость с оценкой CVSS 9.9 обнаружена в системах GNU/Linux — не оставили без внимания недавно обнаруженную проблему в GNU/Linux, а также способы ее обхода
– Если бы программисты строили дома #old_but_gold — поностальгировали и посмеялись с рассказа с аналогией между строителями и программистами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥3❤1
📏 Почему нет достойных форматтеров кода для Java?
Форматирование кода в Java всегда было темой обсуждения среди разработчиков. Многочисленные инструменты предлагают свои решения, но ни один из них не кажется идеальным. Так, возникает вопрос: есть ли форматтер, который действительно отвечает всем нашим требованиям?
В новом переводе от команды Spring АйО рассмотрены популярные инструменты, их плюсы и минусы, а также рассуждения на тему: может ли Java-экосистема предложить достойный форматтер?
📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/846278/
Форматирование кода в Java всегда было темой обсуждения среди разработчиков. Многочисленные инструменты предлагают свои решения, но ни один из них не кажется идеальным. Так, возникает вопрос: есть ли форматтер, который действительно отвечает всем нашим требованиям?
В новом переводе от команды Spring АйО рассмотрены популярные инструменты, их плюсы и минусы, а также рассуждения на тему: может ли Java-экосистема предложить достойный форматтер?
📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/846278/
🔥20👍9❤6👎2