JJava-разработчик

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

@iamjavadev💻 Технологии🇷🇺 Русский📅 март 2026 г.

Канал о разработке на языке Java, различных особенностях этого языка программирования, истории языка. Примеры рабочего кода на Java и советы разработчикам. Есть также связанный с каналом чат: t.me/iamjavadevchat, @iamjavadevchat

📊 Полная статистика📝 Все посты
##39#сакральныезнания#производительность#bestpractices#092#обсуждение#антипаттерны#npe
17
Подписчики
23,55
Ср. охват
138.5%
Вовлечённость
20
Постов
~0.5
В день

Графики

📊 Средний охват постов

📉 ERR % по дням

📋 Публикации по дням

📎 Типы контента

Лучшие публикации

20 из 20
Iiamjavadev
iamjavadev
19 янв., 21:00

🎭 Stream API: 3 неочевидных приёма, которые упростят ваш код Все знают filter() и map(), но Stream API гораздо богаче! ✈️ 1. Take/Drop While (Java 9+) — умная фильтрация: // Раньше: сложная логика с флагами List<Integer> numbers = List.of(1, 2, 3, -1, 4, 5); // Взять элементы, пока условие истинно numbers.stream() .takeWhile(n -> n > 0) // [1, 2, 3] .forEach(System.out::println); // Пропустить элементы, пока условие истинно numbers.stream() .dropWhile(n -> n > 0) // [-1, 4, 5] .forEach(System.o...

👁 36
Iiamjavadev
iamjavadev
29 дек., 09:11

🎯 Аннотации: что они МОГУТ и чего НЕ МОГУТ делать. Аннотации — мощный инструмент метапрограммирования, но многие ждут от них чудес. 🆗 Что аннотации МОГУТ: 1. Предоставлять метаданные для фреймворков (@RestController,@Entity) 2. Генерировать код через процессоры аннотаций (Lombok, MapStruct) 3. Влиять на поведение через AOP (@Transactional, @Cacheable) 4. Валидировать данные (@NotNull, @Size) 👎 Что аннотации НЕ МОГУТ: 1. Изменять поведение существующего кода напрямую — только через обработчики...

👁 34
Iiamjavadev
iamjavadev
30 янв., 21:15

🔄 OSR: Как JVM перекомпилирует код прямо во время выполнения JIT-компиляция — это не только «прогрев». JVM умеет переключаться с интерпретатора на скомпилированный код посреди выполнения метода! 🖥 Сценарий: У вас есть долгий цикл, который выполняется тысячи итераций. JVM не будет ждать следующего вызова метода — она перекомпилирует его прямо во время выполнения текущего вызова. ⚙️Как это работает: Интерпретатор исполняет метод ↓ Счётчик итераций цикла достигает порога (например, 10K) ↓ JVM ост...

👁 33
Iiamjavadev
iamjavadev
19 янв., 20:53

☄️ JIT-компиляция: почему первые 10 000 вызовов метода — самые медленные Знаете ли вы, что Java компилирует ваш код дважды? Сначала в байт-код, а потом — в нативный код прямо во время выполнения! 🔼 Уровни компиляции C1/C2: 1. Интерпретатор — первые 1-2K вызовов, медленно 2. C1 (клиентский компилятор) — быстрая компиляция, средняя оптимизация 3. C2 (серверный компилятор) — медленная компиляция, агрессивные оптимизации ❓ Что делает C2 таким умным: ✈️ Inlining — подставляет тело мелких методов ✈️ ...

👁 29
Iiamjavadev
iamjavadev
29 дек., 08:59

⏳ TimeZone: тихая проблема, которая ударит в продакшене. LocalDateTime vs ZonedDateTime vs Instant — выбор не просто так. 🚫🙅 Типичная ошибка: // ОПАСНО для событий, которые должны быть в конкретный момент времени LocalDateTime meetingTime = LocalDateTime.of(2024, 6, 15, 14, 30); // Сохранили в БД... // У пользователя в Калифорнии meetingTime отобразится как 14:30 его времени! ✔️👍 Правильный подход: // Для моментов времени (meeting, flight, payment) — Instant Instant now = Instant.now(); // Вн...

👁 27
Iiamjavadev
iamjavadev
22 дек., 18:49

☄️ Suppressed исключения: что происходит, когда летит сразу несколько ошибок? Знаете ли вы, что в Java исключение может нести в себе другие исключения? Это не баг, а фича — suppressed exceptions. 🖥Контекст: Возникает в блоке try-with-resources и когда в finally бросается исключение. 🤓Пример: try (var resource = new AutoCloseableResource()) { throw new RuntimeException("Основная ошибка в try-блоке"); } catch (Exception e) { System.out.println(e.getMessage()); // "Основная ошибка в try-блоке" //...

👁 25
Iiamjavadev
iamjavadev
29 дек., 07:10

👻 Memory Leak в PermGen/Metaspace. Когда классы не хотят умирать. Часть 1. Казалось бы, сборщик мусора удаляет неиспользуемые объекты. Но что, если сам класс нельзя выгрузить? Сценарий: Динамическая загрузка классов (плагины, hot deploy, Spring DevTools) + использование не того ClassLoader'а. 📣 Суть проблемы: ClassLoader — это объект, который загружает классы. У каждого класса в метаданных JVM есть скрытая ссылка classLoader на его загрузчик. Ключевое: Чтобы выгрузить класс (и его ClassLoader)...

👁 24
Iiamjavadev
iamjavadev
25 дек., 22:52

🎯 Виртуальные потоки (Virtual Threads): революция или эволюция? Java 21 принесла виртуальные потоки — одну из самых важных фич за последние годы. Давайте разберёмся без хайпа. Проблема: Обычные (platform) потоки Java — это обёртки над потоками ОС. Они дорогие (память ~1 МБ, затраты на переключение контекста). 10 000 потоков = 10 ГБ RAM! Решение: Виртуальные потоки — легковесные потоки JVM, которые многопоточно выполняются на небольшом пуле platform-потоков. Простой пример: try (var executor = E...

👁 24
Iiamjavadev
iamjavadev
29 дек., 07:21

👻 Memory Leak в PermGen/Metaspace. Когда классы не хотят умирать. Часть 2. ❓ Почему это специфично для кастомных ClassLoader'ов? Системный ClassLoader (например, AppClassLoader) живёт всегда, поэтому его классы никогда не выгружаются. Проблема возникает только когда: 1. Вы создаёте временные ClassLoader'ы (для плагинов, hot deploy) 2. Хотите их выгрузить (например, при обновлении плагина) 3. Но они не выгружаются из-за таких циклических ссылок ✔️ Как исправить? 1. Избегайте статических полей в ...

👁 24
Iiamjavadev
iamjavadev
19 янв., 20:39

🗂 Files API: перестаньте использовать java.io.File! С Java 7 (2011 год!) у нас есть современный java.nio.file.Path. Но до сих пор многие используют устаревший File. Почему Path лучше: 1. Работает с любыми файловыми системами (ZIP, FTP, память) 2. Более безопасные пути (защита от Path Traversal) 3. Удобные утилитные методы в Files 🚫 Плохо: File file = new File("data.txt"); if (file.exists()) { // ГОНКА! Файл может быть удалён между exists() и чтением BufferedReader br = new BufferedReader(new F...

👁 24

Типы хуков

Нейтральный10 | 25 просм.
Вопрос7 | 20 просм.
Провокация2 | 26 просм.
Статистика1 | 36 просм.

Длина постов

Очень длинные (1000+)19 | 24 просм.
Длинные (500-1000)1 | 18 просм.

Влияние эмодзи

22
С эмодзи (15)
28
Без эмодзи (5)
-21.4% охвата

Типы контента

📝
20
text
24 просм.
Java-разработчик (@iamjavadev) — Telegram-канал | PostSniper