Чашечка 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
Принципы SOLID и основы построения коммерческой организации

Привет, дорогой друг!

Сегодня я тебе объясню принципы SOLID максимально понятным способом.

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

Представь себе, что ты решил заняться бизнесом.

Первым делом ты организуешь небольшую торговую компанию. Ты только начинаешь свой путь в бизнесе, и поэтому всё делаешь сам. И закупаешь товар, и развозишь его по точкам, и ведёшь учёт, и ремонтируешь грузовую газель.

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

Людей в твоей команде немного, все друг друга знают, вы как одна большая дружная семья. И нет-нет, но периодически, кто-нибудь из сотрудников пытается взять себе дополнительные полномочия из чужой области. То ремонтник порывается съездить на рынок и закупить товар (ему же по дороге), то продажник научить ремонтника как правильно чинить технику (он всё детство провёл в гараже, где они с друзьями чинили папину волгу), то бухгалтерша Галина Петровна решает всех построить и взять на себя часть руководящих функций.

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

Но ты стоишь на страже интересов бизнеса! Железной рукой ты пресекаешь безобразия и вводишь жёсткий принцип – каждый сотрудник отвечает только за своё поле деятельности, у каждого своя ответственность, и никто в чужой огород лазать не смей. Закупщик – только закупает. Продажник – только продаёт. Каждый сотрудник должен иметь только одну зону ответственности.


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

@a_cup_of_java | Другие наши каналы
Grokаем виджеты: пишем код с Grok 3 от Маска

Тестируем возможности нейросети Grok 3 от Илона Маска для кодинга: генерируем веб-виджеты, сравниваем с ChatGPT и DeepSeek, разбираем плюсы и минусы.

Читать: «Grokаем виджеты: пишем код с Grok 3 от Маска»

@a_cup_of_java | Другие наши каналы
Presentation: A Walk Along the Complexity-performance Curve

Richard Startin explores the relationship between complexity and performance through the lens of recent improvements to the Java String class, visiting continuous profiling and some assembly code.
By Richard Startin

Read: https://www.infoq.com/presentations/java-string-performance/

@a_cup_of_java | Другие наши каналы
Парсим сайт для получения УДК иерархии

Предыстория:

У меня на домашнем ПК скопилось некоторое количество книг в электронном формате. Это в основной массе техническая литература. И мне хотелось всё это систематизировать. Придумывать не хочется, когда в книгах есть УДК, ББК классификаторы.


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

@a_cup_of_java | Другие наши каналы
Null-safety в Spring приложении с JSpecify и NullAway

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


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

@a_cup_of_java | Другие наши каналы
Заглянули в хрустальный шар, а там ваше будущее показывают

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

Реклама
Концерт для Java с ИИ — разработка готовых к продакшен LLM приложений

Команда Spring АйО перевела и адаптировала доклад Томаса Витале “Concerto for Java and AI — Building Production-Ready LLM Applications”, в котором рассказывается по шагам, как усовершенствовать интерфейс приложения с помощью больших языковых моделей (LLM). В качестве примера автор доклада на глазах слушателей разрабатывает приложение-ассистент для композитора, пишущего музыку для фильмов.

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


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

@a_cup_of_java | Другие наши каналы
Разница между @Component, @Controller, @Service и @Repository в Spring

Статья на Java67 объясняет различия между аннотациями Spring. @Component используется для обобщённых классов, @Controller — для контроллеров в MVC, @Service — для бизнес-логики, а @Repository — для доступа к данным. Каждая аннотация помогает Spring управлять классами в определённом контексте. Лучшие онлайн-курсы по программированию: от Python до DevOps

Ищете качественные курсы для прокачки навыков в IT? Эта статья предлагает обширный список курсов, включая дизайн систем, Spring, Python и DevOps. Независимо от уровня подготовки, найдется подходящий для вас курс. Ознакомьтесь с полным списком и начните обучение!

Подробности: http://www.java67.com/2022/06/difference-between-component-service-repository-in-spring.html

#en

@a_cup_of_java | Другие наши каналы
Простой редактор текста by java through design

Всем привет. Для того чтобы писать код нужен удобный инструмент, кто-то пользуется IDE, кто-то редакторами текста Emacs, VIM. Зачастую, чтобы программисту было удобно, разработчику надо соблюсти много нюансов, тоесть в одном случае есть ускорение разработки, но решение тяжеловесное, в другом случае, разработчик, чтобы пользоваться редактором начинает писать код, чтобы писать код. Конечно это крайности, и проще поставить IDE/VSCode/etc... , но что если можно найти эту золотую середину!?

Неоднократно автор пытался делать текстовый редактор, но что-то было всё не то, пока не вспомнил, что есть старый добрый SWING, и java by design иногда круто и интересно.

В этой статье хочу показать как получилось минимальными усилиями сделать то, что на С или С++ потребует больших знаний без QT/GTK/etc...


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

@a_cup_of_java | Другие наши каналы
Как исправить java.lang.NoClassDefFoundError в Spring Boot

Столкнулись с ошибкой NoClassDefFoundError при запуске Spring Boot приложения? Причиной может быть несовместимая версия библиотеки Spring в вашем проекте. Решение — обновить версию зависимости, например, spring-web, на более актуальную. Избавившись от конфликта версий, ошибка пропадает. Избегаем распространённых ошибок с зависимостями в Spring Boot

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

Подробности: http://www.java67.com/2018/05/how-to-javalangnoclassdeffounderror-Spring-Boot-SmartInitializingBean.html

#en

@a_cup_of_java | Другие наши каналы
Эпоха TypeScript: почему JavaScript без строгой типизации умирает? Или нет?

Представьте: вы запускаете новый функционал на продакшен, всё кажется отлично — но через час приходит сообщение от коллег: «Всё сломалось». Знакомо? Для JavaScript-разработчиков это обычная ситуация. Вместе разберёмся, почему так происходит и как TypeScript может спасти от бессонных ночей с дебаггером.

Читать: «Эпоха TypeScript: почему JavaScript без строгой типизации умирает? Или нет?»

@a_cup_of_java | Другие наши каналы
👍1
Reverse shell на Java или кошмар сисадмина

По итогам расследований нескольких инцидентов с безопасностью, рассказываю что еще из «зубастого и рогатого» бывает на свете. Еще один повод бросить это ваше ИТ и уйти в монастырь.


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

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

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

Сегодня рассмотрим CRaC — это технология, позволяющая создать контрольную точку работающего Java-приложения, сохранив его полное состояние: память, потоки, системные ресурсы и прочее. Иными словами, вы проводите полную инициализацию приложения один раз, делаете «снимок», а затем при повторном запуске восстанавливаете это состояние, обходя долгую процедуру холодного старта.


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

@a_cup_of_java | Другие наши каналы
👍3
Создаём HTTP-сервер на Java NIO

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

В этой статье создадим HTTP-сервер на чистом Java NIO, без всяких Spring Boot, Jetty и прочих фреймворков. Будем разбираться, как работает неблокирующее I/O, что такое Selector, SocketChannel, и как заставить сервер обрабатывать тысячи запросов одновременно без запуска тысяч потоков.


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

@a_cup_of_java | Другие наши каналы
👍1
Java News Roundup: Jakarta NoSQL 1.0, Spring 7.0-M3, Maven 4.0-RC3, LangChain4j 1.0-beta2

This week's Java roundup for March 10th, 2025 features news highlighting: OpenJDK JEPs targeted and proposed to target for JDK 25; the release of Jakarta NoSQL 1.0; the third milestone release of Spring Framework 7.0; the third release candidate of Maven 4.0; and the second beta release of LangChain4j 1.0.
By Michael Redlich

Read: https://www.infoq.com/news/2025/03/java-news-roundup-mar10-2025/

@a_cup_of_java | Другие наши каналы
👍2
TrueSql – заново учимся ходить в базу данных. Часть 3 – транзакции и соединения

Принято считать, что транзакции, сессии и контекст это что-то сложное. Но в TrueSql работать с транзакциями очень просто и прозрачно, а понятий "сессия" и "контекст" просто не существует. Сегодня рассказываем как работать с транзакциями и соединениями в TrueSql. Быстро объясняем внутреннее устройство.


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

@a_cup_of_java | Другие наши каналы
Идеи ничего не стоят

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


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

@a_cup_of_java | Другие наши каналы
Свежая вакансия в Gehtsoft

Gehtsoft — компания по разработке ПО — ищет Tech Lead Java Developer.

Чем вы будете заниматься:

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

Где: удалённо
Опыт: 4+ лет

Вакансия и как отправить отклик: https://tprg.ru/Fm7Y

#вакансии #работа
Podcast: Building LinkedIn’s Resilient Data Storage: A Deep Dive into Derived Data Storage with Felix GV

In this podcast, Felix GV, Principal Staff Engineer at LinkedIn, discusses how to create and operate planet-scale data storage solutions for derived data. When it’s time to build a new system, how do you decide on the pieces that must be fitted to ensure a resilient operating system?
By Felix GV

Read: https://www.infoq.com/podcasts/building-linkedin-resilient-data-storage/

@a_cup_of_java | Другие наши каналы
👍1
Как читать сообщения, если никто из брокеров не предоставил удобный интерфейс

Пишите вы себе EDA на основе Apache Kafka, и ваши сервисы тщательно логируют все свои действия, процесс отлажен и работает годами. Вдруг один из сервисов отчитался в логах, что отправил событие в брокер, но другой по какой-то его не прочитал. Как понять, кто виноват?

Как правило, брокер сообщений между сервисами – черная коробка, которая работает, что называется «As Is». Разработчики подключают зависимости, вешают аннотации консюмеров и продюсеров, оно заводится и все рады. Но что они там подключили и как это работает никто не видит.

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


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

@a_cup_of_java | Другие наши каналы
Project Leyden Ships Third Option for Faster Application Start with JEP 483 in Java 24

In Java 24, Project Leyden’s JEP 483, "Ahead-of-Time Class Loading & Linking", starts Java applications like Spring PetClinic up to 40% faster without code changes or new application constraints. It needs a training run to build a cache file that ships with the application. With GraalVM Native Image and CRaC, the startup is 95-99% faster but faces more constraints. Leyden plans more improvements.
By Karsten Silz

Read: https://www.infoq.com/news/2025/03/java-24-leyden-ships/

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