Чашечка 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
Избавляемся от Flaky тестов в CI/CD при помощи JMina

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

Спустя некоторое время в CI/CD падает тест. Вы запускаете тесты локально — они проходят успешно. Вы снова запускаете пайплайн в CI/CD — и тесты снова проходят. Однако через какое-то время ситуация повторяется.


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

@a_cup_of_java | Другие наши каналы
👍2
Основные паттерны микросервисной архитектуры: Strangler Fig, API Gateway, Service Mesh и другие

Микросервисная архитектура стала де-факто стандартом для построения современных масштабируемых приложений. Вместо единого монолитного приложения система разбивается на набор мелких независимых сервисов, каждый из которых отвечает за свою четко обозначенную функцию. Такой подход позволяет упрощать разработку и развертывание отдельных компонентов, повышать отказоустойчивость и масштабируемость системы. Однако переход к микросервисам и их эффективное использование сопряжены с рядом сложных задач. Для их решения в практике выработаны архитектурные паттерны – типовые подходы и шаблоны проектирования.

В данной статье мы разберем несколько ключевых паттернов, связанных с микросервисами. Речь пойдет о паттернах миграции и интеграции (таких как Strangler Fig – «удушающее дерево» и API Gateway), о сетевых и структурных паттернах (Service Mesh, Sidecar), о шаблонах работы с данными (Database per Service, CQRS) и об особом подходе к хранению состояния (Event Sourcing). Для каждого паттерна мы рассмотрим его суть, назначение, примеры использования, а также плюсы и возможные сложности. К некоторым паттернам приведены упрощенные диаграммы и фрагменты кода, чтобы иллюстративно показать, как они работают на практике.


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

@a_cup_of_java | Другие наши каналы
2👍2
👨‍💻 Новые релизы Spring: что нового?

В конце апреля 2025 года в экосистеме Spring вышли релиз-кандидаты множества компонентов, включая Spring Boot, Spring Data, Spring Security и другие. В новых версиях исправлены баги и добавлены улучшения, такие как новые аннотации и поддержка Docker. Полные детали ищите в примечаниях к релизам.

Подробности: https://www.infoq.com/news/2025/04/spring-news-roundup-apr21-2025/

#en

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

Это опенсорс LLM-ка, способная превращать бинарный код программы в читаемый C-код. Сейчас она поддерживает декомпиляцию Linux x86_64 на всех уровнях оптимизации GCC — от O0 до O3.

Проект активно развивается: в будущем планируется поддержка других архитектур и языков. А все материалы и модель — в свободном доступе.

Реально крутой проект, аналогов пока не видел 🔥

#инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
В центре внимания Java: Local Variable Type Inference

Мы (команда Axiom JDK) подготовили перевод статьи про var, или Local Variable Type Inference (LVTI). Из этой статьи вы узнаете как работает var, когда эту фичу лучше использовать в коде, а когда — воздержаться. Всё это с примерами кода и комментариями от нашей команды.

Примечание от команды Axiom JDK: Хотя статья написана в 2019 году, она остаётся актуальной в 2025: var (Local Variable Type Inference) уже давно является частью LTS-релизов и ключевой особенностью современного Java-кода, но по-прежнему вызывает споры и вопросы даже у опытных разработчиков. Это отличный материал от Брайана Гётца — одного из архитекторов Java — с разбором принципов, которые не устарели. С тех пор появилось больше практики, но базовая теория осталась неизменной. Мы публикуем перевод как удобный справочник по механике var, его компромиссам и подводным камням.


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

@a_cup_of_java | Другие наши каналы
👍3
Jqwik: обзор тестирования на основе свойств в UI и API

Привет, Хабр! Меня зовут Денис, я SDET-специалист в компании SimbirSoft. Работая на проектах, я приобрел опыт использования различных инструментов тестирования. Спустя тонны написанных автоматизированных тестов по тест-кейсам и техникам тест-дизайна, хочу рассказать вам о возможности тестирования не конкретных данных, а их свойств. Статья будет полезна всем, кто уже знаком с тестированием на основе примеров и позволит расширить кругозоров в понимании подготовки данных.

В своей статье я описал методы гарантии качества ПО, такие как тестирование на основе примеров и тестирование на основе свойств, а также составил таблицу с описанием параметров их взаимодействия с тестовым оракулом. Рассказал об инструменте тестирования на основе свойств Jqwik для языка Java, привел примеры использования случайного набора данных на UI и API, раскрыл возможности инструмента и потенциал работы с ним в рамках генерации тестов.


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

@a_cup_of_java | Другие наши каналы
👍2
Новости Java: От Gradle 8.14 до завершения поддержки Spring Cloud Data Flow

На прошлой неделе Java сообщество встретило Gradle 8.14 с улучшенной производительностью, возможность использования Java 24 в Open Liberty, релиз-кандидат Hibernate ORM 7.0 и объявление об окончании open-source поддержки Spring Cloud Data Flow. Подробнее на InfoQ.

Подробности: https://www.infoq.com/news/2025/04/java-news-roundup-apr21-2025/

#en

@a_cup_of_java | Другие наши каналы
Как сократить время сборки с помощью кеширования контекста от Spring Test

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


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

@a_cup_of_java | Другие наши каналы
PyCharm стал единым продуктом. Что это означает?

JetBrains объявили о переходе PyCharm к единой модели распространения. С релизом 2025.1 обе редакции — Community и Professional — объединяются в один продукт. Команда Spring АйО не могла пройти мимо данной новости. Теперь при установке вы сразу получаете доступ ко всем Pro-функциям на один месяц. По его истечении можно продолжить использовать базовые возможности бесплатно или приобрести подписку на Pro-версию (что невозможно для пользователей из РФ).


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

@a_cup_of_java | Другие наши каналы
Шардировать или не шардировать

Если ваш сервис рассчитан на миллиарды пользователей, то несомненно возникнет вопрос о масштабировании.

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

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

@a_cup_of_java | Другие наши каналы
Пара советов по покрытию тестами проекта на SpringBoot

Уверен многие сталкивались с ситуацией когда тесты на проекте разрастаются бесконтрольно, проходят долго, а любое изменение в коде приводит в нескольким дням отладки и исправления падающих тестов.

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


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

@a_cup_of_java | Другие наши каналы
Большой гайд по мобильной разработке от Tproger: полезные статьи, практики и советы

Делимся нашими статьями про мобильную разработку: iOS, Android, Flutter, SwiftUI, Jetpack Compose, публикация в сторах и советы по доступности — всё в одном месте.

Читать: «Большой гайд по мобильной разработке от Tproger: полезные статьи, практики и советы»

@a_cup_of_java | Другие наши каналы
Cервисы в Android

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


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

@a_cup_of_java | Другие наши каналы
🟢 Важные темы на QCon London 2025

На третий день QCon London 2025 обсуждались ключевые темы: политика AMQP, где Джон О'Хара рассказал об эволюции стандартов сообщений. Также обсуждались серверные базы данных и симбиоз архитектуры и безопасности, без которого системы теряют устойчивость.

Подробности: https://www.infoq.com/news/2025/05/day-three-qcon-london-2025/

#en

@a_cup_of_java | Другие наши каналы
Как автотесты и GitHub Actions помогают улучшать свои пет-проекты

Привет. Сегодня поговорим о том, как я в последние 2 недели поправил свои пет-проекты, а также исправил серьёзные ошибки благодаря автотестам и налаженному CI/CD через GitHub Actions.


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

@a_cup_of_java | Другие наши каналы
1👍1
Программирование без условных операторов

В программировании на C-подобных языках (и не только) частенько приходится использовать условные операторы, такие как If, else, switch — и особенно часто их используют новички, потому что их понимание и работа достаточно проста (в итоге, могут рождаться, иной раз, поистине монструозные конструкции — грешен, практиковал:-))).

К слову, многие отмечают, что последний оператор switch им приходилось видеть только на разнообразных олимпиадных задачках или школьных уроках, в то время как в реальной работе применяется он достаточно редко (а вы его используете, и насколько часто?).

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


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

@a_cup_of_java | Другие наши каналы
👎5
Как работает React-паттерн «Составной компонент» (compound component) и для чего он нужен

Разбираем типичные проблемы при разработке компонентов. Изучаем, какие архитектурные подходы вложены в паттерн. Реализуем паттерн на примере компонента Аккордеон и смотрим на плюсы и минусы подходов

Читать: «Как работает React-паттерн «Составной компонент» (compound component) и для чего он нужен»

@a_cup_of_java | Другие наши каналы
Java Digest #24

Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске рассказываем о новых JEPs в OpenJDK, которые вошли в статус Candidate. Спойлер Applet API — RIP. В этом месяце вышли сразу IntelliJ IDEA 2025.1 и OpenIDE — эта битва будет легендарной!

Мы добавили краткий обзор JavaOne’25. И, как обычно, собрали полезные статьи: как избавиться от Flaky-тестов с помощью JMina, как ZGC аллоцирует память в хипе. Сделали подборку материалов о паттернах и методологиях разработки и разбавили размышлениями о том, как писать хороший код и оставаться профессионалом.
Читать свежий выпуск

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

@a_cup_of_java | Другие наши каналы
👍3
JDK 25 упрощает Java: методы main теперь могут быть нестатичными, введены компактные исходники и новый класс java.lang.IO для удобного ввода-вывода. Эти нововведения облегчают обучение и создание простых программ, сохраняя совместимость со стандартным инструментарием.

Подробности: https://www.infoq.com/news/2025/05/jdk25-instance-main-methods/

#en

@a_cup_of_java | Другие наши каналы
😱7💯2
Новое в экосистеме Java: четыре ключевых JEP для JDK 25, восьмой релиз Spring AI 1.0.0, обновления Quarkus 3.22.0 и первый кандидат LangChain4j 1.0.0. WildFly вошёл в Commonhaus Foundation, поддерживая развитие открытого ПО. Следите за изменениями!

Подробности: https://www.infoq.com/news/2025/05/java-news-roundup-apr28-2025/

#en

@a_cup_of_java | Другие наши каналы
7 запросов к разработке вызывающих и смех и слезы

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

Итак, начну с собственного реноме. Меня зовут Богдан, я работаю в одном достаточно большом отечественном финтеке вот уже 7-й год и добрую половину из них занимаю позицию Java-лида в одной из интеграционных команд. За такое (относительно) длительное время в энтерпрайзе периодически приходят требования на разработку, от которых хочется или плакать, или смеяться, а то и всё вместе. Происходит это по самым разным причинам, которые мы сегодня касаться не будем. Скажу лишь, что никого не осуждаю, не пытаюсь никого принизить и наверняка сам генерировал нечто схожее, о чем пойдет речь ниже. Также стоит учесть, что мой бэкграунд преимущественно бэкендово-интеграционный, соответственно, и кейсы будут из этой области и контекста. Ну а дальше — по кейсам, по тем 7 кейсам, когда прочитав требования, внутри что-то скукоживается от отвращения либо раздается улыбка во всё лицо — у кого как.

Немного глобального контекста: проект, вокруг которого будут описаны курьезные запросы, — интеграционная шина данных, напичканная самой разной интеграционной логикой, Java-приложение, состоящее из невообразимого количества SOAP/REST-методов, шедуллеров и всяческих очередей.


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

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