Чашечка 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
👨‍💻 Новые релизы 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 | Другие наши каналы
Нужен ли сеньору второй язык программирования? Опытом поделился разработчик с 18 годами стажа

Нужен ли сеньору второй язык программирования? Опыт и выводы разработчика с 18 годами стажа — когда и зачем изучать новые языки

Читать: «Нужен ли сеньору второй язык программирования? Опытом поделился разработчик с 18 годами стажа»

@a_cup_of_java | Другие наши каналы
2💯2
Пример забытого «наивного» алгоритма

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

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

Не так давно попался один тикет с жалобой на зависание in-house приложения которое обрабатывает adobe pdf документы (печатает в png изображение для web клиентов).

Приложение использует библиотеку apache pdfbox.

Запустил тест с проблемным pdf документом в котором использовались формы – компьютер “пошел на взлет”. Похоже на длинный цикл, хорошо пошел.

Жду пару минут, стало интересно.

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


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

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