Чашечка Java
8.57K subscribers
3.88K photos
13 videos
56 files
6.33K links
Лучшие материалы по Java на русском и английском

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Download Telegram
Новый релиз Java 24: что нового

Oracle представила Java 24, не являющуюся LTS-версией. Главные новинки: экспериментальные функции Generational Shenandoah и Compact Object Headers. Java 24 ускоряет запуск приложений и расширяет возможности API Stream. Подробности о новых функциях и ожиданиях от JDK 25 читайте далее.

Подробности: https://www.infoq.com/news/2025/03/java24-released/

#en

@a_cup_of_java | Другие наши каналы
👍4
Функциональное программирование в Java

Привет, Хабр!

В этой статье я опишу функциональное программирование и расскажу, как оно реализовано в Java. Помимо вопроса «что это?», я постараюсь ответить на вопросы «зачем?», «когда?» и «как?» это используется.


Читать: https://habr.com/ru/companies/reksoft/articles/892242/?utm_campaign=892242

@a_cup_of_java | Другие наши каналы
👍4
Forwarded from Типичный программист
Этот текст видят только те, кто хотел писать про IT, но всегда откладывал

Редакция Tproger запустила свой канал для авторов, где учат писать лучше. Если давно хотели попробовать себя в IT-журналистике — самое время начать.
Почему As Code — это не просто тренд, а новая реальность разработки

В статье Максим Морев расскажет, что такое подход As Code, как он развивался и почему он нужен компаниям.

Читать: «Почему As Code — это не просто тренд, а новая реальность разработки»

@a_cup_of_java | Другие наши каналы
👍1
Шатаем ActiveMQ

Пожалуйста обновите 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 | Другие наши каналы
Неблокирующий вызов внешнего сервиса в процессе

Довольно часто из процесса приходится обращаться по 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 | Другие наши каналы
Эффективный подход к тестированию веб-контроллеров в Spring Boot приложениях

Команда 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 | Другие наши каналы
В поисках идеального 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 | Другие наши каналы
🤨3👍2
Генерация случайных чисел


Картинка 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 | Другие наши каналы
Ученые из Гарварда оценили все open-source проекты в $8,8 трлн

Гарвард оценил ценность 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 | Другие наши каналы
Что такое хэш-таблицы и как их использовать

Что такое хэш-таблицы. Показываем основные преимущества хэш-таблиц в программировании. Рассматриваем пошаговую инструкцию и основные нюансы 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 | Другие наши каналы
Курсы по чат-ботам: лучшее онлайн-обучение для специалистов по разработке чат-ботов

Самые лучшие курсы по чат-ботами. В предложенной подборке актуальные варианты обучения от проверенных школ, а так же рейтинги и цены на курсы по разработке чат-ботов

Читать: «Курсы по чат-ботам: лучшее онлайн-обучение для специалистов по разработке чат-ботов»

@a_cup_of_java | Другие наши каналы
Понимание различий: наблюдаемость против мониторинга против APM против профилирования

​В современном мире облачных технологий поддержание оптимальной производительности приложений требует использования различных взаимодополняющих подходов. Хотя эти инструменты имеют схожие функции, они выполняют разные задачи в управлении производительностью.​


Читать: 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 | Другие наши каналы
👍32
Жизненный цикл бина в Spring

Разобраться в жизненном цикле бина в Spring бывает непросто: информация разбросана, а объяснения часто сложные и перегруженные деталями. Эта статья — простой и понятный "чек-лист", где все этапы разобраны на живых примерах


Читать: https://habr.com/ru/articles/893614/?utm_campaign=893614

@a_cup_of_java | Другие наши каналы
👍9