[Перевод] О размерах пула соединений

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

https://habr.com/ru/companies/spring_aio/articles/1011770/

#java #kotlin #connection_pool #system_design #system_development #system_designer #spring #spring_boot #spring_framework #postgres

О размерах пула соединений

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

Хабр

[Перевод] Разница между параллельными и распределёнными вычислениями

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

https://habr.com/ru/companies/spring_aio/articles/1008990/

#system_design #consistency #distributed_computing #distributed_systems #distributed #parallels #parallelism #parallel_computing #spring #spring_boot

Разница между параллельными и распределёнными вычислениями

Параллельные и распределённые вычисления часто ставят рядом, но это далеко не одно и то же. В новом переводе от команды Spring АйО разберем, как устроены обе модели, чем отличаются их архитектура,...

Хабр

conditionals-spring-boot: расширяем возможности @Conditional

Написал небольшую библиотеку для Spring Boot, которая добавляет типизированные @Conditional -аннотации для работы с конфигурацией через Environment...

https://habr.com/ru/articles/1008018/

#java #spring #spring_boot #spring_framework #springboot #configuration #configuration_management

conditionals-spring-boot: расширяем возможности @Conditional

В мире Spring Boot почти каждый сталкивался с аннотациями @ConditionalOnProperty , @ConditionalOnBean и их собратьями. Они помогают конфигурировать бины динамически, но стандартные условия это только...

Хабр

[Перевод] Часы Лампорта

Сегодня мы живём в мире распределённых систем: Apache Kafka, Apache Spark, Apache Cassandra — это уже не экзотика, а повседневная инфраструктура продакшена. Сервисы пишут события, стримы обрабатываются в реальном времени, данные реплицируются по датацентрам. И почти в каждом таком сценарии возникает фундаментальный вопрос: Как понять, что произошло раньше, а что позже, если глобального времени не существует? Здесь в игру вступают логические часы Лампорта — простая, но концептуально мощная идея, лежащая в основе причинно-следственного порядка в распределённых системах. Подробнее - в новом переводе от команды Spring АйО .

https://habr.com/ru/companies/spring_aio/articles/1005934/

#java #kotlin #system #system_design #architecture #architecture_design #spring #spring_boot

Часы Лампорта

Сегодня мы живём в мире распределённых систем: Apache Kafka, Apache Spark, Apache Cassandra — это уже не экзотика, а повседневная инфраструктура продакшена. Сервисы пишут события, стримы...

Хабр

LTS, обновления и поддержка (support): где в Java путают термины и кто за это платит

Когда начинается разговор про Java, почти всегда он внезапно уходит в сторону Spring. И это не случайность. Проблемы с релизами, поддержкой, миграциями, безопасностью — это не «проблемы Spring». Это следствие того, как изменилась сама Java-экосистема. Чтобы понять, что происходит со Spring, нужно сначала разобраться, что произошло с Java.

https://habr.com/ru/companies/axiomjdk/articles/1005126/

#java #spring #spring_boot #support #lts #поддержка #jdk #релизный_цикл #информационная_безопасность #обновления

LTS, обновления и поддержка (support): где в Java путают термины и кто за это платит

Когда начинается разговор про Java, почти всегда он внезапно уходит в сторону Spring. И это не случайность. Проблемы с релизами, поддержкой, миграциями, безопасностью — это не «проблемы Spring». Это...

Хабр

[Перевод] Ceylon и NULL: как сделать null нормальным

В одном и том же null часто прячут разные смыслы: “нет значения”, “неизвестно”, “неинициализировано”. Потом это всплывает в NPE и в кривой логике исполнения. В Ceylon эту проблему решают через типовую систему, через Union типы. Подробнее, в переводе от Spring АйО .

https://habr.com/ru/companies/spring_aio/articles/1001982/

#java #kotlin #ceylon #jvm #spring #spring_boot #spring_framework

Ceylon и NULL: как сделать null нормальным

В одном и том же null часто прячут разные смыслы: “нет значения”, “неизвестно”, “неинициализировано”. Потом это всплывает в NPE и в кривой логике исполнения. В Ceylon эту проблему решают через типовую...

Хабр

[Перевод] Руководство по ArchUnit — как модульно тестировать архитектуру

Соблюдение определённой структуры пакетов или архитектуры крайне важно. Особенно в Java, где для корректной работы некоторые элементы должны быть public или действительно доступны за пределами своего пакета. В новом переводе от команды Spring АйО рассмотрим библиотеку с открытым исходным кодом ArchUnit, которая помогает в тех случаях, когда одного компилятора недостаточно.

https://habr.com/ru/companies/spring_aio/articles/1001486/

#java #kotlin #archunit #тестирование #testing #test #spring #spring_boot #spring_framework

Руководство по ArchUnit — как модульно тестировать архитектуру

Соблюдение определённой структуры пакетов или архитектуры крайне важно. Особенно в Java, где для корректной работы некоторые элементы должны быть public или действительно доступны за пределами своего...

Хабр

[Перевод] Разрыв в неизменяемости: почему Java Records нужны оптики (Lenses)

Records, pattern matching и sealed-типы сделали Java куда более «функциональной» — читать вложенные данные стало легко и красиво. Но как только вам нужно изменить что-то глубоко внутри неизменяемой структуры, начинается боль: каскад пересоздания records, копирование полей, десятки строк ради одного изменения. В новом переводе от команды Spring АйО рассмотрим, почему у современной Java всё ещё есть пробел в истории неизменяемости — и как оптики закрывают его. Если pattern matching — это про элегантное чтение , то оптики дают то, чего так не хватает, — композиционную запись : определили путь один раз и дальше меняете вложенные поля одной строкой, без ручной реконструкции и без циклов.

https://habr.com/ru/companies/spring_aio/articles/1001066/

#java #kotlin #jvm #optics #java_core #spring #spring_framework #spring_boot

Разрыв в неизменяемости: почему Java Records нужны оптики (Lenses)

Records, pattern matching и sealed-типы сделали Java куда более «функциональной» — читать вложенные данные стало легко и красиво. Но как только вам нужно изменить что-то глубоко внутри неизменяемой...

Хабр

[Перевод] Программирование, ориентированное на данные, для Java: за пределами record-классов

Record-классы удобны, пока класс = «состояние, всё состояние и ничего кроме». Любое отклонение (API канонического конутруктора не равно внутреннему представлению, нужно наследование) ломает «автогенерацию» и паттерн-деструктурирование (destructuring). В новом переводе от команды Spring АйО статьи Brian`а Goetz`а, архитектора Java Language, предлагается следующий шаг в направлении data-oriented programming in Java: классы-носители и интерфейсы-носители (они же Carrier classes & interfaces). Концептуально, carrier классы родились из record-ов путем ослабления части их ограничений. Комментарий от Михаила Поливаха : Друзья, помните, пожалуйста, что данная статья по сути является суммированием обсуждения Carrier классов из JDK Project Amber Mailing List. Я это к тому, что пока непонятно, в какой версии языка carrier классы появятся, и появятся ли они в том виде, в котором представлены в статье. Статью стоит рассматривать как пищу для размышления.

https://habr.com/ru/companies/spring_aio/articles/995824/

#java #jvm #kotlin #jvm_options #jvm_hacks #spring #spring_boot #spring_framework

Программирование, ориентированное на данные, для Java: за пределами record-классов

Record-классы удобны, пока класс = «состояние, всё состояние и ничего кроме». Любое отклонение (API канонического конутруктора не равно внутреннему представлению, нужно наследование) ломает...

Хабр

[Перевод] HotSpot AOT-кэш: стартуем быстрее, греемся меньше

В новом переводе от команды Spring АйО рассмотрим, как можно ускорить Java-приложения без переписываний: в свежих JDK появились Ahead-of-Time оптимизации кэша, которые выносят «дорогие» этапы загрузки/линковки классов (и даже частично профилирование методов) из рантайма в заранее подготовленный артефакт. Рассмотрим как устроен AOT-кэш в JDK 24–26, какие есть workflow (3 шага vs 2 шага/в один прогон), где прячутся подводные камни вроде удвоения требований по памяти при - XX:AOTCacheOutput , и какие практики обучения помогут реально сократить время старта и быстрее выйти на пик производительности.

https://habr.com/ru/companies/spring_aio/articles/995398/

#java #kotlin #jvm #aot #cache #cachecontrol #spring #spring_boot #spring_framework #springboot

HotSpot AOT-кэш: стартуем быстрее, греемся меньше

В новом переводе от команды Spring АйО рассмотрим, как можно ускорить Java-приложения без переписываний: в свежих JDK появились Ahead-of-Time оптимизации кэша, которые выносят «дорогие» этапы...

Хабр