Чашечка 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
Автоматизация тестирования, которая не ломается при первом редизайне

Автоматизация тестирования, которая не ломается при первом редизайне

Как мы проектировали, внедряли и поддерживаем живую систему автотестов


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

@a_cup_of_java | Другие наши каналы
Forwarded from Типичный программист
Разбираемся с System Design: всё, что нужно знать в одном репо с наглядными примерами

— Архитектура сервисов: монолит, микросервисы, API-шлюзы, балансировка нагрузки, БД.
— Протоколы: REST, gRPC, WebSockets, проектирование API, оптимизация нагрузки.
— DevOps: CI/CD, мониторинг, Kubernetes, контейнеризация, облака.
— Разбор архитектуры крупных компаний: Netflix, Twitter, Discord, Amazon Prime Video.

Погружаемся в системный дизайн — здесь.

#архитектура
👍43
Как мы перестроили комментарии в ОК: от линейного хаоса к веточной гармонии

Комментарии в соцсетях — это как чипсы: начал читать, остановиться невозможно. Но в ОК до 2024 года они были плоскими — вместо структурированного диалога под постом пользователи видели бесконечную ленту сообщений, где ответы терялись в хронологическом порядке. Представьте: под постом про котиков кто-то спросил про корм, но ответ на вопрос появился в самом низу, через 500 комментариев с обсуждением хвостатых. Найти ответ на вопрос в такой системе, если он вообще существует, — тот ещё квест.

Меня зовут Александр Косницкий. Я разработчик в компании ОК. В этой статье я расскажу, как мы переходили с линейной структуры отображения комментариев к древовидной: с чего начали, с чем сталкивались и что получили в результате.


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

@a_cup_of_java | Другие наши каналы
Context Collapse: как микросервисы могут сойти с ума

Даже самая идеальная микросервисная архитектура может упасть. В статье обсудим зарубежный материал, где автор рассказывает о проблеме Context Collapse.

Читать: «Context Collapse: как микросервисы могут сойти с ума»

@a_cup_of_java | Другие наши каналы
Подводный камень в docker env и java

Столкнулся с небольшим с интересным моментом: внедрение переменных окружения (а ля environment variables) в стандартный микросервис написанный на Java (классика жанра – Spring Boot).
(Тема не сложная)

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

@a_cup_of_java | Другие наши каналы
Создаем Spring Boot Starter для Kafka с Avro: пошаговое руководство

Интеграция Apache Kafka в проекты на Spring Boot часто требует много boilerplate-кода.

В этой статье я делюсь опытом создания кастомного стартера kafka-spring-boot-starter, который упрощает настройку продюсера и консюмера Kafka с поддержкой Avro-сериализации.

Рассказываю, как решал проблемы с тестами (например, auto.offset.reset=latest) и адаптировал стартер для гибкой работы со схемами.

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

Бонус в конце — удобный обзор ключевых настроек Kafka для продюсера и консюмера.


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

@a_cup_of_java | Другие наши каналы
👍4
15 вопросов с собеседований по фронтенду для мидлов

Пов: вы пришли на собес на мидла. В статье — ищите вопросы и пытайтесь ответить сначала сами. Если не получается — ответы и решения тоже есть.

Читать: «15 вопросов с собеседований по фронтенду для мидлов»

@a_cup_of_java | Другие наши каналы
1❤‍🔥1💊1
JavaOne 2025: второй день конференции!

На второй день JavaOne 2025 внимание было сосредоточено на FFM API, виртуальных потоках и развитии Jakarta EE. Обсуждали, как FFM API решает проблемы JNI, использование виртуальных потоков для улучшения микросервисов с Helidon и модернизацию Java с помощью Kubernetes.

Подробности: https://www.infoq.com/news/2025/03/day-two-java-one-2025/

#en

@a_cup_of_java | Другие наши каналы
Сравнение SpringRunner со SpringExtension и @SpringBootTest

Команда Spring АйО перевела статью о том, как и когда использовать SpringRunner, SpringExtension и @SpringBootTest, когда их целесообразно комбинировать и как правильное понимание этих компонентов может помочь сделать тесты проще, быстрее и более узконаправленными.


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

@a_cup_of_java | Другие наши каналы
Инъекция блокнотом или история о том, как мы новые диагностики делали

В этой статье я немного расскажу о том, как в Java осуществляется вызов команд уровня операционной системы. Также поговорим про OS Command и Argument Injections и про то, как мы делали диагностики, которые могут помочь в их обнаружении.


Читать: https://habr.com/ru/companies/pvs-studio/articles/894872/?utm_campaign=894872

@a_cup_of_java | Другие наши каналы
Начало начал

Всем привет! Долгое время был читателем, настало время стать пейсателем :-)

За долгие годы работы в области программирования на java, накопилась кое какая информация, которая, я думаю, поможет новичкам, в продвижении в этом направлении. Буду периодически постить, по мере наличия времени, так что на некоторую нерегулярность постов — не серчайте:-)

Кроме того, хотел сразу открыто сказать, что буду юзать для этого нейросеть, чтобы упростить сбор информации. Но — «под строгим родительским контролем»! :-B
Что впрочем не исключает того, что она (или я) — будем галлюцинировать и всячески бредить :-))).

Тем не менее, думаю, что такого ещё не было и, в целом, это будет интересно — потому что написание каких либо учебников — это всегда довольно тяжкий труд, но, надеюсь, с применением такого подхода, это будет несколько проще.

Ещё хотел сказать что будет и чего не будет: будет — теория, примеры. Не будет — медленной раскачки, плавных переходов между абзацами. То есть: всё сухо, чётко, конкретно. «Пускай безобразно — зато однообразно: всё прямоугольно и параллельно» :-))))

Двигаться в обучении мы будем не фрагментарно, а прямо с самого начала, поступательно, рассматривая весь необходимый круг вопросов.

Если у вас есть что сказать по теме — дать плюшек или кинуть ботинком — всегда велком, т.к. для конечного результата все эти уточнения — только на пользу…

Итак…


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

@a_cup_of_java | Другие наши каналы
Реализация RPC во внутреннем взаимодействии модулей с Spring Boot

В какой-то момент я настолько устал настраивать все эти мелочи для REST-взаимодействия в микросервисах, что реализовал механизм, который сильно упрощает эту работу.

И я уверен, что вам стоит прочитать эту статью, если:

Вы используете Java и Spring Boot в своей работе.

Ваш проект строится на микросервисной архитектуре.

Вас раздражает бесконечное описание REST-контрактов и их поддержку.

А если у вас остались шрамы после попыток внедрения gRPC, то тем более рекомендую дочитать до конца.

В статье мы рассмотрим альтернативный подход к взаимодействию между сервисами — легковесное RPC-решение, которое удобно использовать внутри одного продукта. Оно не претендует на замену публичных API, но значительно упрощает жизнь внутри команды, где "правила игры" можно обсудить за кружкой пива.


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

@a_cup_of_java | Другие наши каналы
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 | Другие наши каналы
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 | Другие наши каналы
Будущее 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 | Другие наши каналы
Тема дня: 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 | Другие наши каналы
Что делать при ошибке "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 | Другие наши каналы
👍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 | Другие наши каналы
Обзор новостей 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 | Другие наши каналы
Что такое 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 | Другие наши каналы
1