Шатаем ActiveMQ
Пожалуйста обновите ActiveMQ после прочтения этой статьи. Рассказ об одной известной атаке на инфраструктуру крупных ИТ-проектов — брокер сообщений Apache ActiveMQ.
Читать: https://habr.com/ru/articles/892450/?utm_campaign=892450
@a_cup_of_java | Другие наши каналы
Пожалуйста обновите ActiveMQ после прочтения этой статьи. Рассказ об одной известной атаке на инфраструктуру крупных ИТ-проектов — брокер сообщений Apache ActiveMQ.
Читать: https://habr.com/ru/articles/892450/?utm_campaign=892450
@a_cup_of_java | Другие наши каналы
❤2
Регистрация по взрослому: @AuthenticationalPrinciple, JWT, UserDetails
Казалось бы, что может быть проще создания регистрации и логика: взял пароль, взял username, сохранил в базу, когда пользователь заходит, просто сравниваешь значения с теми, что лежат в базе.
А потом кто-то взламывает доступ к твоей базе и продает строчку за рубль. А если у тебя еще и приложение, где у пользователя есть информация о банковском счете, а у тебя пароли лежат незашифрованные в базе.
Сегодня я покажу как решить эту проблему.
Читать: https://habr.com/ru/articles/892480/?utm_campaign=892480
@a_cup_of_java | Другие наши каналы
Казалось бы, что может быть проще создания регистрации и логика: взял пароль, взял username, сохранил в базу, когда пользователь заходит, просто сравниваешь значения с теми, что лежат в базе.
А потом кто-то взламывает доступ к твоей базе и продает строчку за рубль. А если у тебя еще и приложение, где у пользователя есть информация о банковском счете, а у тебя пароли лежат незашифрованные в базе.
Сегодня я покажу как решить эту проблему.
Читать: https://habr.com/ru/articles/892480/?utm_campaign=892480
@a_cup_of_java | Другие наши каналы
Неблокирующий вызов внешнего сервиса в процессе
Довольно часто из процесса приходится обращаться по API к различным внешним сервисам. По сути, это стандартный сценарий оркестрации систем или даже микросервисов (пардон за модное слово). На BPMN диаграмме это выглядит просто и логично – постучались куда-то по API, получили ответ и перешли к следующей задаче. Для моделей аналитического уровня это нормально.
Однако, переходя к исполняемой модели, надо учитывать, что внешний сервис может быть недоступен или просто отвечает очень небыстро. Что происходит с процессом в это время?
Читать: https://habr.com/ru/companies/haulmont/articles/892644/?utm_campaign=892644
@a_cup_of_java | Другие наши каналы
Довольно часто из процесса приходится обращаться по API к различным внешним сервисам. По сути, это стандартный сценарий оркестрации систем или даже микросервисов (пардон за модное слово). На BPMN диаграмме это выглядит просто и логично – постучались куда-то по API, получили ответ и перешли к следующей задаче. Для моделей аналитического уровня это нормально.
Однако, переходя к исполняемой модели, надо учитывать, что внешний сервис может быть недоступен или просто отвечает очень небыстро. Что происходит с процессом в это время?
Читать: https://habr.com/ru/companies/haulmont/articles/892644/?utm_campaign=892644
@a_cup_of_java | Другие наши каналы
🫡1
Hexagonal Architecture: Почему старая добрая многослойка больше не работает?
Что такое Hexagonal Architecture. Показываем основные возможности применения гексагональной архитектуры в программировании. Рассматриваем пошаговую инструкцию и основные нюансы
Читать: «Hexagonal Architecture: Почему старая добрая многослойка больше не работает?»
@a_cup_of_java | Другие наши каналы
Что такое Hexagonal Architecture. Показываем основные возможности применения гексагональной архитектуры в программировании. Рассматриваем пошаговую инструкцию и основные нюансы
Читать: «Hexagonal Architecture: Почему старая добрая многослойка больше не работает?»
@a_cup_of_java | Другие наши каналы
Эффективный подход к тестированию веб-контроллеров в Spring Boot приложениях
Команда Spring АйО перевела статью о том, как правильно подходить к тестированию веб-контроллеров в Spring Boot приложениях, чтобы не делать лишнюю работу, но и не упускать важных аспектов процесса тестирования.
Читать: https://habr.com/ru/companies/spring_aio/articles/892194/?utm_campaign=892194
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью о том, как правильно подходить к тестированию веб-контроллеров в Spring Boot приложениях, чтобы не делать лишнюю работу, но и не упускать важных аспектов процесса тестирования.
Читать: https://habr.com/ru/companies/spring_aio/articles/892194/?utm_campaign=892194
@a_cup_of_java | Другие наши каналы
На страже производительности Spring Boot приложений: Профилирование и оптимизация
Spring Boot широко используется для создания масштабируемых и эффективных Java‑приложений. Однако по мере усложнения или масштабирования вашего приложения могут начать проявляться узкие места производительности, что приводит к замедлению времени отклика и увеличению потребления ресурсов. Выявление и устранение этих узких мест является важнейшей составляющей процесса оптимизации производительности вашего приложения, особенно в производственных средах.
В этой статье мы подробно рассмотрим, как можно оптимизировать производительность Spring Boot приложений, используя базовые методы профилирования и тюнинга. Особое внимание будет уделено таким аспектам, как профилирование процессора и памяти, оптимизация сборки мусора и тюнинг виртуальной машины Java (JVM).
Читать: https://habr.com/ru/companies/otus/articles/892716/?utm_campaign=892716
@a_cup_of_java | Другие наши каналы
Spring Boot широко используется для создания масштабируемых и эффективных Java‑приложений. Однако по мере усложнения или масштабирования вашего приложения могут начать проявляться узкие места производительности, что приводит к замедлению времени отклика и увеличению потребления ресурсов. Выявление и устранение этих узких мест является важнейшей составляющей процесса оптимизации производительности вашего приложения, особенно в производственных средах.
В этой статье мы подробно рассмотрим, как можно оптимизировать производительность Spring Boot приложений, используя базовые методы профилирования и тюнинга. Особое внимание будет уделено таким аспектам, как профилирование процессора и памяти, оптимизация сборки мусора и тюнинг виртуальной машины Java (JVM).
Читать: https://habr.com/ru/companies/otus/articles/892716/?utm_campaign=892716
@a_cup_of_java | Другие наши каналы
В поисках идеального Database-клиента для IDE: Amplicode выбирает DBeaver
Один из частых вопросов, которые мы слышим от наших пользователей, связан с заменой встроенного инструмента для работы с БД, доступного ранее в IntelliJ IDEA Ultimate. В связи с тем, что DataGrip больше не доступен (а именно так называлась эта функциональность), многим разработчикам приходится искать альтернативу инструменту.
Нас эта проблема волнует не только как разработчиков Amplicode, но и как участников проекта OpenIDE. Мы считаем очень важным предоставить российским разработчикам максимально удобное и мощное решение.
Читать: https://habr.com/ru/companies/haulmont/articles/892744/?utm_campaign=892744
@a_cup_of_java | Другие наши каналы
Один из частых вопросов, которые мы слышим от наших пользователей, связан с заменой встроенного инструмента для работы с БД, доступного ранее в IntelliJ IDEA Ultimate. В связи с тем, что DataGrip больше не доступен (а именно так называлась эта функциональность), многим разработчикам приходится искать альтернативу инструменту.
Нас эта проблема волнует не только как разработчиков Amplicode, но и как участников проекта OpenIDE. Мы считаем очень важным предоставить российским разработчикам максимально удобное и мощное решение.
Читать: https://habr.com/ru/companies/haulmont/articles/892744/?utm_campaign=892744
@a_cup_of_java | Другие наши каналы
🤨3👍2
Генерация случайных чисел
Картинка Benzoix, Freepik
Зачем вообще нужны случайные числа? Дело в том, что случайные числа не представляют собой оторванную от жизни абстракцию, а широко применяются во множестве областей, начиная от научных исследований и заканчивая технологиями, окружающими нас.
Рассмотрим наиболее известные применения случайных чисел и способы их получения как программным способом, так и комбинированным (программно-физическим).
Читать: https://habr.com/ru/companies/ruvds/articles/891292/?utm_campaign=891292
@a_cup_of_java | Другие наши каналы
Картинка Benzoix, Freepik
Зачем вообще нужны случайные числа? Дело в том, что случайные числа не представляют собой оторванную от жизни абстракцию, а широко применяются во множестве областей, начиная от научных исследований и заканчивая технологиями, окружающими нас.
Рассмотрим наиболее известные применения случайных чисел и способы их получения как программным способом, так и комбинированным (программно-физическим).
Читать: https://habr.com/ru/companies/ruvds/articles/891292/?utm_campaign=891292
@a_cup_of_java | Другие наши каналы
JavaOne 2025: Новое из мира Java
Первый день JavaOne 2025 открылся в Калифорнии с выпуском JDK 24. На ключевой презентации обсуждалось развитие Java и роль Oracle в ее сохранении и инновациях. Участники узнали решения 11 проблем разработчиков, а также об анонсе нового образовательного ресурса Learn.java.
Подробности: https://www.infoq.com/news/2025/03/day-one-java-one-2025/
#en
@a_cup_of_java | Другие наши каналы
Первый день JavaOne 2025 открылся в Калифорнии с выпуском JDK 24. На ключевой презентации обсуждалось развитие Java и роль Oracle в ее сохранении и инновациях. Участники узнали решения 11 проблем разработчиков, а также об анонсе нового образовательного ресурса Learn.java.
Подробности: https://www.infoq.com/news/2025/03/day-one-java-one-2025/
#en
@a_cup_of_java | Другие наши каналы
Ученые из Гарварда оценили все open-source проекты в $8,8 трлн
Гарвард оценил ценность open-source в $8,8 трлн: 96% IT-продуктов используют свободный код, но создают его лишь 5% разработчиков
Читать: «Ученые из Гарварда оценили все open-source проекты в $8,8 трлн»
@a_cup_of_java | Другие наши каналы
Гарвард оценил ценность open-source в $8,8 трлн: 96% IT-продуктов используют свободный код, но создают его лишь 5% разработчиков
Читать: «Ученые из Гарварда оценили все open-source проекты в $8,8 трлн»
@a_cup_of_java | Другие наши каналы
Концерт для Java с ИИ — разработка готовых к продакшен LLM приложений (часть 2)
Команда Spring АйО перевела и адаптировала доклад Томаса Витале “Concerto for Java and AI — Building Production-Ready LLM Applications”, в котором рассказывается по шагам, как усовершенствовать интерфейс приложения с помощью больших языковых моделей (LLM). В качестве примера автор доклада на глазах слушателей разрабатывает приложение-ассистент для композитора, пишущего музыку для фильмов.
В первой части рассказывалось о том, какие подходы автор доклада применил к стоящей перед ним проблеме. Также было показано начало работы над усовершенствованием интерфейса программы-помощника с использованием ИИ. Во второй части будет продолжен рассказ о том, как еще больше улучшить программу. Но сначала поговорим о безопасности.
Читать: https://habr.com/ru/companies/spring_aio/articles/893052/?utm_campaign=893052
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела и адаптировала доклад Томаса Витале “Concerto for Java and AI — Building Production-Ready LLM Applications”, в котором рассказывается по шагам, как усовершенствовать интерфейс приложения с помощью больших языковых моделей (LLM). В качестве примера автор доклада на глазах слушателей разрабатывает приложение-ассистент для композитора, пишущего музыку для фильмов.
В первой части рассказывалось о том, какие подходы автор доклада применил к стоящей перед ним проблеме. Также было показано начало работы над усовершенствованием интерфейса программы-помощника с использованием ИИ. Во второй части будет продолжен рассказ о том, как еще больше улучшить программу. Но сначала поговорим о безопасности.
Читать: https://habr.com/ru/companies/spring_aio/articles/893052/?utm_campaign=893052
@a_cup_of_java | Другие наши каналы
Что такое хэш-таблицы и как их использовать
Что такое хэш-таблицы. Показываем основные преимущества хэш-таблиц в программировании. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger
Читать: «Что такое хэш-таблицы и как их использовать»
@a_cup_of_java | Другие наши каналы
Что такое хэш-таблицы. Показываем основные преимущества хэш-таблиц в программировании. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger
Читать: «Что такое хэш-таблицы и как их использовать»
@a_cup_of_java | Другие наши каналы
Разработка Java-проекта с Jmix AI Assistant
Эта заметка инспирирована статей на Хабре Разработка Java-проекта с ChatGPT-4: от идеи до реализации [1]. После ее прочтения автор начал экспериментировать в разработке ПО с различными AI ассистентами.
Увидев статью блога Jmix AI Assistant — ваш помощник в освоении Jmix, решил реализовать с помощью Jmix AI Assistant приложение аналогичное приведенному в статье [1].
Главное отличие от указанной статьи в том, что вся разработка будет вестись с помощью одного инструмента Jmix AI Assistant без использования сторонних генераторов кода.
Читать: https://habr.com/ru/articles/891166/?utm_campaign=891166
@a_cup_of_java | Другие наши каналы
Эта заметка инспирирована статей на Хабре Разработка Java-проекта с ChatGPT-4: от идеи до реализации [1]. После ее прочтения автор начал экспериментировать в разработке ПО с различными AI ассистентами.
Увидев статью блога Jmix AI Assistant — ваш помощник в освоении Jmix, решил реализовать с помощью Jmix AI Assistant приложение аналогичное приведенному в статье [1].
Главное отличие от указанной статьи в том, что вся разработка будет вестись с помощью одного инструмента Jmix AI Assistant без использования сторонних генераторов кода.
Читать: https://habr.com/ru/articles/891166/?utm_campaign=891166
@a_cup_of_java | Другие наши каналы
Курсы по чат-ботам: лучшее онлайн-обучение для специалистов по разработке чат-ботов
Самые лучшие курсы по чат-ботами. В предложенной подборке актуальные варианты обучения от проверенных школ, а так же рейтинги и цены на курсы по разработке чат-ботов
Читать: «Курсы по чат-ботам: лучшее онлайн-обучение для специалистов по разработке чат-ботов»
@a_cup_of_java | Другие наши каналы
Самые лучшие курсы по чат-ботами. В предложенной подборке актуальные варианты обучения от проверенных школ, а так же рейтинги и цены на курсы по разработке чат-ботов
Читать: «Курсы по чат-ботам: лучшее онлайн-обучение для специалистов по разработке чат-ботов»
@a_cup_of_java | Другие наши каналы
Понимание различий: наблюдаемость против мониторинга против APM против профилирования
В современном мире облачных технологий поддержание оптимальной производительности приложений требует использования различных взаимодополняющих подходов. Хотя эти инструменты имеют схожие функции, они выполняют разные задачи в управлении производительностью.
Читать: https://habr.com/ru/articles/893554/?utm_campaign=893554
@a_cup_of_java | Другие наши каналы
В современном мире облачных технологий поддержание оптимальной производительности приложений требует использования различных взаимодополняющих подходов. Хотя эти инструменты имеют схожие функции, они выполняют разные задачи в управлении производительностью.
Читать: https://habr.com/ru/articles/893554/?utm_campaign=893554
@a_cup_of_java | Другие наши каналы
Allurium — java framework для автотестов. Мультиязычные, близкие к bdd репорты, без bdd структуры
В этой статье хочу поделиться инструментом, который я понемногу разрабатывал и улучшал при наличии свободного времени. Применяя для упрощения своих задач, над которыми я работал в разных компаниях за это время.
Работа в автоматизации тестирования стала моей оффициальной профессией несколько лет назад. За это время мне довелось позаниматься очень широким спектром задач, в зависимости от компаний, где я работал. Начиная с тестирования пользовательских интерфейсов различных сайтов, web и мобильных приложений, обязанности заводили меня глубоко в тестирование сложных API сервисов и даже автоматизацию десктопных программ.
Первые годы я плотно занимался тестированием Web приложений на Java, хотя начинал не с неё. Разумеется, перепробовав много подходов, я нашёл для себя любимый stack, который применял при наличии свободы выбора. Для меня это сложилось в TestNg + Selenium + Allure. Естественно, мне приходилось работать со знаменитым Cucumber, а потом и вообще с чудовищьным (на мой взгляд) Serenity и ещё многими другими решениями, включая кастомные разработки разных людей.
Моё расположение никогда не лежало в сторону BDD, так как чаще всего я сам читал отчёты и проверял тесты, и в 100% случаев сам составлял сценарии с Gherkin (иногда по предоставленным сценариям, чаще нет). Так называемое удобство, дающее BDD пользователю, сводилось к минимуму, а вот взамен требовало многое — небоскрёбы из обёрток классов, сложности с наследованием, необходимость создавать кучу дубликатов мизерных действий, абсолютное неудобство передачи данных между шагами и процессами и прочие трудности.
Читать: https://habr.com/ru/articles/893566/?utm_campaign=893566
@a_cup_of_java | Другие наши каналы
В этой статье хочу поделиться инструментом, который я понемногу разрабатывал и улучшал при наличии свободного времени. Применяя для упрощения своих задач, над которыми я работал в разных компаниях за это время.
Работа в автоматизации тестирования стала моей оффициальной профессией несколько лет назад. За это время мне довелось позаниматься очень широким спектром задач, в зависимости от компаний, где я работал. Начиная с тестирования пользовательских интерфейсов различных сайтов, web и мобильных приложений, обязанности заводили меня глубоко в тестирование сложных API сервисов и даже автоматизацию десктопных программ.
Первые годы я плотно занимался тестированием Web приложений на Java, хотя начинал не с неё. Разумеется, перепробовав много подходов, я нашёл для себя любимый stack, который применял при наличии свободы выбора. Для меня это сложилось в TestNg + Selenium + Allure. Естественно, мне приходилось работать со знаменитым Cucumber, а потом и вообще с чудовищьным (на мой взгляд) Serenity и ещё многими другими решениями, включая кастомные разработки разных людей.
Моё расположение никогда не лежало в сторону BDD, так как чаще всего я сам читал отчёты и проверял тесты, и в 100% случаев сам составлял сценарии с Gherkin (иногда по предоставленным сценариям, чаще нет). Так называемое удобство, дающее BDD пользователю, сводилось к минимуму, а вот взамен требовало многое — небоскрёбы из обёрток классов, сложности с наследованием, необходимость создавать кучу дубликатов мизерных действий, абсолютное неудобство передачи данных между шагами и процессами и прочие трудности.
Читать: https://habr.com/ru/articles/893566/?utm_campaign=893566
@a_cup_of_java | Другие наши каналы
👍3❤2
Жизненный цикл бина в Spring
Разобраться в жизненном цикле бина в Spring бывает непросто: информация разбросана, а объяснения часто сложные и перегруженные деталями. Эта статья — простой и понятный "чек-лист", где все этапы разобраны на живых примерах
Читать: https://habr.com/ru/articles/893614/?utm_campaign=893614
@a_cup_of_java | Другие наши каналы
Разобраться в жизненном цикле бина в Spring бывает непросто: информация разбросана, а объяснения часто сложные и перегруженные деталями. Эта статья — простой и понятный "чек-лист", где все этапы разобраны на живых примерах
Читать: https://habr.com/ru/articles/893614/?utm_campaign=893614
@a_cup_of_java | Другие наши каналы
👍9
Новое в Spring: обновления и релизы
Весной 2025 года в экосистеме Spring произошло множество значимых обновлений. Обновления коснулись таких компонентов, как Spring Boot, Security, Auth Server, GraphQL и многих других. Среди новшеств — улучшения в поддержке OpenTelemetry и новые свойства для Spring Batch. Эти обновления делают инструменты ещё более мощными и удобными для разработчиков.
Подробности: https://www.infoq.com/news/2025/03/spring-news-roundup-mar17-2025/
#en
@a_cup_of_java | Другие наши каналы
Весной 2025 года в экосистеме Spring произошло множество значимых обновлений. Обновления коснулись таких компонентов, как Spring Boot, Security, Auth Server, GraphQL и многих других. Среди новшеств — улучшения в поддержке OpenTelemetry и новые свойства для Spring Batch. Эти обновления делают инструменты ещё более мощными и удобными для разработчиков.
Подробности: https://www.infoq.com/news/2025/03/spring-news-roundup-mar17-2025/
#en
@a_cup_of_java | Другие наши каналы
❤3
Загляните в будущее Java: Quarkus и JBang
В мире Java новый подход Quarkus обеспечивает высокий уровень производительности, упрощая жизнь разработчиков. Платформа JBang предлагает лёгкий способ работы без сложных настроек, помогая как новичкам, так и профессионалам. Инновации делают Java-девелопмент проще и быстрее!
Подробности: https://www.infoq.com/podcasts/simplify-system-learning-ecosystems/
#en
@a_cup_of_java | Другие наши каналы
В мире Java новый подход Quarkus обеспечивает высокий уровень производительности, упрощая жизнь разработчиков. Платформа JBang предлагает лёгкий способ работы без сложных настроек, помогая как новичкам, так и профессионалам. Инновации делают Java-девелопмент проще и быстрее!
Подробности: https://www.infoq.com/podcasts/simplify-system-learning-ecosystems/
#en
@a_cup_of_java | Другие наши каналы
Новости Java: Выпуск JDK 24 и многое другое
Oracle представила JDK 24 с 24 JEPами, обновлён GraalVM для JDK 24 с новыми функциями GNN и SkipFlow. Apache Kafka 4.0 и обновление Spring прошли с учётом исправлений CVE. Также состоится JavaOne 2025. Следите за обновлениями, чтобы узнать больше!
Подробности: https://www.infoq.com/news/2025/03/java-news-roundup-mar17-2025/
#en
@a_cup_of_java | Другие наши каналы
Oracle представила JDK 24 с 24 JEPами, обновлён GraalVM для JDK 24 с новыми функциями GNN и SkipFlow. Apache Kafka 4.0 и обновление Spring прошли с учётом исправлений CVE. Также состоится JavaOne 2025. Следите за обновлениями, чтобы узнать больше!
Подробности: https://www.infoq.com/news/2025/03/java-news-roundup-mar17-2025/
#en
@a_cup_of_java | Другие наши каналы
RabbitMQ и Kotlin: делаем свою event-driven Jira на Spring
В этой статье мы рассмотрим, как можно в один клик развернуть RabbitMQ в облаке. Также напишем простое приложение на Spring Boot и Kotlin, которое будет взаимодействовать с этим брокером сообщений.
Читать: https://habr.com/ru/companies/dockhost/articles/893572/?utm_campaign=893572
@a_cup_of_java | Другие наши каналы
В этой статье мы рассмотрим, как можно в один клик развернуть RabbitMQ в облаке. Также напишем простое приложение на Spring Boot и Kotlin, которое будет взаимодействовать с этим брокером сообщений.
Читать: https://habr.com/ru/companies/dockhost/articles/893572/?utm_campaign=893572
@a_cup_of_java | Другие наши каналы
❤3