SAML2 ещё жив?! Как интегрировать Keycloak со Spring Boot в 2025 году
Команда Spring АйО перевела статью совместном использовании Spring Boot, SAML2 и Keycloak при запуске приложений. Здесь также приводятся некоторые кастомизированные решения, позволяющие более гибко работать с упомянутым набором технологий.
Читать: https://habr.com/ru/companies/spring_aio/articles/895022/?utm_campaign=895022
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью совместном использовании Spring Boot, SAML2 и Keycloak при запуске приложений. Здесь также приводятся некоторые кастомизированные решения, позволяющие более гибко работать с упомянутым набором технологий.
Читать: https://habr.com/ru/companies/spring_aio/articles/895022/?utm_campaign=895022
@a_cup_of_java | Другие наши каналы
Explyt Spring Plugin. Патчим байткод Spring или как мы улучшили распознавание контекста приложений
Всем привет! Одной из уникальных особенностей нашего плагина, является практически стопроцентное понимание контекста Spring приложений. Где мы максимально нативным способом, через публичное Spring Boot Api, смогли получить доступ к контексту приложения и использовали эту информацию у себя в плагине для поддержки Spring Dependency Injection и навигации к “бинам”. Но время не стоит на месте, и мы сделали еще один шаг в сторону улучшения распознавания Spring Context, путем модификации текущего байт-кода Spring через параметр jvm: -javaagent, который позволил избавиться нам от большинства недостатков текущего подхода, кому интересно узнать детали реализации, то добро пожаловать под кат.
Читать: https://habr.com/ru/companies/explyt/articles/892726/?utm_campaign=892726
@a_cup_of_java | Другие наши каналы
Всем привет! Одной из уникальных особенностей нашего плагина, является практически стопроцентное понимание контекста Spring приложений. Где мы максимально нативным способом, через публичное Spring Boot Api, смогли получить доступ к контексту приложения и использовали эту информацию у себя в плагине для поддержки Spring Dependency Injection и навигации к “бинам”. Но время не стоит на месте, и мы сделали еще один шаг в сторону улучшения распознавания Spring Context, путем модификации текущего байт-кода Spring через параметр jvm: -javaagent, который позволил избавиться нам от большинства недостатков текущего подхода, кому интересно узнать детали реализации, то добро пожаловать под кат.
Читать: https://habr.com/ru/companies/explyt/articles/892726/?utm_campaign=892726
@a_cup_of_java | Другие наши каналы
Будущее Java — в вас!
На JavaOne 2025 обсудили важность сообщества Java, отметили его 30-летие и построили прогнозы развития на десятилетия вперед. Эксперты рассказали, как создавать приложения с ИИ на базе Helidon и LangChain4J. Праздник завершился песней "Happy Birthday" для Java.
Подробности: https://www.infoq.com/news/2025/03/day-three-java-one-2025/
#en
@a_cup_of_java | Другие наши каналы
На JavaOne 2025 обсудили важность сообщества Java, отметили его 30-летие и построили прогнозы развития на десятилетия вперед. Эксперты рассказали, как создавать приложения с ИИ на базе Helidon и LangChain4J. Праздник завершился песней "Happy Birthday" для Java.
Подробности: https://www.infoq.com/news/2025/03/day-three-java-one-2025/
#en
@a_cup_of_java | Другие наши каналы
Hibernate proxy and N+1
Это вторая статья, связанная с пониманием, поиском и устранением проблемы N+1. Первая статья была про стратегии извлечения данных. Эта статья будет про Hibernate proxy. Понимание концепций стратегии извлечения данных и Hibernate прокси, это ключи к пониманию причин, приводящих к N+1. Подробней про N+1, будет рассказано в следующих статьях.
Читать: https://habr.com/ru/articles/895118/?utm_campaign=895118
@a_cup_of_java | Другие наши каналы
Это вторая статья, связанная с пониманием, поиском и устранением проблемы N+1. Первая статья была про стратегии извлечения данных. Эта статья будет про Hibernate proxy. Понимание концепций стратегии извлечения данных и Hibernate прокси, это ключи к пониманию причин, приводящих к N+1. Подробней про N+1, будет рассказано в следующих статьях.
Читать: https://habr.com/ru/articles/895118/?utm_campaign=895118
@a_cup_of_java | Другие наши каналы
Тема дня: 10 ключевых аннотаций Spring MVC и REST
Статья из Java67 рассказывает о самых полезных аннотациях Spring MVC и REST, таких как @Controller, @RequestMapping и @RestController. Эти аннотации облегчают создание Java веб-приложений и RESTful сервисов, помогая разработчикам эффективно управлять запросами и ответами. Аннотации Spring MVC: все, что нужно знать
Статья посвящена ключевым аннотациям в Spring MVC и REST, важным для разработчиков Java. Особое внимание уделяется @EnableAutoConfiguration и @ResponseStatus. Более подробно с аннотациями можно ознакомиться в книгах "Spring Boot in Action" и "Spring in Action". Полный гид по собеседованиям в мире Java
Javarevisited предлагает обширный список вопросов для подготовки к собеседованиям: от Spring Boot и Microservices до SQL и Java Collections. Ищете курсы по Spring Framework? Это тоже здесь. Подпишитесь и не пропустите новые обновления и скидки!
Подробности: http://www.java67.com/2019/04/top-10-spring-mvc-and-rest-annotations-examples-java.html
#en
@a_cup_of_java | Другие наши каналы
Статья из Java67 рассказывает о самых полезных аннотациях Spring MVC и REST, таких как @Controller, @RequestMapping и @RestController. Эти аннотации облегчают создание Java веб-приложений и RESTful сервисов, помогая разработчикам эффективно управлять запросами и ответами. Аннотации Spring MVC: все, что нужно знать
Статья посвящена ключевым аннотациям в Spring MVC и REST, важным для разработчиков Java. Особое внимание уделяется @EnableAutoConfiguration и @ResponseStatus. Более подробно с аннотациями можно ознакомиться в книгах "Spring Boot in Action" и "Spring in Action". Полный гид по собеседованиям в мире Java
Javarevisited предлагает обширный список вопросов для подготовки к собеседованиям: от Spring Boot и Microservices до SQL и Java Collections. Ищете курсы по Spring Framework? Это тоже здесь. Подпишитесь и не пропустите новые обновления и скидки!
Подробности: http://www.java67.com/2019/04/top-10-spring-mvc-and-rest-annotations-examples-java.html
#en
@a_cup_of_java | Другие наши каналы
Что делать при ошибке "java.lang.OutOfMemoryError: unable to create new native thread"
Эта ошибка в Java возникает из-за превышения лимита на количество потоков в системе. Решение – увеличить лимит потоков с помощью команды ulimit в Linux или устранить утечку потоков в коде приложения. Учитесь избегать таких проблем при разработке Java-приложений. Разбираемся с потоками в Java: основные концепции
Статья рассматривает ключевые понятия работы с потоками в Java, такие как интерфейс Runnable, управляющие блоки synchronized, методы wait и sleep, а также особенности демонов и очередей. Узнайте больше о технических аспектах и применении потоков в разработке.
Подробности: http://www.java67.com/2016/10/javalangoutofmemoryerror-unable-to-create-new-native-thread-in-java-solution.html
#en
@a_cup_of_java | Другие наши каналы
Эта ошибка в Java возникает из-за превышения лимита на количество потоков в системе. Решение – увеличить лимит потоков с помощью команды ulimit в Linux или устранить утечку потоков в коде приложения. Учитесь избегать таких проблем при разработке Java-приложений. Разбираемся с потоками в Java: основные концепции
Статья рассматривает ключевые понятия работы с потоками в Java, такие как интерфейс Runnable, управляющие блоки synchronized, методы wait и sleep, а также особенности демонов и очередей. Узнайте больше о технических аспектах и применении потоков в разработке.
Подробности: http://www.java67.com/2016/10/javalangoutofmemoryerror-unable-to-create-new-native-thread-in-java-solution.html
#en
@a_cup_of_java | Другие наши каналы
👍1
Как исправить ошибку Unsupported major.minor version в Eclipse?
Столкнулись с ошибкой UnsupportedClassVersionError в Eclipse? Часто она возникает, когда код компилируется на более высокой версии JDK, чем используется для выполнения. Решение — обновить конфигурацию запуска на нужную версию JDK. Узнайте все детали в статье на Java67.
Подробности: http://www.java67.com/2018/01/eclipse-unsupported-major-minor-version-53-53-51-error-Java.html
#en
@a_cup_of_java | Другие наши каналы
Столкнулись с ошибкой UnsupportedClassVersionError в Eclipse? Часто она возникает, когда код компилируется на более высокой версии JDK, чем используется для выполнения. Решение — обновить конфигурацию запуска на нужную версию JDK. Узнайте все детали в статье на Java67.
Подробности: http://www.java67.com/2018/01/eclipse-unsupported-major-minor-version-53-53-51-error-Java.html
#en
@a_cup_of_java | Другие наши каналы
Обзор новостей Java: Jakarta EE 11, Spring AI и обновления
В мире Java продолжаются значительные обновления: Jakarta EE 11 получил одобрение, первая бета-версия WildFly 36 принесла улучшения производительности, а Spring AI обновил свои стартовые артефакты. Следите за новинками, чтобы не упустить важное для разработчиков!
Подробности: https://www.infoq.com/news/2025/03/java-news-roundup-mar24-2025/
#en
@a_cup_of_java | Другие наши каналы
В мире Java продолжаются значительные обновления: Jakarta EE 11 получил одобрение, первая бета-версия WildFly 36 принесла улучшения производительности, а Spring AI обновил свои стартовые артефакты. Следите за новинками, чтобы не упустить важное для разработчиков!
Подробности: https://www.infoq.com/news/2025/03/java-news-roundup-mar24-2025/
#en
@a_cup_of_java | Другие наши каналы
Что такое lsFusion: взгляд со стороны
Эта статья – небольшой обзор продуктов компании lsFusion и того предалагает пользователям компания lsFusion. Взялся я за него после того, как в статьях «Почему я не люблю 1С» и «Стоит ли идти в 1С программисты в 2025 году» упомянул эту систему как одну из возможных альтернатив 1С. На тот момент я только читал о том, что есть такая система как lsFusion на Хабре, из любопытства заходил на их сайт и просматривал в поиске дополнительную информацию. Тогда я ее упомянул только как «одну из систем» в перечне альтернатив, так как сами они явно позиционируют себя как учетная система.
Далее уже в комментариях я увидел большой тред, где сравнивали 1С и lsFusion. Мне стал интересен автор комментариев, оказалось, что это работник lsFusion. Я с ним связался, чтобы самому лучше понять, что же это за программный продукт. Получил ответы на многие собственные вопросы, изучил ближе саму систему. И теперь хочу поделиться тем, что узнал, чтобы помочь людям, которые находятся в поиске альтернативы 1С.
Читать: https://habr.com/ru/companies/trinion/articles/895688/?utm_campaign=895688
@a_cup_of_java | Другие наши каналы
Эта статья – небольшой обзор продуктов компании lsFusion и того предалагает пользователям компания lsFusion. Взялся я за него после того, как в статьях «Почему я не люблю 1С» и «Стоит ли идти в 1С программисты в 2025 году» упомянул эту систему как одну из возможных альтернатив 1С. На тот момент я только читал о том, что есть такая система как lsFusion на Хабре, из любопытства заходил на их сайт и просматривал в поиске дополнительную информацию. Тогда я ее упомянул только как «одну из систем» в перечне альтернатив, так как сами они явно позиционируют себя как учетная система.
Далее уже в комментариях я увидел большой тред, где сравнивали 1С и lsFusion. Мне стал интересен автор комментариев, оказалось, что это работник lsFusion. Я с ним связался, чтобы самому лучше понять, что же это за программный продукт. Получил ответы на многие собственные вопросы, изучил ближе саму систему. И теперь хочу поделиться тем, что узнал, чтобы помочь людям, которые находятся в поиске альтернативы 1С.
Читать: https://habr.com/ru/companies/trinion/articles/895688/?utm_campaign=895688
@a_cup_of_java | Другие наши каналы
❤1
Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной
Вадим Ваганов, руководитель разработки и Head of Profession Backend в Газпромбанке, рассказывает, почему важно визуализировать метрики и свою работу.
Читать: «Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной»
@a_cup_of_java | Другие наши каналы
Вадим Ваганов, руководитель разработки и Head of Profession Backend в Газпромбанке, рассказывает, почему важно визуализировать метрики и свою работу.
Читать: «Бэкенд — это тоже красиво: как метрики и мониторинг делают вашу работу заметной»
@a_cup_of_java | Другие наши каналы
🆒4👍3🤩1
Библиотека для кэширования Caffeine: анализ кода
То и дело, прожигая время за чтением reddit, я натыкаюсь на очередной пост, в котором упоминается метод S3 FIFO и упоминается, что он лучше LRU (вытеснение реже всего используемых значений) — потому, что даёт более низкий процент промахов кэша. Видные компании, в частности, RedPandas, Rising Wave и Cloudflare уже внедрили S3 FIFO у себя на различных мощностях, что только подогрело мой интерес к нему. Кэши — чертовски интересная тема, а по работе мне приходится сильно полагаться на работу с кэшами при обслуживании нескольких сервисов. Так что я был уверен, что рано или поздно мне потребуется протестировать S3 FIFO или, как минимум, удостовериться, что я понимаю ключевые идеи, заложенные в этой технологии.
Правда, казалось, что рановато с головой погружаться в изучение нового подхода к кэшированию, пока ещё досконально не разобрался в аналогичной системе, с которой приходится иметь дело на работе сейчас. У нас в команде для работы с кэшированием используется библиотека Caffeine, и, положа руку на сердце, я не ориентировался в её внутреннем устройстве, не пытался проверить, можно ли в ней что-нибудь подкрутить, и есть ли в ней параметры, поддающиеся тонкой настройке. В этой статье я попробую законспектировать мои изыскания и рассказать, как на собственном опыте разбирался во внутреннем устройстве библиотеки Caffeine.
Все желающие приглашаются в путешествие с разбором сложностей одной из наиболее востребованных систем кэширования, используемых в мире. Будь вы бывалый инженер или просто новичок, интересующийся продвинутыми механизмами кэширования, это исследование прольёт вам свет на многие вопросы и подведёт к важным практическим выводом. Поехали!
Читать: https://habr.com/ru/articles/896266/?utm_campaign=896266
@a_cup_of_java | Другие наши каналы
То и дело, прожигая время за чтением reddit, я натыкаюсь на очередной пост, в котором упоминается метод S3 FIFO и упоминается, что он лучше LRU (вытеснение реже всего используемых значений) — потому, что даёт более низкий процент промахов кэша. Видные компании, в частности, RedPandas, Rising Wave и Cloudflare уже внедрили S3 FIFO у себя на различных мощностях, что только подогрело мой интерес к нему. Кэши — чертовски интересная тема, а по работе мне приходится сильно полагаться на работу с кэшами при обслуживании нескольких сервисов. Так что я был уверен, что рано или поздно мне потребуется протестировать S3 FIFO или, как минимум, удостовериться, что я понимаю ключевые идеи, заложенные в этой технологии.
Правда, казалось, что рановато с головой погружаться в изучение нового подхода к кэшированию, пока ещё досконально не разобрался в аналогичной системе, с которой приходится иметь дело на работе сейчас. У нас в команде для работы с кэшированием используется библиотека Caffeine, и, положа руку на сердце, я не ориентировался в её внутреннем устройстве, не пытался проверить, можно ли в ней что-нибудь подкрутить, и есть ли в ней параметры, поддающиеся тонкой настройке. В этой статье я попробую законспектировать мои изыскания и рассказать, как на собственном опыте разбирался во внутреннем устройстве библиотеки Caffeine.
Все желающие приглашаются в путешествие с разбором сложностей одной из наиболее востребованных систем кэширования, используемых в мире. Будь вы бывалый инженер или просто новичок, интересующийся продвинутыми механизмами кэширования, это исследование прольёт вам свет на многие вопросы и подведёт к важным практическим выводом. Поехали!
Читать: https://habr.com/ru/articles/896266/?utm_campaign=896266
@a_cup_of_java | Другие наши каналы
Ускорение Spring REST API на 200%
Spring Framework уже многие годы является базой, на которой разрабатывается подавляющее большинство серверных приложений на Java. Он предоставляет абстракции над множеством различных технологий, в том числе и абстракции для разработки REST API. Все эти абстракции имеют свою цену в плане производительности, и иногда эта цена является очень большой, если речь идёт о высоконагруженном приложении. В этой небольшой статье я покажу, как можно избавиться от ненужных накладных расходов и значительно увеличить производительность вашего API.
Читать: https://habr.com/ru/companies/maxilect/articles/896240/?utm_campaign=896240
@a_cup_of_java | Другие наши каналы
Spring Framework уже многие годы является базой, на которой разрабатывается подавляющее большинство серверных приложений на Java. Он предоставляет абстракции над множеством различных технологий, в том числе и абстракции для разработки REST API. Все эти абстракции имеют свою цену в плане производительности, и иногда эта цена является очень большой, если речь идёт о высоконагруженном приложении. В этой небольшой статье я покажу, как можно избавиться от ненужных накладных расходов и значительно увеличить производительность вашего API.
Читать: https://habr.com/ru/companies/maxilect/articles/896240/?utm_campaign=896240
@a_cup_of_java | Другие наши каналы
Хранение 1 ТБ в виртуальной памяти на компьютере с 64 ГБ памяти с использованием Chronicle Queue
Java разработчики часто сталкиваются с проблемой обработки очень больших наборов данных в рамках ограничений виртуальной машины Java (JVM). Когда размер кучи значительно увеличивается — часто более чем на 32 ГБ, — время паузы при сборке мусора (GC) может увеличиваться, что приводит к снижению производительности. В этой статье рассматривается, как Chronicle Queue обеспечивает хранение и эффективный доступ к набору данных размером 1 ТБ на компьютере с 64 ГБ оперативной памяти.
Читать: https://habr.com/ru/articles/866154/?utm_campaign=866154
@a_cup_of_java | Другие наши каналы
Java разработчики часто сталкиваются с проблемой обработки очень больших наборов данных в рамках ограничений виртуальной машины Java (JVM). Когда размер кучи значительно увеличивается — часто более чем на 32 ГБ, — время паузы при сборке мусора (GC) может увеличиваться, что приводит к снижению производительности. В этой статье рассматривается, как Chronicle Queue обеспечивает хранение и эффективный доступ к набору данных размером 1 ТБ на компьютере с 64 ГБ оперативной памяти.
Читать: https://habr.com/ru/articles/866154/?utm_campaign=866154
@a_cup_of_java | Другие наши каналы
👍1
3 вопроса на собеседование о многопоточности в Java
Привет, Хабр!
Сегодня рассмотрим несколько вопросов на собеседовании, которые могут встретиться: чем
Читать: https://habr.com/ru/companies/otus/articles/896178/?utm_campaign=896178
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
Сегодня рассмотрим несколько вопросов на собеседовании, которые могут встретиться: чем
synchronized отличается от ReentrantLock, что такое happens-before и как оно влияет на volatile и final и почему ConcurrentHashMap.computeIfAbsent() не всегда безопасен?Читать: https://habr.com/ru/companies/otus/articles/896178/?utm_campaign=896178
@a_cup_of_java | Другие наши каналы
👍1
Лучшие практики создания отказоустойчивых систем
Разработка отказоустойчивых систем представляет собой важнейшую компетенцию для инженеров, занятых созданием распределённых и масштабируемых приложений. Под отказоустойчивостью понимается способность системы сохранять работоспособность в условиях сбоев отдельных компонентов или недоступности внешних сервисов. В данной статье рассматриваются практики обеспечения устойчивости на уровне программного кода, в частности в контексте серверных приложений, реализованных на языках Python и Java.
Особое внимание уделяется методам повышения надёжности при временных сбоях, включая: повторные попытки выполнения операций с экспоненциальной задержкой (exponential backoff), использование шаблона circuit breaker, механизмы плавной деградации функциональности (graceful degradation), задание таймаутов, реализация идемпотентности, ограничение одновременных вызовов (bulkhead isolation), а также внедрение систем мониторинга и алертинга. Приводимые примеры охватывают типовые сценарии — обращение к внешним API, взаимодействие с базами данных и выполнение фоновых задач.
Читать: https://habr.com/ru/articles/896638/?utm_campaign=896638
@a_cup_of_java | Другие наши каналы
Разработка отказоустойчивых систем представляет собой важнейшую компетенцию для инженеров, занятых созданием распределённых и масштабируемых приложений. Под отказоустойчивостью понимается способность системы сохранять работоспособность в условиях сбоев отдельных компонентов или недоступности внешних сервисов. В данной статье рассматриваются практики обеспечения устойчивости на уровне программного кода, в частности в контексте серверных приложений, реализованных на языках Python и Java.
Особое внимание уделяется методам повышения надёжности при временных сбоях, включая: повторные попытки выполнения операций с экспоненциальной задержкой (exponential backoff), использование шаблона circuit breaker, механизмы плавной деградации функциональности (graceful degradation), задание таймаутов, реализация идемпотентности, ограничение одновременных вызовов (bulkhead isolation), а также внедрение систем мониторинга и алертинга. Приводимые примеры охватывают типовые сценарии — обращение к внешним API, взаимодействие с базами данных и выполнение фоновых задач.
Читать: https://habr.com/ru/articles/896638/?utm_campaign=896638
@a_cup_of_java | Другие наши каналы
👍3
От Kotlin до кассовых чеков: как выглядит Java-разработка в SM Lab
Когда видишь компанию со стороны, одни вещи понимаешь, а другие остаются секретом. О том, что SM Lab отвечает за IT-решения в группе компаний «Спортмастер», можно догадаться уже по названию и логотипу. Но, например, сколько разработчиков заняты этими решениями? Какие именно у них проекты? Это куда менее очевидно.
Мы проводим конференции по разным IT-направлениям, на них неоднократно выступали спикеры из SM Lab, и некоторые вещи можно понять по их докладам. Например, на Mobius рассказывали про «Генерацию этикеток для термопринтеров на основе языка разметки ZPL», а на Heisenbug помогали другим с «Первыми шагами в нагрузке».
А на этой неделе SM Lab примет участие в нашей Java-конференции JPoint, и я решил, что сейчас самое время задать вопросы о Java-разработке сотрудникам самой компании. Публикую результат, в котором соединены вместе ответы нескольких разных людей.
Читать: https://habr.com/ru/companies/jugru/articles/896748/?utm_campaign=896748
@a_cup_of_java | Другие наши каналы
Когда видишь компанию со стороны, одни вещи понимаешь, а другие остаются секретом. О том, что SM Lab отвечает за IT-решения в группе компаний «Спортмастер», можно догадаться уже по названию и логотипу. Но, например, сколько разработчиков заняты этими решениями? Какие именно у них проекты? Это куда менее очевидно.
Мы проводим конференции по разным IT-направлениям, на них неоднократно выступали спикеры из SM Lab, и некоторые вещи можно понять по их докладам. Например, на Mobius рассказывали про «Генерацию этикеток для термопринтеров на основе языка разметки ZPL», а на Heisenbug помогали другим с «Первыми шагами в нагрузке».
А на этой неделе SM Lab примет участие в нашей Java-конференции JPoint, и я решил, что сейчас самое время задать вопросы о Java-разработке сотрудникам самой компании. Публикую результат, в котором соединены вместе ответы нескольких разных людей.
Читать: https://habr.com/ru/companies/jugru/articles/896748/?utm_campaign=896748
@a_cup_of_java | Другие наши каналы
❤2
Code-Level Observability: Глубокая видимость на уровне кода против традиционных APM и преимущества BitDive
Современные приложения и распределённые системы стали невероятно сложными, а традиционные инструменты мониторинга зачастую не справляются с выявлением скрытых проблем. Code-Level Observability предлагает новый подход, позволяющий получить детальное представление о работе приложения непосредственно на уровне исходного кода. В этой статье мы рассмотрим, почему глубокая видимость кода становится необходимостью, какие проблемы имеют популярные APM-системы, и как система BitDive превосходит традиционные решения.
Читать: https://habr.com/ru/articles/896944/?utm_campaign=896944
@a_cup_of_java | Другие наши каналы
Современные приложения и распределённые системы стали невероятно сложными, а традиционные инструменты мониторинга зачастую не справляются с выявлением скрытых проблем. Code-Level Observability предлагает новый подход, позволяющий получить детальное представление о работе приложения непосредственно на уровне исходного кода. В этой статье мы рассмотрим, почему глубокая видимость кода становится необходимостью, какие проблемы имеют популярные APM-системы, и как система BitDive превосходит традиционные решения.
Читать: https://habr.com/ru/articles/896944/?utm_campaign=896944
@a_cup_of_java | Другие наши каналы
Статья. Как я добился гибкости в приложении и причем тут ссылки на методы?
Всем привет! Меня зовут Макс, и уже 14 лет как я вошел в ИТ и пока не планирую отсюда выходить. Последние 7 лет я не только сам пишу код, но и занимаюсь "выпасом котов". К написанию статьи меня побудила моя любовь к ссылкам на методы и желание поделится "кастомными" способами их использовать вне базовых классов java. Если вы задумывались об усилении гибкости приложения и преимуществах AOP, но вас отпугивают его недостатки, в статье предлагаю рассмотреть вариант получения тех же (ну или почти тех же преимуществ), но без раздражающих (по крайней мере меня) недостатков. Для использования идей из статьи не требуется каких-то особых магических знаний, достаточно знать, что такое функциональный интерфейс.
Читать: https://habr.com/ru/companies/rostelecom/articles/896906/?utm_campaign=896906
@a_cup_of_java | Другие наши каналы
Всем привет! Меня зовут Макс, и уже 14 лет как я вошел в ИТ и пока не планирую отсюда выходить. Последние 7 лет я не только сам пишу код, но и занимаюсь "выпасом котов". К написанию статьи меня побудила моя любовь к ссылкам на методы и желание поделится "кастомными" способами их использовать вне базовых классов java. Если вы задумывались об усилении гибкости приложения и преимуществах AOP, но вас отпугивают его недостатки, в статье предлагаю рассмотреть вариант получения тех же (ну или почти тех же преимуществ), но без раздражающих (по крайней мере меня) недостатков. Для использования идей из статьи не требуется каких-то особых магических знаний, достаточно знать, что такое функциональный интерфейс.
Читать: https://habr.com/ru/companies/rostelecom/articles/896906/?utm_campaign=896906
@a_cup_of_java | Другие наши каналы
Оптимистичная блокировка в Hibernate если у вас DDD (и не только)
Привет, хабр!
Сегодня я хотел бы рассказать о том, как можно реализовать оптимистичную блокировку в Hibernate если вы используете DDD, а точнее агрегаты. Если кто-то не в курсе что такое оптимистичная блокировка, то советую сначала почитать это.
Проблема:
Думаю, многим известно что, в целом, реализация оптимистичной блокировки в Hibernate проще некуда - всё что нужно сделать это добавить поле version с аннотацией
Читать: https://habr.com/ru/articles/858040/?utm_campaign=858040
@a_cup_of_java | Другие наши каналы
Привет, хабр!
Сегодня я хотел бы рассказать о том, как можно реализовать оптимистичную блокировку в Hibernate если вы используете DDD, а точнее агрегаты. Если кто-то не в курсе что такое оптимистичная блокировка, то советую сначала почитать это.
Проблема:
Думаю, многим известно что, в целом, реализация оптимистичной блокировки в Hibernate проще некуда - всё что нужно сделать это добавить поле version с аннотацией
@Version в вашу энтити. Bот так:Читать: https://habr.com/ru/articles/858040/?utm_campaign=858040
@a_cup_of_java | Другие наши каналы
❤🔥2
Статический анализ кода для Spring: выполните анализ, исправьте критические ошибки и отправляйтесь на пляж
Почему статический анализ кода для Spring так важен? 72% наших пользователей JVM используют Spring в своих приложениях, особенно в таких отраслях, как производство и финансы. Почему? Spring делает программирование на Java и Kotlin более быстрым, простым и безопасным для всех, но при этом возникают уникальные проблемы.
Читать: https://habr.com/ru/articles/867696/?utm_campaign=867696
@a_cup_of_java | Другие наши каналы
Почему статический анализ кода для Spring так важен? 72% наших пользователей JVM используют Spring в своих приложениях, особенно в таких отраслях, как производство и финансы. Почему? Spring делает программирование на Java и Kotlin более быстрым, простым и безопасным для всех, но при этом возникают уникальные проблемы.
Читать: https://habr.com/ru/articles/867696/?utm_campaign=867696
@a_cup_of_java | Другие наши каналы
JavaOne 2025: Программирование без JNI
На конференции JavaOne 2025 Пеер-Оке Минборг из Oracle представил новый API для работы с функциями и памятью на чистой Java. Новая технология, замещающая JNI, решает проблемы производительности и поддержки, упрощая доступ к нативному коду и памяти. Это важный шаг к полной интероперабельности Java. 🔒 Как защитить свою приватность онлайн?
Угрозы конфиденциальности в интернете продолжают расти. Чтобы защититься, рекомендуется использовать VPN, сильные пароли, двуфакторную аутентификацию и следить за безопасностью приложений. Будьте бдительны и ограничьте доступ к личной информации.
Подробности: https://www.infoq.com/news/2025/04/foreign-function-minborg/
#en
@a_cup_of_java | Другие наши каналы
На конференции JavaOne 2025 Пеер-Оке Минборг из Oracle представил новый API для работы с функциями и памятью на чистой Java. Новая технология, замещающая JNI, решает проблемы производительности и поддержки, упрощая доступ к нативному коду и памяти. Это важный шаг к полной интероперабельности Java. 🔒 Как защитить свою приватность онлайн?
Угрозы конфиденциальности в интернете продолжают расти. Чтобы защититься, рекомендуется использовать VPN, сильные пароли, двуфакторную аутентификацию и следить за безопасностью приложений. Будьте бдительны и ограничьте доступ к личной информации.
Подробности: https://www.infoq.com/news/2025/04/foreign-function-minborg/
#en
@a_cup_of_java | Другие наши каналы