Пол — это Java

Пол — это Java

@poletojava

Канал, в котором живет вымышленный на основе реальных событий разработчик Пол, и вместе с ним мы пробуем узнать, что такое Java и не только👨🏻‍💻@polyackov_ot

163подписчиков
Ежемесячно🇷🇺

Похожие каналы

Все →

Последние посты

Java 25 — новая LTS 🎉👋 Привет, Пол (и привет всем)На прошлой неделе вышла Java 25 — свежая LTS-версия.Ждал я, конечно, Вальхалу… но давайте кратко пробежимся по тому, что завезли.✍️ Букавы писать не любим • JEP 512: Compact Source Files and Instance Main Methods — о многословности Java слагаются легенды, именно поэтому об этом JEP’е мне написало особенно много друзей, которые с Java никогда не работали :) На первый взгляд JEP выглядит как пустяк для текущих джавистов, но для привлечения новых пользователей может являться конкурентным преимуществом. • JEP 511: Module Import Declarations — забавный JEP, полезен скорее для прохождения собеседований. В реальной жизни вряд ли пригодится — текущие чекстайлы всё равно запрещают import *.🔧 Полезные улучшения • JEP 513: Flexible Constructor Bodies — наконец можно валидировать параметры до вызова родительского конструктора. • JEP 519: Compact Object Headers — экономия памяти. • JEP 514 и 515: AOT Ergonomics + Method Profiling — оптимизация работы приложений прямо из коробки.📝 ИтогФич, которые можно «потрогать руками», не так уж много. Но меня радует, что Java продолжает развиваться.Мне близок подход, что Java не тащит фичи из других языков «во что бы то ни стало», а тщательно отбирает опыт и адаптирует под свою культуру. А если не получается — спокойно отказывается (как это было с pattern matching).💬 В этом разделе по канону я должен байтить вас на комменты. Но все же хочется не ради статистики услышать реальное мнение: как вы видите эти изменения со своим бэкграундом?

27 сент. 2025 г.322В Telegram

HDD без магии — как «железо» диктует индексы👋 Привет Пол (и привет всем)Сейчас в ридинг-группе по 'кабанчику' мы готовимся к обсуждению третьей главы, посвящённой хранению и извлечению данных.Чтобы глубже понять причины оптимизаций, сделанных в базах данных для операций чтения и записи, я решил чуть приоткрыть «black box» под названием Hard Disk Drive (HDD). А именно -- верхнеуровнево посмотреть, как же устройство жёсткого диска повлияло на оптимизации в алгоритмах баз данных в целом и индексов в частности.Конечно, знание устройства «железа» не является обязательным для качественной работы разработчика, но позволяет лучше усвоить причинно-следственные связи и не воспринимать оптимизации как абстрактную данность.🎥 По теме попалось отличное видео How HDDs Work?, где наглядно объясняется устройство жёсткого диска, как данные хранятся, записываются и читаются, а также откуда берутся те самые 4 KB, которые считаются best practice для хранения фрагментов данных.Если у вас есть общее любопытство к теме, это видео отлично закроет пару «как это устроено» вопросов.Буду рад вашим наводкам на другие полезные материалы в комментариях 😐

26 сент. 2025 г.278В Telegram

🎙️ Ищем людей для короткого исследования!Друзья, всем привет! Мы готовим исследование о том, как опытные программисты обучаются новым навыкам и хотим услышать ваши истории. Интересны все, кто: 1. За последний год проходил платные курсы по программированию или смежным темам (не важно, онлайн/оффлайн, длинные/короткие). 2. Или использовал AI (ChatGPT, Copilot и др.) для учёбы, практики или экспериментов.Если был опыт обеих активностей, то ещё лучше 🙌🗣️ Исследование пройдёт в формате беседы/интервью и займёт примерно 40-45 минут.Если вы были бы рады поучаствовать, напишите, пожалуйста в личку или оставьте сообщение в комментариях. Спасибо!

4 сент. 2025 г.349В Telegram
Пол — это Java — пост в ТГ канале

Сегодня идея меня встретила так

28 мая 2025 г.487В Telegram

Пол (и все-все-все) — это исполнилось 30 лет лучшему языку программирования 📱

23 мая 2025 г.478В Telegram

Уже в это воскресенье в 12:00 по Мск мы проведем первую встречу читального клуба, в котором есть еще пара мест для желающих 📚 Подробнее про формат и тему описали в посте выше ⬆️А записаться можно здесь: https://forms.gle/af4KWj4fQRno6v2L9 До встречи!

19 мая 2025 г.427В Telegram

📚 Время пробовать новые форматы, а потому мы с коллегами анонсируем запуск ридинг-клуба "Пол — это Java" 📚В чем особенность формата, и почему мы ему уже рады? • Каждая встреча клуба будет ознаменована дискуссионной темой из профессиональной жизни разработчика, на которую есть неоднозначные точки зрения в статьях и литературе. Мы заранее подберем наиболее ключевые и интересные работы по теме для ознакомления. Они не будут слишком большими, чтобы все участники успели подготовиться!• Встречи будут в формате живой модерируемой дискуссии, которая поможет систематизировать знания, посмотреть на знакомые вещи под новым углом и обменяться реальным опытом.• Все это делает формат прекрасным как для тех, кто еще ничего знает о теме, так и для погруженных:✔️Начинающие познакомятся с современными теориями подходами, смогут перенять живой опыт более опытных участников.✔️Опытные осмыслят и отрефлексируют знания, обменяются инсайтами с другими профессионалами.☕️Тема первой встречи: Роль архитектора в Agile-командах✔️Мы проанализируем подходы к распределению архитектурных задач в командах✔️Подискутируем, как меняется понимание архитектуры в условиях гибкой разработки✔️Обсудим, нужен ли архитектор в классическом смысле или команды могут справляться сами, полагаясь на собственную экспертизу⏳ Когда: 25 мая (воскресенье)12:00–15:00 (по Мск, GMT +3)онлайн📼 Записаться можно здесь: 📼https://forms.gle/af4KWj4fQRno6v2L9 Все участники будут добавлены в Telegram-чат, где получат статьи для подготовки и вопросы для саморефлексии.

7 мая 2025 г.444В Telegram

ЧИСТЫЙ КОД (Part 4)👋 Привет Пол (и привет всем)В одном из прошлых постов мы говорили на тему вариации контекста, формирующего решения разработчика. Теперь спустимся на уровень конкретных примеров и подумаем, а как можно в разном контексте действовать.💼 Представим, что мы работаем в крупной корпорации N, где есть ресурсы на реализацию максимально качественных решений. 🎯 Нам была поставлена задача:Разработать калькулятор комиссий, который заменит менее гибкое и производительное вендорское решение.Ответим на вопросы о контексте:🧑🏻‍💻 Кто наши стейкхолдеры? Каковы их запросы и ожидания?• Команда бизнеса — хочет предлагать клиентам уникальные условия, а потому ожидает гибкости решения в виде точечных настроек калькулятора и быстрого добавления новых вариантов комиссий. Однако на первом этапе считает достаточным просто заменить вендора.• Команда поддержки — недовольна сложностью текущей системы, где в случае ошибок трудно разобраться в причинах и найти корректный способ исправления. • Финансовый контроль — косвенный стейкходлер, который заинтересован в точности расчетов и прозрачности начислений, чтобы исключить возможные ошибки.⚠️ Каковы архитектурные риски и ключевые качества системы?• Во время пиковой нагрузки могут возникать задержки обработки запросов → Требуется высокая производительность и масштабируемость системы, а именно способность обрабатывать большое количество расчетов в короткие сроки, а также сохранять этот параметр при росте нагрузки • Ошибки в расчетах могут приводить к финансовым потерям → Важна целостность данных, учет атомарности операций, работа с округлениями и защита от ошибок интеграций.• Бизнес ожидает, что со временем появятся новые требования → Система должна обладать расширяемостью. Если изначальная архитектура не учитывает возможность модульного расширения, стоимость доработок может вырасти в разы.• Калькулятор комиссий, скорее всего, будет зависеть от других сервисов (биллинг, CRM, внешние платежные системы) → Непродуманная работа с

6 мая 2025 г.315В Telegram

⚙️ Live Templates в IntelliJ IDEAНадоело писать одни и те же конструкции снова и снова? На помощь приходят Live Templates — инструмент, который позволит генерировать фрагменты кода по паре букв.Live Templates — это заготовки кода, которые можно вставлять по сокращённым ключам. Например, вместо того чтобы каждый раз писать System.out.println(), достаточно написать sout и нажать Enter. IDEA сама развернёт код.Live Templates поддерживают Java, Kotlin, JS, Groovy, SQL и XML/HTML.📌 Полезные шаблоны по умолчанию🟢 sout → System.out.println();🟢 fori → for (int i=0; i< ; i++) {}🟢 psvm → public static void main(String[] args) {...}🟢 ifn → if (obj == null) {}🟢 prsf → private static finalПолный список live templates: File → Settings→ Editor → Live Templates.⚙️ Как создать свой шаблон1️⃣ Открываем File → Settings→ Editor → Live Templates2️⃣ Выбираем группу или создаём свою.3️⃣ Нажимаем "+" и задаём аббревиатуру (триггер шаблона).4️⃣ Пишем в поле Template text код с переменными ($VAR$).5️⃣ Указываем Context, где шаблон будет работать (Java, SQL, XML и т. д.).6️⃣ Применяем и тестируем.Live Templates – это must-have инструмент для ускорения написания кода. Настройте под себя и забудьте про шаблонный код.💬 Делитесь интересными кастомными шаблонами✅ Java библиотека #java

26 апр. 2025 г.254В Telegram

👋 Привет Пол (и все, кто любит полезные фичи IntelliJ IDEA)В одном из первых постов канала, я рассказывал о настройке Enable ligatures, которые использую каждый день на протяжении трех лет в своей работе и очень им рад. А сейчас увидел отличный материал про Live Templates — тоже классная фишка для ускорения работы. Репостнул оригинал ниже ⬇️🎯 Что сделал для себя по мотивам постаДобавил несколько своих шаблонов для тестов:@org.junit.jupiter.api.Testvoid $NAME$_when$WHEN$_then$THEN$() { $END$ var actual = $SUT_NAME$.$NAME$(); var expected = $EXPECTED$; assertEquals(expected, actual);}@org.junit.jupiter.api.Testvoid $NAME$_when$WHEN$_thenThrow() { $END$ var actual = assertThrows($EXCEPTION$.class, () -> { $SUT_NAME$.$NAME$(); }); assertEquals($EXPECTED_MESSAGE$, actual.getMessage());}Отредактировал стандартный шаблон для тестов. Теперь метод создаётся сразу в формате, принятым моей командой:@org.junit.jupiter.api.Testvoid ${NAME}_when_then() { ${BODY}}Навигация для изменения стандартных шаблонов:Command + N (macOS) / Alt + Insert (Windows) → три точки → Edit Template🎥 Также очень рекомендую видео, где показано, как настраивать переменные Live Templates, например, указать default value или конвертацию в camelCase.

26 апр. 2025 г.235В Telegram

ЧИСТЫЙ КОД (Part 3)Скажи свое мнение и беги: не откладывай на завтра то, что можно сделать послезавтраЗвучит как сомнительный совет, однако я убежден, что это один из ключевых принципов качественной архитектурной работы.Под профессиональный контекст это можно перефразировать как Откладывай принятие важных архитектурных решений как можно дольше.Оно же верно и в концепции чистого кода.Это не значит избегать решений и ответственности вовсе. Скорее наоборот, это значит принимать только те решения, без которых невозможно двигаться дальше прямо сейчас. Остальные же будет дальновиднее оставить на момент, когда появится больше данных о контексте задачи (про план сбора контекста я писал в посте выше).Если к моменту принятия решения информации не прибавится, мы со спокойной душой возьмем в работу изначальные идеи. Но если контекст дополнится, новое решение будет осмысленнее и качественнее, что в долгосрочной перспективе окажется выгоднее.P.S. А какие принципы у вас есть в работе?

24 апр. 2025 г.230В Telegram

ЧИСТЫЙ КОД (Part 2)👋 Привет Пол (и снова привет всем)Обычно, когда говорят про чистый код, обсуждают размер методов, длину названий или форматирование. Но я убежден, что чистый код начинается задолго до того, как будет написана первая строка.Перед тем как писать код, важно все же понять контекст, в котором он будет существовать. Для этого я задаю себе (и коллегам) несколько ключевых вопросов:1️⃣ Кто наши стейкхолдеры (технические и бизнес)? Стейкхолдеры, в свою очередь, помогут нам ответить на вопросы ниже.2️⃣ Каковы архитектурные риски и ключевые качества системы?Это понимание позволит валидировать каждое принимаемое решение. Примером риска может являться утечка клиентских данных, а качеством системы в таком случае является безопасность.3️⃣ Какой объем изменений ожидается в будущем?— Значительный → стоит искать более продуманное решение, которое позволит в будущем более удобно добавлять новые функции или изменять старые.— Малый → можно позволить себе решение более простое, прямолинейное и быстрое по срокам реализации.4️⃣ Долгосрочная или краткосрочная ли ожидается поддержка?— Долгосрочная → код должен быть гибким и легко поддерживаемым.— Краткосрочная → можно принять больше компромиссов.5️⃣ Насколько жесткие дедлайны?— Сжатые сроки → приходится делать упрощенные решения.— Гибкие сроки → можно уделить больше времени качеству.Ответы на эти вопросы могут быть зафиксированы в аналитике к задаче или существовать только в головах команды. Но чем больше информации удастся собрать, тем лучше. По итогу: чем выше уровень неопределенности, тем выше шанс принять некачественное и неподходящее решение.P.S. В следующих постах я хотел бы разобрать разные вариации контекстов и поразмышлять, какие решения можно принять на их основе. Буду рад вашим мнениям!

22 апр. 2025 г.224В Telegram

ЧИСТЫЙ КОД (Part 1)👋 Привет Пол (и все, кто задумывается о чистом коде)Семь месяцев назад я сменил работу, и теперь одна из моих ключевых задач — обучать и делиться экспертизой. И за это время мне часто приходилось отвечать на вопросы, так или иначе связанные с чистотой кода.Что такое чистый код?Это самый базовый вопрос, на который, тем не менее, нет простого ответа. Нельзя просто следовать чек-листу и гарантировать, что код при этом станет чистым.Сам подход подразумевает, что иногда важно придерживаться принципов, а иногда осознанно от них отходить.В следующих постах мне хочется разобрать и порефлексировать, как именно я принимаю такие решения. Я покажу свою логику, постараюсь объяснить, на чем она основана, и между какими вариантами я привык выбирать в реальной разработке.P.S. А еще оказалось, что многие вещи делаются настолько бессознательно и интуитивно, что при необходимости передачи знания приходится буквально воссоздавать с нуля алгоритм действий. Поэтому я был бы очень рад и благодарен, если вы поделитесь в комментариях своим опытом или мнениями под грядущими постами!

18 апр. 2025 г.274В Telegram
Пол — это Java — пост в ТГ канале

👋 Привет Пол (и все, кто интересуется новыми архитектурными подходами)Сегодня я хочу поделиться своими впечатлениями от статьи про Cell-Based Architecture.Сell-based Architecture (CBA)— это подход, при котором система делится на независимые ячейки (cells), каждая из которых полностью самодостаточна и выполняет определенную бизнес-логику. Основная идея — каждая ячейка содержит все необходимые ресурсы для своей работы, что упрощает масштабирование и изоляцию проблем. Статья приводит список преимуществ такой архитектуры над Микросервисной (MSA), но ряд из них выглядит спорным, как, например, тезис про самодостаточность ячейки. Самодостаточность ячейки, как свойство, кажется мне довольно похожим на самодостаточность микросервиса. Однако в MSA самодостаточность сервисов направлена на устранение краеугольной проблемы — распределённых транзакций. В CBA же сама концепция объединения нескольких сервисов в одну ячейку порождает эту самую проблему, что загадочно выставляется преимуществом, хотя она сгубила бессчетное число микросервисов.Если рассматривать обе архитектуры в контексте запуска в Kubernetes кластере, то единственная разница — в MSA Helm будет контролировать только один сервис, а в CBA несколько. Поэтому, если подытожить первое впечатление, то кажется, что CBA — скорее маркетинговый ход AWS, поскольку это оптимизация именно для самого AWS.А как вам кажется, есть ли реальные преимущества Cell-Based Architecture по сравнению с Микросервисами?

29 окт. 2024 г.503В Telegram

⚙️ Как настроить цветовую схему в IntelliJ IDEAВ предыдущем посте я делился своими выводами по преимуществам использования цветовых схем в коде. Небольшой tutorial, как эти настройки применить: » » Откройте Settings -> Editor -> Color Scheme -> Java.» » Найдите разделы Interface, Abstract class и Enum.» » Установите удобные вам цвета для каждого типа класса.Моя цветовая схема:Interface — #88E062 (зеленый оттенок)Abstract class — #66A8E9 (голубой оттенок)Enum — #EBC4FF (пастельно-фиолетовый)Record — #FFB86C (янтарный/персиковый)Со временем цветовая схема становится естественной частью процесса работы с кодом. Она упрощает чтение, и нам не нужно каждый раз вчитываться в названия или проваливаться в класс — мы просто ориентируемся по цветам.А какие инструменты или фичи IntelliJ IDEA помогают вам? Делитесь в комментариях!#intellijideafeature

17 окт. 2024 г.427В Telegram