⚡️ Просто о сложном: JIT-компилятор
Чтобы ускорить работу приложения, JVM включает в дело Just-In-Time (JIT) компилятор.
Он превращает часто выполняемый байткод в нативные машинные инструкции прямо во время исполнения.
🔹 Как это работает
— При старте приложения JVM интерпретирует байткод.
— Когда видит, например, что метод вызывается часто (т.н. hot method), — JIT компилирует его в машинный код.
— В следующий раз этот метод исполняется уже как нативный, без интерпретации.
— Всё это происходит «на лету» — поэтому Java-программы разгоняются после первых секунд работы.
🔹 Зачем нужен JIT
Он сочетает плюсы интерпретации и компиляции:
— Быстрый старт приложения (интерпретация).
— Высокая производительность после разогрева (JIT).
🔹 Что он умеет оптимизировать
— Inlining: подставляет код мелких методов прямо в место вызова.
— Escape Analysis: определяет, можно ли объект хранить на стеке вместо heap.
— Loop unrolling: разворачивает циклы для ускорения.
— Dead code elimination: выбрасывает ненужные операции.
— И другие алгоритмы.
⚙️ Как посмотреть, что делает JIT
Включите флаг:
И увидите, какие методы компилируются во время исполнения.
Интересно почитать про алгоритмы JIT подробнее → ставь 👾
🐸 Библиотека джависта
#CoreJava
Чтобы ускорить работу приложения, JVM включает в дело Just-In-Time (JIT) компилятор.
Он превращает часто выполняемый байткод в нативные машинные инструкции прямо во время исполнения.
🔹 Как это работает
— При старте приложения JVM интерпретирует байткод.
— Когда видит, например, что метод вызывается часто (т.н. hot method), — JIT компилирует его в машинный код.
— В следующий раз этот метод исполняется уже как нативный, без интерпретации.
— Всё это происходит «на лету» — поэтому Java-программы разгоняются после первых секунд работы.
🔹 Зачем нужен JIT
Он сочетает плюсы интерпретации и компиляции:
— Быстрый старт приложения (интерпретация).
— Высокая производительность после разогрева (JIT).
🔹 Что он умеет оптимизировать
— Inlining: подставляет код мелких методов прямо в место вызова.
— Escape Analysis: определяет, можно ли объект хранить на стеке вместо heap.
— Loop unrolling: разворачивает циклы для ускорения.
— Dead code elimination: выбрасывает ненужные операции.
— И другие алгоритмы.
Включите флаг:
-XX:+PrintCompilation
И увидите, какие методы компилируются во время исполнения.
Интересно почитать про алгоритмы JIT подробнее → ставь 👾
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👾27👍4🔥3
🛰 Event-Driven Architecture с Apache Kafka
Монолиты и REST-взаимодействие упираются в масштабируемость. Event-driven архитектура с Kafka позволяет строить реактивные цепочки бизнес-логики, где события становятся мостом между сервисами.
📝 Промпт:
💡 Расширения:
— Настройте Kafka Streams для real-time агрегатов.
— Интегрируйте с Schema Registry для версионирования событий.
— Добавьте Observability: trace event flow with OpenTelemetry.
🐸 Библиотека джависта
#Enterprise
Монолиты и REST-взаимодействие упираются в масштабируемость. Event-driven архитектура с Kafka позволяет строить реактивные цепочки бизнес-логики, где события становятся мостом между сервисами.
📝 Промпт:
Generate a Spring Boot 3 microservice architecture example with Apache Kafka event-driven communication.
— Configure Kafka producer and consumer with Spring Kafka.
— Use JSON Schema/Avro for message serialization and schema validation.
— Implement a domain event publisher (e.g. OrderCreatedEvent).
— Add event listener services that react asynchronously (e.g. notification service, billing service).
— Implement idempotency strategy for consumers (deduplication of events).
— Use Kafka Transactions for exactly-once semantics.
— Add Dead Letter Queue (DLQ) handling for failed messages.
— Настройте Kafka Streams для real-time агрегатов.
— Интегрируйте с Schema Registry для версионирования событий.
— Добавьте Observability: trace event flow with OpenTelemetry.
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2👏1
Топ-3 статьи о Java и смежных технологиях за неделю по версии нашего канала.
Крупное обновление фреймворка. Теперь требуется Java 17+, все модули объединены в единую версию, устаревшие API удалены, добавлены аннотации JSpecify для строгой null-безопасности.
Мощное расширение IDE для Spring-проектов. Позволяет генерировать CRUD-код, миграции, OpenAPI и управлять сущностями прямо из IDE.
Статья о том, почему стоит смотреть в сторону Kotlin: меньше шаблонного кода, выше читаемость и меньше ошибок. Kotlin даёт прирост скорости и лаконичности, особенно для команд, уставших от громоздкости Java.
#News
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👏2👍1
Anonymous Poll
31%
Без Lombok писать больно
7%
Удаляю Lombok из всех проектов
30%
Только для DTO и простых моделей
32%
Зависи от команды, проекта и кодстайла
🔥4❤1👍1💯1
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Продолжаем тестить новый формат. Представим задачу 👇
У вас есть Spring Boot-приложение. Нужно собрать Docker-образ, который:
1. Основан на официальном JDK 21
2. Поддерживает порт 8080
3. Настраивает часовой пояс контейнера на Москву (Europe/Moscow)
📦 Задание:
Составьте Dockerfile, который корректно запускает приложение в контейнере по условиям выше.
Ставьте →🔥, если зашёл формат. Если нет, то → 🤔
#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍3👏1😁1
Наш подписчик спрашивает:
Я изучаю Java уже около полугода, сделал небольшой pet-project на Spring Boot, немного HTML/CSS/JS. Сейчас ищу первую работу джуном. Хочу понять, как лучше подготовиться к интервью: на какие темы стоит сделать упор, какие вопросы чаще всего задают и что вообще ожидают от кандидата на стартовую позицию?
🔹 Что думаете?
— Какие темы реально спрашивали у вас на собеседовании джуна
— Что чаще всего «проваливают» начинающие (и как этого избежать)
— Какой совет вы бы дали себе в тот момент, когда шли на первое интервью
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩7❤2👍1🔥1😁1
Выходные прошли, надеюсь все успели отдохнуть. Наблюдал сегодня красивое закатное небо 😍
Как прошли ваши выходные?
Отправляйте фото в комментарии👇🏻
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3😍2
Когда IDE открыта часами, вкладок — десятки, а вы пытаетесь вспомнить, "где же я правил этот метод", эта комбинация спасает от паники.
🔹 Что делает
— Мгновенно возвращает курсор к последнему месту, где вы редактировали код
— Работает даже после навигации по проекту, переходов в другие файлы или классы
— Поддерживает “историю изменений” — можно нажимать несколько раз, чтобы двигаться назад по правкам
🔹 Зачем это нужно
— Экономит время при переключениях между файлами
— Полезно при дебаге или анализе кода, когда IDE уводит вас по ссылкам вглубь проекта
— Убирает хаос при работе с большим количеством вкладок
🔹 Как использовать
— Нажмите Ctrl+Shift+Backspace (Windows/Linux) или ⌘+Shift+Backspace (macOS)
— IDEA вернёт вас туда, где вы последний раз редактировали код
— Повторите комбинацию несколько раз — и вы пройдёте “назад по следам” своих правок
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍9❤3
This media is not supported in your browser
VIEW IN TELEGRAM
В proglib.academy — Глобальная распродажа знаний ‼️
💥 Весь октябрь –40% на те курсы, которые выбирают чаще всего.
👉 Успей забрать свой курс на proglib.academy
💥 Весь октябрь –40% на те курсы, которые выбирают чаще всего.
Курсы с практикой, без воды и пафоса.
Просто берёшь и делаешь апгрейд.
👉 Успей забрать свой курс на proglib.academy
😁4❤1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11👍4🔥2
Практикум, который снимет боль про микросервисы, о которой все молчат.
Sync vs Async: что убьёт ваш проект, а что спасёт?
15 октября, 19:00 — практический вебинар для разработчиков, архитекторов и девопсеров от OTUS. Работаем вместе с Олегом Голенищевым, Senior .NET-разработчиком Directum, преподавателем Microsoft.
Приходи, если хочешь:
✍️Понимать, где Sync — мастхэв, а где Async — единственный шанс выжить
✍️Получить FANG-уровня чек-лист по интеграции (и бонус — шаблоны конфигов Spring Boot для Kafka и RabbitMQ)
✍️Забрать 7% скидку на любой курс OTUS (именно так, просто за регистрацию)
✍️Не попасть в “клуб тех, кто строил микросервисы по учебнику, а теперь переписывает всё с нуля”
Запишись, чтобы не чинить то, что можно не ломать.
Запись, подарки и скидка — только для своих. Лови шанс — кликай на регистрацию: https://tglink.io/fffa463834a3
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFJ1VxwA
Sync vs Async: что убьёт ваш проект, а что спасёт?
15 октября, 19:00 — практический вебинар для разработчиков, архитекторов и девопсеров от OTUS. Работаем вместе с Олегом Голенищевым, Senior .NET-разработчиком Directum, преподавателем Microsoft.
Приходи, если хочешь:
✍️Понимать, где Sync — мастхэв, а где Async — единственный шанс выжить
✍️Получить FANG-уровня чек-лист по интеграции (и бонус — шаблоны конфигов Spring Boot для Kafka и RabbitMQ)
✍️Забрать 7% скидку на любой курс OTUS (именно так, просто за регистрацию)
✍️Не попасть в “клуб тех, кто строил микросервисы по учебнику, а теперь переписывает всё с нуля”
Запишись, чтобы не чинить то, что можно не ломать.
Запись, подарки и скидка — только для своих. Лови шанс — кликай на регистрацию: https://tglink.io/fffa463834a3
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFJ1VxwA
Forwarded from Библиотека задач по Java | тесты, код, задания
Вы случайно сделали коммит с ошибкой. Как быстро изменить коммит, не создавая новый?
Anonymous Quiz
48%
git commit --amend
22%
git reset HEAD~1
12%
git revert HEAD
3%
git stash
14%
Посмотреть ответ
👍8🔥5❤1
⚙️ Spring Boot + Flyway: пошаговая настройка миграций базы данных
Когда проект живёт дольше полугода — ручное обновление схемы БД превращается в хаос.
Flyway решает эту проблему: управляет версионированием схемы и миграциями через SQL-скрипты прямо из вашего приложения.
Для настройки:
1️⃣ Добавляем зависимость
Также добавляет драйвер для вашей БД.
2️⃣ Создаём структуру для миграций
По умолчанию Flyway ищет скрипты в:
Пример:
Имена файлов важны — Flyway сортирует их по версии (V1, V2, ...).
3️⃣ Пример SQL-миграции
4️⃣ Настройки Flyway в application.yml
Flyway выполнит все миграции, которых ещё нет в таблице flyway_schema_history.
5️⃣ Команды и интеграция
▪️ Локально:
или просто запустите Spring Boot — миграции применятся автоматически.
▪️ Для CI/CD:
— Используйте flyway:validate перед деплоем.
— Добавляйте новые SQL-файлы при изменении схемы.
— Не редактируйте старые версии (они уже зафиксированы).
6️⃣ Полезные практики
— Используйте R__-скрипты (repeatable migrations) для справочников, триггеров, процедур.
— Версионируйте миграции в Git вместе с кодом.
— Проверяйте миграции на чистой базе перед мержем.
— Совмещайте с Testcontainers для автоматической проверки миграций в CI.
💡 Преимущество Flyway — прозрачная история эволюции базы. Можно воспроизвести схему любой версии, не ломая прод.
🐸 Библиотека джависта
#Enterprise
Когда проект живёт дольше полугода — ручное обновление схемы БД превращается в хаос.
Flyway решает эту проблему: управляет версионированием схемы и миграциями через SQL-скрипты прямо из вашего приложения.
Для настройки:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
ИЛИ
implementation("org.flywaydb:flyway-core")
Также добавляет драйвер для вашей БД.
По умолчанию Flyway ищет скрипты в:
src/main/resources/db/migration/
Пример:
db/migration/
├─ V1__init_schema.sql
├─ V2__add_users_table.sql
└─ V3__add_index_email.sql
Имена файлов важны — Flyway сортирует их по версии (V1, V2, ...).
— V1__init_schema.sql
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
— V2__add_users_table.sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT now()
);
spring:
datasource:
url: jdbc:postgresql://localhost:5432/app
username: app
password: secret
flyway:
enabled: true
baseline-on-migrate: true
locations: classpath:db/migration
Flyway выполнит все миграции, которых ещё нет в таблице flyway_schema_history.
▪️ Локально:
./mvnw flyway:migrate
или просто запустите Spring Boot — миграции применятся автоматически.
▪️ Для CI/CD:
— Используйте flyway:validate перед деплоем.
— Добавляйте новые SQL-файлы при изменении схемы.
— Не редактируйте старые версии (они уже зафиксированы).
— Используйте R__-скрипты (repeatable migrations) для справочников, триггеров, процедур.
— Версионируйте миграции в Git вместе с кодом.
— Проверяйте миграции на чистой базе перед мержем.
— Совмещайте с Testcontainers для автоматической проверки миграций в CI.
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3👏1
Дана строка, нужно определить, является ли она палиндромом.
Палиндром — это строка, которая читается одинаково слева направо и справа налево. Пробелы, знаки препинания и регистр букв при этом не учитываются.
— Необходимо учитывать только буквенные символы, игнорируя пробелы и знаки препинания.
— Сравнение должно быть нечувствительным к регистру.
▪️ Решение:
Эффективное реализация может включать
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22👍3❤2🔥1
🧪 JUnit 6 — уже почти
JUnit официально двигается дальше: версия 6 уже в RC3. Минимальная поддерживаемая Java теперь — 17, архитектура переосмыслена, и наконец-то все модули (Platform, Jupiter, Vintage) получили единый номер версии.
Но если честно — революции не случилось. Да, API заметно подчистили, выкинули старые модули вроде junit-platform-runner, добавили встроенную интеграцию с Java Flight Recorder и улучшили поддержку Kotlin (suspend-тесты теперь можно писать нативно).
Однако принципиально новых возможностей тестирования — почти нет. Это скорее эволюция и техдолг-чистка, чем что-то, что заставит переписать ваши тесты завтра.
🔗 Полные release notes
💬 Оставляйте ваше мнение в комменты
🐸 Библиотека джависта
#News
JUnit официально двигается дальше: версия 6 уже в RC3. Минимальная поддерживаемая Java теперь — 17, архитектура переосмыслена, и наконец-то все модули (Platform, Jupiter, Vintage) получили единый номер версии.
Но если честно — революции не случилось. Да, API заметно подчистили, выкинули старые модули вроде junit-platform-runner, добавили встроенную интеграцию с Java Flight Recorder и улучшили поддержку Kotlin (suspend-тесты теперь можно писать нативно).
Однако принципиально новых возможностей тестирования — почти нет. Это скорее эволюция и техдолг-чистка, чем что-то, что заставит переписать ваши тесты завтра.
#News
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5🔥2🥱2
🤓 Пока Python стал π-thon, ты можешь стать Data Scientist'ом
В Proglib.academy стартует экспресс-курс «Математика для Data Science»: 10 живых вебинаров, практика на Python и спикеры из ВШЭ, Яндекс Практикума и Wildberries, которые всё разложат по полочкам.
В программе:
🔹 матан, линал, теория вероятностей;
🔹 3 практических проекта + викторина с розыгрышем TG Premium;
🔹 поддержка преподавателей и чат с единомышленниками;
🎁 Оплати курс до 19 октября — получи курс по базовой математике в подарок.
🗓️ Старт — 6 ноября
👉 Записаться на курс
В Proglib.academy стартует экспресс-курс «Математика для Data Science»: 10 живых вебинаров, практика на Python и спикеры из ВШЭ, Яндекс Практикума и Wildberries, которые всё разложат по полочкам.
В программе:
🔹 матан, линал, теория вероятностей;
🔹 3 практических проекта + викторина с розыгрышем TG Premium;
🔹 поддержка преподавателей и чат с единомышленниками;
🎁 Оплати курс до 19 октября — получи курс по базовой математике в подарок.
🗓️ Старт — 6 ноября
👉 Записаться на курс
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁37👍7👏2🔥1💯1
🧐 Хочешь в Data Science, но не знаешь, с чего начать?
Пройди короткий тест по математике — бот покажет, насколько ты готов к переходу и что стоит подтянуть.
👉 Пройти тест
Пройди короткий тест по математике — бот покажет, насколько ты готов к переходу и что стоит подтянуть.
Всего пару минут — и ты поймёшь, куда двигаться дальше.
👉 Пройти тест