Тебе больше не нужен Lombok
Records заменяют Data, Value, Getter, Setter, ToString, EqualsAndHashCode. var заменяет val. try-with-resources заменяет Cleanup. Твоя IDE справляется с Builder.
Лучшая зависимость — та, которая тебе не нужна.
Java догнала. Пора обновить подход.
https://loiane.com/2026/03/you-dont-need-lombok-anymore/
👉 Java Portal
Records заменяют Data, Value, Getter, Setter, ToString, EqualsAndHashCode. var заменяет val. try-with-resources заменяет Cleanup. Твоя IDE справляется с Builder.
Лучшая зависимость — та, которая тебе не нужна.
Java догнала. Пора обновить подход.
https://loiane.com/2026/03/you-dont-need-lombok-anymore/
Please open Telegram to view this post
VIEW IN TELEGRAM
Loiane Groner
You Don’t Need Lombok Anymore
Lombok was a lifesaver. For years, it spared us from writing repetitive getters, setters, constructors, toString, equals, and hashCode. But modern Java has caught up. Between records, sealed classes, pattern matching, and a few other additions, most of what…
🔥5💊5🤔2
Spring Boot: избегай подключения полного
👉 Java Portal
spring-boot-starter-web, если тебе нужен только Spring MVC, потому что этот стартер подтягивает дополнительные компоненты, например встроенный сервер, которые тебе могут быть не нужны.Instead of importing the full web starter:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Just set the MVC dependency:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc</artifactId>
</dependency>
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Топ-7 навыков, которые сейчас нужны Java-разработчику, чтобы устроиться на работу:
1. Core Java (8–22)
Streams, records, virtual threads, collections, OOP
2. Spring Boot
REST API, валидация, profiles, AOP, actuator, управление конфигурацией, devtools, кастомные стартеры, обработка ошибок
3. Микросервисы
Feign / WebClient, версионирование API, service discovery, config server, circuit breakers, retries, distributed tracing, API Gateway, SAGA, CQRS
4. Spring Security
JWT, OAuth2, ролевая авторизация
5. Hibernate / JPA
Маппинги, lazy/eager загрузка, JPQL, оптимизация производительности
6. DSA (алгоритмы и структуры данных)
Массивы, деревья, графы, динамическое программирование, хеширование
7. Конкурентность
Thread pools, locks, CompletableFuture, Loom
👉 Java Portal
1. Core Java (8–22)
Streams, records, virtual threads, collections, OOP
2. Spring Boot
REST API, валидация, profiles, AOP, actuator, управление конфигурацией, devtools, кастомные стартеры, обработка ошибок
3. Микросервисы
Feign / WebClient, версионирование API, service discovery, config server, circuit breakers, retries, distributed tracing, API Gateway, SAGA, CQRS
4. Spring Security
JWT, OAuth2, ролевая авторизация
5. Hibernate / JPA
Маппинги, lazy/eager загрузка, JPQL, оптимизация производительности
6. DSA (алгоритмы и структуры данных)
Массивы, деревья, графы, динамическое программирование, хеширование
7. Конкурентность
Thread pools, locks, CompletableFuture, Loom
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
❤7🔥5
Spring Boot: не подключайте полный
👉 Java Portal
spring-boot-starter-web, если вам нужен только Spring MVC — этот стартер тянет лишние компоненты, например встроенный сервер, который может быть вам не нужен.Please open Telegram to view this post
VIEW IN TELEGRAM
💊9❤1
Java Portal | Программирование
Я создал шаблонный репозиторий для Claude Code под приложение на Spring Boot — с инструкциями, скиллами и сабагентами 💡 Цель — упростить создание приложения, которое: - подключается к базе данных - деплоится в Kubernetes - запускает тесты с использованием…
Несколько дней назад был опубликован шаблон Claude Code для Spring Boot с инструкциями, skills и сабагентами
В этом гайде вы найдёте объяснение шаблона, пример его использования и результаты
👉 Java Portal
В этом гайде вы найдёте объяснение шаблона, пример его использования и результаты
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - piomin/claude-ai-spring-boot: Claude Code template for Spring Boot and other staff (included in the tags)
Claude Code template for Spring Boot and other staff (included in the tags) - piomin/claude-ai-spring-boot
👍3🌚1
Агентам Spring AI нужно уметь искать в интернете, но официального Java SDK для Browserbase нет.
Поэтому Dan Vega сделал свой.
Browserbase предоставляет агентам настоящий браузер для управления. Их новый Search API позволяет агентам находить, куда идти, ещё до запуска полноценной браузерной сессии. Search, fetch, browse. Повышайте уровень только когда это действительно нужно.
Добавьте одну зависимость, укажите свой API-ключ и подключите это как инструмент в Spring AI.
Пример проекта готов и скоро будет доступен.
100% опенсорс
👉 Java Portal
Поэтому Dan Vega сделал свой.
Browserbase предоставляет агентам настоящий браузер для управления. Их новый Search API позволяет агентам находить, куда идти, ещё до запуска полноценной браузерной сессии. Search, fetch, browse. Повышайте уровень только когда это действительно нужно.
Добавьте одну зависимость, укажите свой API-ключ и подключите это как инструмент в Spring AI.
Пример проекта готов и скоро будет доступен.
100% опенсорс
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - danvega/browserbase-spring-boot-starter
Contribute to danvega/browserbase-spring-boot-starter development by creating an account on GitHub.
👍3
Java 26 стал умнее, особенно в части pattern matching.
Теперь работа с выражениями сопоставления с образцом стала значительно стабильнее и предсказуемее.
Что улучшилось:
- Более надёжный вывод типов
компилятор лучше понимает типы в сложных условиях
- Меньше ошибок на краевых случаях
меньше неожиданных падений и предупреждений
- Консистентное поведение
одинаковая логика в
Что это означает на практике:
Раньше, когда условия становились сложнее,
компилятор мог «теряться»
Теперь:
- анализ потока выполнения стал умнее
- переменные из pattern matching корректно распознаются
- код становится чище и безопаснее
Java всё больше приближается к современным языкам
с удобным и предсказуемым контролем типов
👉 Java Portal
Теперь работа с выражениями сопоставления с образцом стала значительно стабильнее и предсказуемее.
Что улучшилось:
- Более надёжный вывод типов
компилятор лучше понимает типы в сложных условиях
- Меньше ошибок на краевых случаях
меньше неожиданных падений и предупреждений
- Консистентное поведение
одинаковая логика в
if и switchЧто это означает на практике:
Раньше, когда условия становились сложнее,
компилятор мог «теряться»
Теперь:
- анализ потока выполнения стал умнее
- переменные из pattern matching корректно распознаются
- код становится чище и безопаснее
Java всё больше приближается к современным языкам
с удобным и предсказуемым контролем типов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Релиз IntelliJ IDEA 2026.1 уже здесь! Узнай о всех последних обновлениях — они подробно разобраны и продемонстрированы на странице What’s New.
Зацени👇
https://www.jetbrains.com/idea/whatsnew/
👉 Java Portal
Зацени
https://www.jetbrains.com/idea/whatsnew/
Please open Telegram to view this post
VIEW IN TELEGRAM
JetBrains
What's New in IntelliJ IDEA
Discover IntelliJ IDEA 2026.1 with support for more AI agents and ACP, Java 26 and Kotlin 2.3.20, Spring insights, and productivity boosts.
❤3💊2👍1
Вопросы для собеседования по микросервисам с ответами
👉 Java Portal
1. Каковы ключевые характеристики микросервисов?
Ответ:
> Децентрализованное управление данными
> Сервисы развёртываются независимо друг от друга
> Проектирование на основе предметной области (DDD)
> Лёгкое взаимодействие (например, REST, gRPC)
> Изоляция сбоев
> Удобны для непрерывной доставки
2. Чем микросервисы отличаются от монолитной архитектуры?
Ответ:
> Монолит: единая кодовая база, жёстко связанные компоненты, сложно масштабировать.
> Микросервисы: множество сервисов, слабо связанные, развёртываются и масштабируются независимо.
3. Каковы основные преимущества использования микросервисов?
Ответ:
> Лучшая масштабируемость
> Более быстрое выведение продукта на рынок
> Независимые развёртывания
> Лучшая устойчивость к сбоям
> Возможность использовать разные языки и технологии
4. Какие есть сложности при работе с микросервисами?
Ответ:
> Сложность управления распределёнными системами
> Задержки в сети и накладные расходы на коммуникацию
> Согласованность данных
> Отладка и мониторинг
> Развёртывание и оркестрация
5. Как микросервисы обмениваются данными?
Ответ:
> Синхронно: через REST, gRPC
> Асинхронно: через очереди сообщений (RabbitMQ, Kafka)
6. Что такое service discovery в микросервисах?
Ответ:
> Это механизм, с помощью которого сервисы находят друг друга в сети.
> Применяются инструменты вроде Consul, Eureka, DNS Kubernetes.
7. Что такое API Gateway и зачем он нужен?
Ответ:
> API Gateway — это единая точка входа в систему. Он отвечает за маршрутизацию, безопасность, ограничение частоты запросов и агрегацию ответов от разных сервисов.
> Примеры: Kong, Zuul, NGINX, Spring Cloud Gateway.
8. Как в микросервисах управляют данными?
Ответ:
> Каждый сервис использует свою отдельную базу данных (подход “одна база на сервис”).
> Для согласованности применяются событийная архитектура или паттерн саги.
9. Что такое паттерн Saga?
Ответ:
> Saga — это последовательность локальных транзакций.
> Если одна из них завершается с ошибкой, запускаются компенсирующие действия для отката изменений.
10. Какие инструменты используют для разработки микросервисов?
Ответ:
> Языки: Java (Spring Boot), Node.js, Go, Python
> Сборка: Maven, Gradle
> Контейнеризация: Docker
> Оркестрация: Kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3
Интересное Java API в разработке: JEP 531, ленивые константы.
Идея проста: отложить инициализацию до первого использования, затем сохранять значение неизменяемым и избежать типичного самописного boilerplate-кода для ленивых полей. Небольшой пример👇
👉 Java Portal
Идея проста: отложить инициализацию до первого использования, затем сохранять значение неизменяемым и избежать типичного самописного boilerplate-кода для ленивых полей. Небольшой пример
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
Spring Boot: можно включить
Обратившись к этому endpoint, вы увидите информацию, например:
- Название бина
- Тип бина
- Scope бина
- Зависимости бина
👉 Java Portal
/actuator/beans, чтобы отлаживать отсутствующие бины.Обратившись к этому endpoint, вы увидите информацию, например:
- Название бина
- Тип бина
- Scope бина
- Зависимости бина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Java Portal | Программирование
Релиз IntelliJ IDEA 2026.1 уже здесь! Узнай о всех последних обновлениях — они подробно разобраны и продемонстрированы на странице What’s New. Зацени 👇 https://www.jetbrains.com/idea/whatsnew/ 👉 Java Portal
This media is not supported in your browser
VIEW IN TELEGRAM
Мне очень нравится tab-tab автодополнение. Отлично подходит для шаблонного кода Java-бинов.
👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👀10❤3👍3
Java-совет: никогда не возвращайте
Если метод возвращает
Гораздо лучше всегда возвращать пустую коллекцию:
-
-
-
Тогда вызов становится безопасным, а код — чище.
Пример:
[плохо] (нужно проверять на
[хорошо] (без лишних проверок):
Теперь вызов можно писать так:
👉 Java Portal
null вместо коллекций.Если метод возвращает
null, вызывающий код вынужден делать бессмысленные проверки — а это источник багов.Гораздо лучше всегда возвращать пустую коллекцию:
-
Collections.emptyList()-
List.of()-
Set.of()Тогда вызов становится безопасным, а код — чище.
Пример:
[плохо] (нужно проверять на
null):public List<String> findUsers() {
if (!dataAvailable()) {
return null;
}
return loadUsers();
}[хорошо] (без лишних проверок):
public List<String> findUsers() {
if (!dataAvailable()) {
return Collections.emptyList();
}
return loadUsers();
}Теперь вызов можно писать так:
List<String> users = findUsers();
users.forEach(System.out::println); // без null-check
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Java: Используйте Comparator.nullsFirst() или Comparator.nullsLast() для безопасной сортировки.
Значения null могут привести к NullPointerException, если ваш компаратор не обрабатывает их явно.
Вот код, представленный на изображении:
Без использования
С использованием
В первом примере (BadSortingExample) код вызывает NullPointerException, так как возраст у одного из объектов null, и компаратор не обрабатывает это.
Во втором примере (GoodSortingExample) используется Comparator.nullsFirst(), что позволяет безопасно сортировать объекты, даже если одно из значений для возраста отсутствует.
👉 Java Portal
Значения null могут привести к NullPointerException, если ваш компаратор не обрабатывает их явно.
Вот код, представленный на изображении:
Без использования
nullsFirst или nullsLast:public class BadSortingExample {
static class Person {
String name;
Integer age;
Person(String name, Integer age) {
this.name = name;
this.age = age;
}
Integer getAge() {
return age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", null), // null age
new Person("Charlie", 25)
);
// This crashes at runtime
people.sort(Comparator.comparing(Person::getAge));
people.forEach(System.out::println);
}
}С использованием
nullsFirst:public class GoodSortingExample {
static class Person {
String name;
Integer age;
Person(String name, Integer age) {
this.name = name;
this.age = age;
}
Integer getAge() {
return age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", null), // null age handled safely
new Person("Charlie", 25)
);
// Safe: null ages go FIRST
people.sort(
Comparator.comparing(
Person::getAge,
Comparator.nullsFirst(Integer::compareTo)
)
);
people.forEach(System.out::println);
}
}В первом примере (BadSortingExample) код вызывает NullPointerException, так как возраст у одного из объектов null, и компаратор не обрабатывает это.
Во втором примере (GoodSortingExample) используется Comparator.nullsFirst(), что позволяет безопасно сортировать объекты, даже если одно из значений для возраста отсутствует.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
Бесплатный API для извлечения всей информации по IP-адресу.
Без ограничений и каких-либо платежей.
Работает с Python, Java и любым другим языком.
→ http://ipquery.io
👉 Java Portal
Без ограничений и каких-либо платежей.
Работает с Python, Java и любым другим языком.
→ http://ipquery.io
Please open Telegram to view this post
VIEW IN TELEGRAM
Я только что нашел 100% открытый и полностью бесплатный заменитель Postman, который работает прямо в вашем браузере без необходимости установки.
Его название — Hoppscotch.
Без лишнего веса для десктопа. Без $14/месяц с пользователя. Без сбора данных.
HTTP, GraphQL, WebSocket, тестирование в реальном времени, генерация кодовых фрагментов и миграция из Postman в один клик. Включает десктопную версию и CLI.
100% Открытый исходный код. Лицензия MIT.
👉 Java Portal
Его название — Hoppscotch.
Без лишнего веса для десктопа. Без $14/месяц с пользователя. Без сбора данных.
HTTP, GraphQL, WebSocket, тестирование в реальном времени, генерация кодовых фрагментов и миграция из Postman в один клик. Включает десктопную версию и CLI.
100% Открытый исходный код. Лицензия MIT.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🌚3😁1
Spring Boot:
1.
2.
3. Нет Tomcat или других встроенных серверов
4. Запросы выполняются через
👉 Java Portal
@AutoConfigureMockMvc позволяет тестировать контроллеры без запуска сервера. Он указывает Spring Boot автоматически сконфигурировать экземпляр MockMvc в тестовом контексте.@SpringBootTest
@AutoConfigureMockMvc
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void shouldReturnUser() throws Exception {
mockMvc.perform(get("/users/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));
}
}
1.
@SpringBootTest загружает полный контекст приложения.2.
@AutoConfigureMockMvc настраивает MockMvc.3. Нет Tomcat или других встроенных серверов
4. Запросы выполняются через
DispatcherServlet Spring внутри приложенияPlease open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Что такое Records в Java?
Records в Java — это специальный вид классов, введённый в Java 14 (в preview) и финализированный в Java 16, чтобы уменьшить boilerplate-код при создании простых immutable data-классов.
Они отлично подходят для:
- DTO
- моделей запросов/ответов REST API
- value objects (например, координаты, имена и т.д.)
Пример:
Что Records дают автоматически
Если объявить:
Java автоматически сгенерирует:
- конструктор
- геттеры (
-
- метод
Ограничения Records:
- поля неявно
- нельзя объявить конструктор без аргументов
- нельзя наследоваться от других классов (record неявно наследует
- нельзя изменять поля после создания объекта
- поверхностная неизменяемость: вложенные изменяемые объекты (например,
👉 Java Portal
Records в Java — это специальный вид классов, введённый в Java 14 (в preview) и финализированный в Java 16, чтобы уменьшить boilerplate-код при создании простых immutable data-классов.
Они отлично подходят для:
- DTO
- моделей запросов/ответов REST API
- value objects (например, координаты, имена и т.д.)
Пример:
record Book(String title, double price) {}
Book book = new Book("Cracking The java Interviews", 429.0);
System.out.println(book); // Book[title= Cracking The java Interviews, price=429.0]Что Records дают автоматически
Если объявить:
record Person(String name, int age) {}Java автоматически сгенерирует:
- конструктор
- геттеры (
name(), age())-
equals() и hashCode()- метод
toString()Ограничения Records:
- поля неявно
final- нельзя объявить конструктор без аргументов
- нельзя наследоваться от других классов (record неявно наследует
java.lang.Record)- нельзя изменять поля после создания объекта
- поверхностная неизменяемость: вложенные изменяемые объекты (например,
List) всё ещё могут изменятьсяPlease open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
❤3👍3