⚡️⚡️⚡️ OpenIDE – профессиональные инструменты без ограничений
Мы, Spring АйО, являемся генеральным информационным партнёром первого масштабного события, посвящённого OpenIDE — новой открытой экосистемы для Java, Kotlin, Go, Python, JavaScript и других языков.
В программе — доклады от экспертов сообщества и не только, live-демо и обсуждение концепции OpenIDE.
📅 31 июля в 17:00 МСК
📍 Бесплатно, онлайн, на всех наших платформах. Главное – зарегистрироваться.
🔗 ЗАРЕГИСТРИРОВАТЬСЯ
Мы, Spring АйО, являемся генеральным информационным партнёром первого масштабного события, посвящённого OpenIDE — новой открытой экосистемы для Java, Kotlin, Go, Python, JavaScript и других языков.
В программе — доклады от экспертов сообщества и не только, live-демо и обсуждение концепции OpenIDE.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍14🤩6❤3👎1🤔1🤯1
💡 JEP 507: Примитивы в pattern matching и switch — Java 25 ломает старые ограничения
Java 25 продолжает развивать pattern matching: теперь в
В чем была проблема?
Раньше pattern matching работал только с объектами:
То же самое со
Что добавили?
Теперь можно будет:
Использовать примитивы в
Использовать примитивные паттерны в
Почему это круто?
– упрощаются безопасные преобразования типов без ручных проверок диапазонов.
– убираются лишние
–
– можно будет использовать примитивы в
Пример:
Допустим, есть JSON:
Раньше:
С Java 25:
Зачем это добавили?
Паттерны должны быть едиными как для объектов, так и для примитивов. Это делает язык мощнее, проще, безопаснее
Java 25 умеет проверять и безопасно преобразовывать примитивы прямо в
Как вам новая фича? Предлагаем обсудить комментариях👇
Java 25 продолжает развивать pattern matching: теперь в
instanceof и switch можно будет использовать примитивные типы!В чем была проблема?
Раньше pattern matching работал только с объектами:
if (obj instanceof String s) { ... }
А вот так было нельзя:
if (x instanceof int i) { ... } // Ошибка
То же самое со
switch — примитивы были ограничены: нельзя было использовать switch на boolean, float, double, long или с примитивными паттернами.Что добавили?
Теперь можно будет:
Использовать примитивы в
instanceof:
if (num instanceof byte b) { ... } // Автоматически проверит, влезает ли num в byte
Писать switch по boolean, long, float, double:
switch (flag) {
case true -> System.out.println("Да");
case false -> System.out.println("Нет");
}
Использовать примитивные паттерны в
switch:
switch (value) {
case 0 -> System.out.println("Ноль");
case int i when i > 0 -> System.out.println("Положительное: " + i);
}
Почему это круто?
– упрощаются безопасные преобразования типов без ручных проверок диапазонов.
– убираются лишние
if перед кастами.–
switch будет действительно универсальным: можно будет свитчить по любым типам.– можно будет использовать примитивы в
record-паттернах и instanceof так же просто, как объекты.Пример:
Допустим, есть JSON:
sealed interface JsonValue { ... }
record JsonNumber(double d) implements JsonValue { }
Раньше:
if (json instanceof JsonNumber(double d)) {
int age = (int) d; // Ручной каст, возможна потеря данных
}
С Java 25:
if (json instanceof JsonNumber(int age)) {
System.out.println("Возраст: " + age);
}
// Сработает только если double без потери вмещается в int
Зачем это добавили?
Паттерны должны быть едиными как для объектов, так и для примитивов. Это делает язык мощнее, проще, безопаснее
Java 25 умеет проверять и безопасно преобразовывать примитивы прямо в
instanceof и switch.Как вам новая фича? Предлагаем обсудить комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥29❤9🤔3👎1
🤩 Ого: Гэвин Кинг добавил интеграцию со Spring в рамках Hibernate Data Repositories
Это значит, что скоро Jakarta Data можно будет использовать в приложениях на Spring с минимальными усилиями. Без лишних приседаний.
Судя по скриншотам, интеграция выглядит привычным образом, а методы
💡 Напомним: Гэвин Кинг — core contributor в Jakarta Data спецификацию, а также автор Hibernate и Ceylon. Поэтому, если кто и может сделать это по-человечески, то он!
Пока это лишь пост Гэвина в социальной сети — официальной поддержки Hibernate Data Repositories для Spring ещё нет. Как только появятся детали от команды Spring, мы обязательно напишем.
Это значит, что скоро Jakarta Data можно будет использовать в приложениях на Spring с минимальными усилиями. Без лишних приседаний.
Судя по скриншотам, интеграция выглядит привычным образом, а методы
@Query, @Find и @Update уже работают как надо!Только что добавил интеграцию Hibernate Data Repositories со Spring, благодаря чему использовать Jakarta Data в Spring стало гораздо проще.
Пока это лишь пост Гэвина в социальной сети — официальной поддержки Hibernate Data Repositories для Spring ещё нет. Как только появятся детали от команды Spring, мы обязательно напишем.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29🤩12⚡7👍4🤔3😁2❤1
Anonymous Poll
25%
⛔ Совсем не доверяю — только для генерации идей или черновиков
60%
🟠 Использую для рутины, но всегда перепроверяю
5%
✅ Полностью доверяю — уже деплоил код, написанный AI
2%
🙈 Ранее пробовал, но столкнулся с негативными последствиями — сейчас осторожничаю
4%
🏛 Не использую и не планирую — есть опасения насчёт качества и юридических рисков
4%
🤺 Пока не пробовал, но хочется потестить в бою
❤13🔥10👍8
💡 JEP 511: Импорт модулей в Java 25 — как упростить работу с библиотеками
В Java 25 появится долгожданная фича: импорт модулей. Теперь можно будет одним импортом подключать все пакеты, которые экспортирует модуль. Это сильно упростит работу с большими библиотеками, особенно в прототипах и обучении.
В чем проблема?
Например, чтобы работать с потоками, коллекциями и функциями, раньше приходилось писать кучу импортов:
Теперь можно будет написать:
И все нужные классы из
Зачем это нужно?
– Быстрее подключать модули целиком без перечисления всех пакетов.
– Удобно для прототипов, скриптов и JShell.
– Упрощает жизнь новичкам — не нужно вспоминать, где в иерархии пакетов живет
Пример:
Благодаря
⚙️ Как это работает?
Также подключаются пакеты из модулей, от которых
⚡ Важно:
Это работает даже в обычных (не модульных) проектах.
Если в разных модулях встречаются классы с одинаковыми именами, компилятор сообщит об ошибке. В этом случае можно уточнить импорт:
Java постоянно расширяется, и стандартные библиотеки становятся все объемнее. import module — это способ сделать работу с ними проще и быстрее, без потери совместимости.
Что думаете о новой фиче? Предлагаем обсудить комментариях👇
В Java 25 появится долгожданная фича: импорт модулей. Теперь можно будет одним импортом подключать все пакеты, которые экспортирует модуль. Это сильно упростит работу с большими библиотеками, особенно в прототипах и обучении.
В чем проблема?
Например, чтобы работать с потоками, коллекциями и функциями, раньше приходилось писать кучу импортов:
import java.util.*;
import java.util.function.*;
import java.util.stream.*;
Теперь можно будет написать:
import module java.base;
И все нужные классы из
java.util, java.util.stream и других будут доступны сразу.Зачем это нужно?
– Быстрее подключать модули целиком без перечисления всех пакетов.
– Удобно для прототипов, скриптов и JShell.
– Упрощает жизнь новичкам — не нужно вспоминать, где в иерархии пакетов живет
List или Stream.Пример:
import module java.sql;
public class Demo {
public static void main(String[] args) throws Exception {
Connection conn = DriverManager.getConnection("jdbc:h2:mem:");
Statement stmt = conn.createStatement();
stmt.execute("create table test(id int)");
System.out.println("Таблица создана");
}
}
Благодаря
import module java.sql; доступны все классы из java.sql и javax.sql сразу.⚙️ Как это работает?
import module M; — подключает все публичные классы и интерфейсы из экспортируемых пакетов модуля M.Также подключаются пакеты из модулей, от которых
M зависит транзитивно.⚡ Важно:
Это работает даже в обычных (не модульных) проектах.
Если в разных модулях встречаются классы с одинаковыми именами, компилятор сообщит об ошибке. В этом случае можно уточнить импорт:
import java.sql.Date; // Уточнение, какой именно класс Date использовать
Java постоянно расширяется, и стандартные библиотеки становятся все объемнее. import module — это способ сделать работу с ними проще и быстрее, без потери совместимости.
Что думаете о новой фиче? Предлагаем обсудить комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🤔10❤8🔥8👎7
Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥9👍7👎4😁1🤯1
В прошлом посте мы подробно разобрали, как
@Lazy помогает экономить ресурсы и ускорять старт приложения. Но забыли упомянуть ещё один крайне полезный кейс применения этой аннотации — борьбу с циклическими зависимостями.Если в приложении бин A зависит от бина B, а бин B в свою очередь зависит от A — вы получите классическую circular dependency. Spring просто не сможет создать такие бины через конструкторы. Однако, если применить
@Lazy на одном из аргументов, Spring обернёт зависимость в прокси и разорвёт цикл.
@Service
public class ServiceA {
private final ServiceB serviceB;
public ServiceA(@Lazy ServiceB serviceB) {
this.serviceB = serviceB;
}
}
Важно:
@Lazy здесь влияет только на точку инжекции, а не на весь бин. Оба бина будут инициализированы жадно, но зависимость будет подгружена позже.Если же вы хотите, чтобы инициализация бина проходила лениво (при первом обращении к бину), то отметьте аннотацией
@Lazy и сам бин тоже:
@Lazy
@Service
public class ServiceB {
// ...
}
⚠️ Использование свойства:
spring.main.allow-circular-references=trueЭто ещё один способ разрешить циклы на уровне конфигурации. Spring сам предложит это в логах, если столкнётся с циклом:
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
Но будьте осторожны:
– Это работает только с field-based и setter-based инжекцией
– Если используете constructor-based инжекцию, то приложение по прежнему не запустится, лишь немного изменится сообщение в логах
– До Spring Boot 2.6 это поведение было включено по умолчанию — после обновления многие столкнулись с неожиданными фейлами.
Поэтому такой подход стоит рассматривать как временную меру, а не как архитектурное решение.
#SpringTips #Lazy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤13🔥8⚡4👎4
🧨 Rich Errors в Kotlin 2.4: шаг вперёд или шаг в сторону?
На KotlinConf 2025 анонсировали одну из самых обсуждаемых новинок Kotlin — Rich Errors. Вместо того чтобы выбрасывать исключения, теперь функции могут возвращать возможные ошибки как часть своей сигнатуры:
Такой подход делает потенциальные сбои явными, упрощает тестирование и избавляет от try-catch для предсказуемых ошибок. Новинка уже доступна в Kotlin 2.4 и, по мнению авторов, особенно полезна в бизнес-логике.
Но в сообществе мнения разделились.
✅ Что говорят сторонники Rich Errors?
🛑 Это логичное продолжение идеи безопасности типов, как null safety.
🛑 Ошибки становятся частью API — теперь явно видно, какие именно проблемы могут возникнуть.
🛑 try-catch больше не нужен там, где ошибка — ожидаемый результат.
🛑 Тестировать становится проще: вместо моков и исключений — обычная проверка значения.
🛑 Хорошо сочетается с функциональными паттернами без необходимости подключать сторонние библиотеки.
⚠️ Что вызывает сомнения?
🛑 В контроллерах и сервисах с большим числом потенциальных ошибок сигнатуры методов становятся громоздкими.
🛑 Нет способа элегантно агрегировать ошибки: A | B | C работает, но не имеет общей семантики.
🛑 В рамках Spring-приложений реалистичная польза ограничена — фреймворки останутся на исключениях.
🛑 Добавление такого типа обработки может серьёзно сказаться на времени компиляции.
💭 И что теперь?
Для одних Rich Errors — это долгожданное улучшение и эволюция Kotlin. Для других — спорный эксперимент, который добавляет сложности без ощутимой пользы в реальных проектах.
А вы как думаете? Используете ли Rich Errors в своём коде — или пока просто наблюдаете со стороны?
Ох и жарким же будет обсуждение этой новости в следующем выпуске подкаста Spring АйО 🫣
На KotlinConf 2025 анонсировали одну из самых обсуждаемых новинок Kotlin — Rich Errors. Вместо того чтобы выбрасывать исключения, теперь функции могут возвращать возможные ошибки как часть своей сигнатуры:
fun fetchUser(): User | NetworkError
Такой подход делает потенциальные сбои явными, упрощает тестирование и избавляет от try-catch для предсказуемых ошибок. Новинка уже доступна в Kotlin 2.4 и, по мнению авторов, особенно полезна в бизнес-логике.
Но в сообществе мнения разделились.
✅ Что говорят сторонники Rich Errors?
⚠️ Что вызывает сомнения?
💭 И что теперь?
Для одних Rich Errors — это долгожданное улучшение и эволюция Kotlin. Для других — спорный эксперимент, который добавляет сложности без ощутимой пользы в реальных проектах.
А вы как думаете? Используете ли Rich Errors в своём коде — или пока просто наблюдаете со стороны?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔23👍13❤5👎5🔥3
🚀 IntelliJ IDEA переходит на единый дистрибутив
Команда Spring АйО перевела статью от JetBrains, в которой анонсировано важное обновление: начиная с версии 2025.3, IntelliJ IDEA будет распространяться в виде единого дистрибутива, вместо отдельных версий Community и Ultimate.
Теперь каждый разработчик получит более мощный, гибкий и удобный инструмент «из коробки», независимо от подписки. Open source-компоненты по-прежнему доступны, а новая модель обещает улучшенный user experience, бесплатный доступ к большему числу функций и упрощённый процесс сборки из исходников.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/928668/
Команда Spring АйО перевела статью от JetBrains, в которой анонсировано важное обновление: начиная с версии 2025.3, IntelliJ IDEA будет распространяться в виде единого дистрибутива, вместо отдельных версий Community и Ultimate.
Теперь каждый разработчик получит более мощный, гибкий и удобный инструмент «из коробки», независимо от подписки. Open source-компоненты по-прежнему доступны, а новая модель обещает улучшенный user experience, бесплатный доступ к большему числу функций и упрощённый процесс сборки из исходников.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/928668/
🔥38🤔15🤯9⚡8❤5👎1😁1
Forwarded from Amplicode
Мы не могли обойти это замечательное событие стороной и решили провести прямую трансляцию, посвященную ему.
В программе мероприятия доклад о ConneKt — новом HTTP-клиенте для IntelliJ IDEA, который теперь становится Open Source!
Спикеры:
🫶 Онлайн. Бесплатно.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍19🔥10❤7👎1
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– JEP 511: Импорт модулей в Java 25 — как упростить работу с библиотеками
– Spring сдаёт позиции, Hibernate под угрозой, AI-агенты захватывают Россию | Spring АйО Подкаст №26
– Аннотация Lazy как спасение от циклических зависимостей
– Rich Errors в Kotlin 2.4: шаг вперёд или шаг в сторону?
– IntelliJ IDEA переходит на единый дистрибутив
– Amplicode: День рождения Kotlin уже на следующей неделе!
– JPoint: Алексей Рагозин — Data retrieval на пальцах
– Деплоим Spring Boot приложение через Docker Compose в Timeweb Cloud за 10 минут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5❤4
Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍10❤5
Поздравляем всех, кто пишет, учит, продвигает и просто любит Kotlin — язык, который сделал разработку на JVM (и не только!) понятнее, приятнее и современнее. Этот язык программирования был впервые представлен компанией JetBrains 22 июля 2011 года.
С момента первой стабильной версии (1.0) в 2016 году Kotlin прошёл впечатляющий путь:
Kotlin давно вышел за пределы JetBrains: его используют в крупных продакшн-проектах по всему миру, о нём говорят на конференциях, а комьюнити — одно из самых тёплых и активных.
С днём рождения, Kotlin! 🎂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62❤17👍16
Forwarded from OpenIDE
This media is not supported in your browser
VIEW IN TELEGRAM
Один инструмент для многих языков
Александр Шустанов, Михаил Поливаха и Павел Кислов продемонстрируют, как OpenIDE поддерживает мультиязычную разработку в рамках одной IDE. В формате демо реализуем бизнес-функцию охватывающую 4 сервиса на разных языках: TypeScript, Go, Python и Java/Kotlin. Расскажем, как единый инструмент упрощает навигацию, отладку и работу в мультикомандных проектах.
📅 31 июля в 17:00 МСК
📍 Бесплатно, онлайн, на всех наших платформах. Главное – зарегистрироваться.
🔗 ЗАРЕГИСТРИРОВАТЬСЯ
Александр Шустанов, Михаил Поливаха и Павел Кислов продемонстрируют, как OpenIDE поддерживает мультиязычную разработку в рамках одной IDE. В формате демо реализуем бизнес-функцию охватывающую 4 сервиса на разных языках: TypeScript, Go, Python и Java/Kotlin. Расскажем, как единый инструмент упрощает навигацию, отладку и работу в мультикомандных проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18🔥13👍8👎2⚡1👌1
🧩 Spring Data JDBC и R2DBC 4.0 получат поддержку составных идентификаторов
Эксперт Spring АйО и по совместительству Spring Data контрибьютор Михаил Поливаха прокомментировал статью, переведенную командой Spring АйО, про поддержку составных ключей со стороны Spring Data JDBC и R2DBC, начиная с версии 4.0.0-M4 — то, чего так не хватало при работе с моделями, где первичный ключ состоит из нескольких полей.
Теперь достаточно просто описать record с нужными полями, пометить его как
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930354/
Эксперт Spring АйО и по совместительству Spring Data контрибьютор Михаил Поливаха прокомментировал статью, переведенную командой Spring АйО, про поддержку составных ключей со стороны Spring Data JDBC и R2DBC, начиная с версии 4.0.0-M4 — то, чего так не хватало при работе с моделями, где первичный ключ состоит из нескольких полей.
Теперь достаточно просто описать record с нужными полями, пометить его как
@Id, и Spring Data сам корректно построит SQL-сущность.📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930354/
👍26🔥11❤9🤩1
🔥 Spring АйО — это живое сообщество
Хотите что-то обсудить? Нашли интересную статью? Есть вопрос, на который нужен экспертный взгляд?
Предлагайте темы для постов и переводов — просто напишите нам в личку.
Мы всегда на связи — обсуждаем, спорим, поддерживаем и растём вместе. Нам важно ваше мнение, ваш опыт, ваши вопросы. Также не забывайте про наш чат, эксперты Spring АйО в нем всегда на связи!
Давайте делать контент вместе!
Хотите что-то обсудить? Нашли интересную статью? Есть вопрос, на который нужен экспертный взгляд?
Предлагайте темы для постов и переводов — просто напишите нам в личку.
Мы всегда на связи — обсуждаем, спорим, поддерживаем и растём вместе. Нам важно ваше мнение, ваш опыт, ваши вопросы. Также не забывайте про наш чат, эксперты Spring АйО в нем всегда на связи!
Давайте делать контент вместе!
❤17🔥8👍4
🛠 Structured Concurrency в Java: наконец-то находит опору
API structured concurrency в Java наконец-то обрёл устойчивость. В новом переводе от команды Spring АйО подробно рассматриваются последние изменения, появившиеся с выходом JEP 505: фабричный метод
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930812/
API structured concurrency в Java наконец-то обрёл устойчивость. В новом переводе от команды Spring АйО подробно рассматриваются последние изменения, появившиеся с выходом JEP 505: фабричный метод
open(), политики Joiner'ов, улучшенная отмена задач, дедлайны, передача контекста через ScopedValues и строгая защита от ошибок использования. Всё это делает параллельное программирование в Java более безопасным, читаемым и управляемым.📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930812/
5🔥24👍11❤9
Forwarded from Amplicode
Media is too big
VIEW IN TELEGRAM
Роман Елизаров, Илья Кучмин и Александр Шустанов:
––––– Таймкоды –––––
00:00:00 – Хайлайты
00:00:41 – Вступление. О чём сегодня поговорим?
00:05:10 – Демо. Основные возможности Connekt и мощная интеграция со Spring Boot.
00:44:43 – Демо. Connekt и работа с защищенными эндпоинтами (авторизация, аутентификация, Spring Security)
00:59:51 – Демо. Работаем с внешним API используя Connekt. Формируем цепочки вызовов
01:17:55 – Заключение. А что еще умеет Connekt?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤12👍10
🧠 JEP 519: Компактные заголовки объектов — теперь официально!
Java 25 анонсирует ещё одну немаловажную фичу: компактные заголовки объектов (Compact Object Headers). Это позволит JVM экономить память и ускоряться без вмешательства в код.
Что это такое?
У каждого объекта в Java есть заголовок — служебные данные, которые JVM использует для синхронизации, GC и т.д. Обычно заголовок занимает 96 бит (12 байт) на 64-битных платформах.
С JEP 450 в Java 24 появится экспериментальная опция сжать заголовки до 64 бит (8 байт). JEP 519 делает это стабильной, проверенной фичей, которую можно безопасно включать прямо в проде.
Зачем?
– Минус 22% памяти в SPECjbb2015
– Минус 8% CPU в среднем
– Минус 15% сборок мусора в G1 и Parallel GC
– +10% скорость парсинга JSON
Для распределённых систем, высоконагруженных сервисов и микросервисов — это простой способ сэкономить ресурсы без переписывания кода.
Как включить?
В Java 25 больше не понадобится флаг
Теперь достаточно:
Пруфы?
– Протестировано в проде на сотнях сервисов Amazon.
– Прогнано по полному тест-сьюту JDK в Oracle.
– Отдельные компании уже бэкпортят фичу на JDK 21 и 17.
Что важно знать?
– По умолчанию выключено.
– Не влияет на функциональность приложения.
– Может потребовать внимания в будущем, если другие фичи потребуют больше битов в заголовке (но для этого есть решения в рамках проектов Valhalla и Lilliput).
Обсудим в комментариях? 👇
Java 25 анонсирует ещё одну немаловажную фичу: компактные заголовки объектов (Compact Object Headers). Это позволит JVM экономить память и ускоряться без вмешательства в код.
Что это такое?
У каждого объекта в Java есть заголовок — служебные данные, которые JVM использует для синхронизации, GC и т.д. Обычно заголовок занимает 96 бит (12 байт) на 64-битных платформах.
С JEP 450 в Java 24 появится экспериментальная опция сжать заголовки до 64 бит (8 байт). JEP 519 делает это стабильной, проверенной фичей, которую можно безопасно включать прямо в проде.
Зачем?
– Минус 22% памяти в SPECjbb2015
– Минус 8% CPU в среднем
– Минус 15% сборок мусора в G1 и Parallel GC
– +10% скорость парсинга JSON
Для распределённых систем, высоконагруженных сервисов и микросервисов — это простой способ сэкономить ресурсы без переписывания кода.
Как включить?
В Java 25 больше не понадобится флаг
-XX:+UnlockExperimentalVMOptions
Теперь достаточно:
java -XX:+UseCompactObjectHeaders ...
Пруфы?
– Протестировано в проде на сотнях сервисов Amazon.
– Прогнано по полному тест-сьюту JDK в Oracle.
– Отдельные компании уже бэкпортят фичу на JDK 21 и 17.
Что важно знать?
– По умолчанию выключено.
– Не влияет на функциональность приложения.
– Может потребовать внимания в будущем, если другие фичи потребуют больше битов в заголовке (но для этого есть решения в рамках проектов Valhalla и Lilliput).
Обсудим в комментариях? 👇
👍38🔥18❤11
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
😁48🔥11👍6