java_iibrary | Unsorted

Telegram-канал java_iibrary - Java Portal | Программирование

12073

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Subscribe to a channel

Java Portal | Программирование

Spring Boot 4: приближение срока истечения SSL-сертификатов больше не меняет статус health-проверки на специальный.

✅ Статус WILL_EXPIRE_SOON удалён.
✅ Статус остаётся UP; проверяйте details.expiringChains.
✅ Порог предупреждения настраивается параметром:

management.health.ssl.certificate-validity-warning-threshold


👉 Java Portal

Читать полностью…

Java Portal | Программирование

Docker прост, пока всё работает.

Но что делать, если контейнер постоянно перезапускается, логи пропали, а приложение теряет данные после перезапуска? Тут уже недостаточно одного docker run.

Команды Docker, которые стоит знать каждому разработчику:

• docker logs -f → следить за логами приложения.
• docker exec -it → выполнять команды внутри работающего контейнера для диагностики.
• docker inspect → изучать конфигурацию контейнера.
• docker stats → проверять потребление CPU и памяти.
• docker network → управлять сетями и разбираться с соединениями между сервисами.
• docker volume → управлять томами для хранения данных вне жизненного цикла контейнера.
• docker compose → запускать несколько сервисов вместе.
• docker system df → проверять, сколько места на диске занимает Docker.

В продакшене не забывайте:

• Использовать небольшие базовые образы из доверенных источников.
• Запускать приложение от пользователя без прав root.
• Настраивать проверки работоспособности и ограничения ресурсов.
• Не хранить секреты в Docker-образах.
• Использовать тома для постоянного хранения данных.

Подготовили шпаргалку по Docker для продакшена: архитектура, команды, примеры, сети, тома, Compose и советы по диагностике проблем.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Большинство Java-разработчиков используют эти термины каждый день. Удивительно, но многие до сих пор их путают. Вот простой способ запомнить разницу.

JDK (Java Development Kit)
• Всё необходимое для разработки Java-приложений:
• Компилятор javac
• Инструменты отладки
• Инструменты упаковки
• Среда выполнения JRE

JRE (Java Runtime Environment)
• Всё необходимое для запуска Java-приложений:
• Основные библиотеки
• Вспомогательные файлы
• Виртуальная машина JVM

JVM (Java Virtual Machine)
• Движок, который выполняет Java-байткод:
• Загружает классы
• Проверяет байткод
• JIT-компилирует часто выполняемый код
• Управляет памятью и сборкой мусора

Как запомнить:
JDK = JRE + инструменты разработки
JRE = JVM + библиотеки
JVM = выполнение байткода

Представьте приготовление кофе
• JDK — кофемашина, зёрна, кофемолка и всё необходимое для приготовления кофе.
• JRE — готовый к употреблению кофе.
• JVM — нагреватель, благодаря которому кофе заваривается.

Если вы пишете код, устанавливайте JDK. Если только запускаете Java-приложение, достаточно JRE, хотя современные дистрибутивы JDK обычно уже включают необходимую среду выполнения.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Проблема в продакшене. Приложение зависло.

Вы запускаете:

jstack <pid>


Через несколько секунд получаете:
Found one Java-level deadlock


Но главный вопрос… Как JVM обнаружила взаимную блокировку? Что происходит внутри?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java-разработчики, ConcurrentHashMap потокобезопасен.

Но он не блокирует всю коллекцию при каждом обновлении. Что же происходит, когда несколько потоков изменяют её одновременно?

До Java 8 → блокировки на уровне сегментов.
Java 8+ → CAS + синхронизация на уровне корзин.

Как это улучшает работу с конкурентным доступом? И когда ConcurrentHashMap всё ещё нужны блокировки?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java: используйте Deque вместо Stack для работы по принципу LIFO («последним пришёл — первым вышел»).

Stack — устаревший класс, который наследуется от Vector и синхронизирует каждый вызов.

Deque предоставляет те же методы push, pop и peek.
Используйте ArrayDeque: он быстрее и рекомендуется начиная с Java 6.

#Java #Collections

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Бесплатные ресурсы для изучения Java

Конспект Effective Java — HugoMatilla/Effective-JAVA-Summary 

Паттерны проектирования на Java — iluwatar/java-design-patterns 

Подготовка к техническим собеседованиям — kdn251/interviews 

Сохраняйте в закладки!

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java-разработчики, в чём разница между volatile и synchronized?

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

volatile гарантирует видимость изменений между потоками. synchronized обеспечивает видимость и взаимное исключение: критическую секцию под одним и тем же монитором может выполнять только один поток за раз.

Вопрос: два потока выполняют count++, а переменная count объявлена как volatile. Потокобезопасен ли такой код? Почему?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java-разработчики, знаете разницу между Shallow Copy и Deep Copy?

Вы копируете объект, но что именно создаётся — независимая копия объекта или копия ссылок на вложенные объекты?

Shallow copy копирует ссылки на объекты, поэтому вложенные объекты продолжают указывать на те же области памяти. Deep copy создаёт новый объект и рекурсивно копирует всё его содержимое.

То есть shallow copy копирует структуру со ссылками на вложенные объекты, а deep copy создаёт независимую копию всего дерева объектов.

Вот пример на Java

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Прогрев от Java-бабули 🙂

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Псс, хочешь перестать мониторить Telegram в поисках работы? 👀

Ты листаешь каналы, видишь вакансию, сохраняешь и откладываешь отклик «на потом».

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

Софи забирает эту рутину на себя.

Она сама находит подходящие вакансии в 350+ Telegram-каналах, изучает их, пишет персональное сопроводительное и отправляет отклик.

А еще она умеет откликаться на:

▫️ hh ru
▫️ карьерных сайтах компаний - Авито, Сбер, Т-Банк
▫️ Geekjob
▫️ youngjunior.ru

Тебе больше не нужно выбирать, где сегодня искать работу.

Софи будет искать везде.

Доступ откроется уже завтра.

Первые 3 дня - бесплатно.

Мест немного. Подпишись, чтобы не пропустить старт.

Читать полностью…

Java Portal | Программирование

Если бы пришлось заново начинать свой путь в Java в 2026 году, я бы придерживался такого roadmap:

1. Java Fundamentals
• Syntax
• Data Types
• Control Flow
• Methods

2. Object-Oriented Programming
• Encapsulation
• Inheritance
• Polymorphism
• Abstraction

3. Core Java APIs
• Collections
• Generics
• Streams
• Exception Handling

4. Multithreading
• Threads
• Executors
• Synchronization
• CompletableFuture

5. Databases
• SQL
• JDBC
• Transactions
• Connection Pooling

6. Spring Boot
• Dependency Injection
• REST APIs
• Validation
• Configuration

7. Enterprise Development
• JPA/Hibernate
• Spring Security
• JWT
• Logging

8. Testing
• JUnit
• Mockito
• Integration Tests
• Testcontainers

9. Build & Deploy
• Maven/Gradle
• Git
• Docker
• CI/CD

10. Advanced Topics
• Microservices
• Redis
• Kafka
• Design Patterns
• System Design

Самая большая ошибка, которую часто допускают разработчики? Начинают изучать frameworks до того, как освоят Core Java. Разработчик, который хорошо понимает Java, сможет разобраться практически с любым framework. В обратную сторону это работает гораздо сложнее.

Сохраняйте roadmap и на каждом этапе делайте хотя бы один реальный проект. Именно так теория превращается в практические навыки.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

💡 Java: сортируйте с помощью Comparator.comparing() и забудьте про громоздкий compare()

✅ Сортировка по полю в одну строку
✅ Используйте .thenComparing(...) для дополнительной сортировки при одинаковых значениях
✅ Работает с method references, например User::getLastName

👉 Java Portal

Читать полностью…

Java Portal | Программирование

💡 Java: форматируйте код одинаково каждый раз

✅ Выберите единый code style и придерживайтесь его
✅ Автоматизируйте форматирование с помощью Spotless или Checkstyle в build
✅ Используйте format on save / CI, чтобы стиль кода не зависел от того, кто его написал

#Java #CleanCode

👉 Java Portal

Читать полностью…

Java Portal | Программирование

⚡️⚡️Joker 2026: что происходит с профессией разработчика

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

Поэтому в этом сезоне меняется и Joker: первый день традиционно посвящен Java — Core Java, рантайму и работе на уровне железа. А во второй день будем обсуждать, как прямо сейчас меняется сама инженерная практика.

В программе — Context Engineering, команды из людей и ИИ-агентов, Self-Evolving Agents, новые подходы к архитектуре и работе с моделями, а также вопросы ответственности и роли эксперта.

Собрали главные темы второго дня в карточках.

🌟С промокодом: JavaIibrary персональные билеты дешевле

Полное расписание и билеты — на сайте.

Читать полностью…

Java Portal | Программирование

Почему один и тот же Java-файл .class запускается на Windows, Linux и macOS без перекомпиляции?

Секрет не в самом языке Java, а в JVM. Вот какой путь проходит программа:
Hello.java → javac → Hello.class (байткод) → JVM → машинный код → выполнение программы

Именно этот дополнительный уровень абстракции даёт Java её знаменитую возможность: «Написал один раз — запускай где угодно». Когда понимаешь эту цепочку, разобраться в JIT-компиляции, сборке мусора и настройке JVM становится гораздо проще.

Как думаете, почему Java использует промежуточный байткод, а не компилируется сразу в машинный код?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Эволюция языков программирования

1940-е → Машинный код
⬇️
1950-е → Ассемблер
⬇️
1960-е → FORTRAN • COBOL • BASIC
⬇️
1970-е → C • Pascal
⬇️
1980-е → C++ • Objective-C
⬇️
1990-е → Java • JavaScript • PHP
⬇️
2000-е → C# • Ruby • Scala
⬇️
2010-е → Go • Rust • Kotlin • Swift
⬇️
2020-е → Программирование с помощью ИИ

Каждое поколение решало свои задачи:
• Машинный код → прямое управление оборудованием.
• Ассемблер → инструкции, понятные человеку.
• C и Pascal → переносимость программ и структурное программирование.
• Java и JavaScript → корпоративное ПО и современный веб.
• C#, Ruby и Scala → продуктивность разработчиков и масштабируемые приложения.
• Go, Rust, Kotlin и Swift → облачные системы, безопасность памяти и современные платформы.
• Программирование с помощью ИИ → ускорение разработки, при котором архитектурные решения по-прежнему принимают люди.

Что самое интересное?

Языки развивались не потому, что старые становились бесполезными. Каждое новое поколение ПО приносило новые задачи. И вот подтверждение:

• На C по-прежнему пишут операционные системы.
• На Java работают миллионы корпоративных приложений.
• JavaScript по-прежнему доминирует в вебе.
• Python остаётся ведущим языком в ИИ и анализе данных.

Новое не заменяет старое. Оно расширяет возможности. На каком языке вы написали свой первый Hello, World!?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

💡 Java: не создавайте ресурсоёмкие объекты, пока они действительно не понадобятся.

✅ Инициализация полей заранее тратит время и память впустую, если код, который их использует, так и не выполнится.
✅ Используйте ленивую инициализацию при первом обращении, Supplier или паттерн Holder.
✅ Подходит для кэшей, клиентов и тяжёлых конфигураций.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java-разработчики, CopyOnWriteArrayList создаёт копию всего внутреннего массива при каждом изменении.

Звучит затратно, правда? И всё же в некоторых продакшен-системах он может работать быстрее синхронизированных коллекций.

Почему?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Во многих приложениях есть такой эндпоинт.

Фронтенд удаляет JWT после того, как пользователь нажимает «Выйти». Но вот вопрос… Действительно ли пользователь вышел из системы?

Что, если:
• JWT скопировали до выхода?
• Срок действия токена ещё не истёк?
• Другое устройство всё ещё использует тот же токен?

Будет ли ваш бэкенд по-прежнему принимать этот JWT? Как вы реализуете выход из системы в архитектуре со stateless JWT?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Каждый Java-разработчик использует HashMap. Но задумывались ли вы…

Почему его ёмкость всегда равна степени двойки?
Почему не 10? Почему не 100? Почему Java увеличивает её именно так?

16 → 32 → 64 → 128 → 256

Что сломается или станет работать медленнее, если ёмкость будет равна 15, 30 или 100?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

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

Вот его основные особенности:

Независимость от платформы
Скомпилируйте код в байт-код один раз и запускайте его на любой машине с JVM.

Объектно-ориентированный подход
Всё строится вокруг классов и объектов, что упрощает организацию и сопровождение крупных приложений.

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

Высокая производительность
JIT-компилятор (Just-In-Time) оптимизирует часто выполняемый код, обеспечивая скорость, близкую к нативной.

Многопоточность
Встроенные API для работы с конкурентностью упрощают параллельное выполнение нескольких задач.

Проверен на практике
Банковские системы, платформы электронной коммерции, Android-приложения и корпоративные бэкенды: Java лежит в основе критически важного ПО в самых разных отраслях.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Готовимся к System Design интервью уровня Middle и Senior

Полезный конспект по проектированию масштабируемых систем по книге Алекса Сюй System Design Interview.

Схемы, объяснения архитектурных решений и разборы популярных задач: от сокращения ссылок и ограничения частоты запросов до проектирования чатов и распределённых сервисов.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java-разработчики:

Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканчивается свободное место? Почему бы просто не удваивать capacity?

И какой здесь компромисс между расходом памяти и производительностью при resize?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Шпаргалка по проектированию веб систем System Design 101

Подробное руководство по архитектуре веб‑сервисов, которое обязательно стоит сохранить. Это перевод статьи от ByteByteGo опубликованный на Хабре

Сохраняем за лайк ❤️

👉 Java Portal

Читать полностью…

Java Portal | Программирование

💡 Java/Spring: отдавайте предпочтение constructor injection вместо @Autowired для полей.

✅ Field injection скрывает обязательные dependencies
✅ Constructor injection делает зависимости явными
✅ Проще писать тесты: можно передать mocks напрямую, без запуска Spring context

#Java #SpringBoot

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Вайбкодим «Полный путь разработки AI-агентов: от MCP до Agentic RAG»

Образовательная программа на Stepik по разработке современных AI-агентов.

Начинаем с Model Context Protocol: создаём MCP-серверы, подключаем инструменты и внешние API, а затем переходим к разработке Agentic RAG-систем с памятью, рассуждением, поиском знаний и оценкой качества.

• Model Context Protocol и MCP-серверы
• LangChain, LangGraph, LlamaIndex
• API, инструменты, ресурсы и промпты
• Классический RAG → Agentic RAG
• ReAct, память и планирование
• Графы знаний и свои инструменты
• Трассировка и подготовка к production

Успей, скидка 20% действует 48 часов

↗️ Начать обучение на Stepik

Читать полностью…

Java Portal | Программирование

99% Java-разработчиков хотя бы раз допускали эту ошибку.

Всё работает... пока однажды не перестаёт. Использование == для сравнения String может казаться правильным во время тестирования из-за String interning, но такой код может сломаться, когда значения приходят из базы данных, REST API или пользовательского ввода.

Самое безопасное правило простое: Используйте .equals() для сравнения значений.

Ставьте константу первой:

"SUCCESS".equals(status)


Так вы избежите NullPointerException, даже если status == null. Такие небольшие привычки помогают предотвращать реальные баги в production.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Большинство разработчиков знают базовую цепочку: git add → git commit → git push

Но Git в production — совсем другая история. Что делать, если:

→ Нужно работать над новой feature, не затрагивая main?
→ Пока вы работали, в remote появились новые изменения?
→ Нужно перенести конкретный hotfix в release branch?
→ Неудачный commit уже попал в production?
→ Вы случайно потеряли commit?
→ Нужно найти commit, который привнёс bug?

Вот здесь особенно полезны:

git fetch
git rebase
git cherry-pick
git revert
git reflog
git bisect

Шпаргалка с командами, реальными use cases и примерами, которые действительно пригодятся в работе.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Если кто-то ещё не знает об этой легенде

TheAlgorithms/Java — огромный open-source репозиторий с реализациями алгоритмов и структур данных на чистом Java.
Сортировки, поиск, графы, динамическое программирование, структуры данных и многое другое — всё с исходным кодом, который можно разбирать и запускать самостоятельно.

Отличная база для прокачки алгоритмов, подготовки к собеседованиям и повторения Java.

https://github.com/thealgorithms/java

👉 Java Portal

Читать полностью…
Subscribe to a channel