Создаём HTTP-сервер на Java NIO
Привет, Хабр!
В этой статье создадим HTTP-сервер на чистом Java NIO, без всяких Spring Boot, Jetty и прочих фреймворков. Будем разбираться, как работает неблокирующее I/O, что такое Selector, SocketChannel, и как заставить сервер обрабатывать тысячи запросов одновременно без запуска тысяч потоков.
Читать: https://habr.com/ru/companies/otus/articles/889062/?utm_campaign=889062
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
В этой статье создадим HTTP-сервер на чистом Java NIO, без всяких Spring Boot, Jetty и прочих фреймворков. Будем разбираться, как работает неблокирующее I/O, что такое Selector, SocketChannel, и как заставить сервер обрабатывать тысячи запросов одновременно без запуска тысяч потоков.
Читать: https://habr.com/ru/companies/otus/articles/889062/?utm_campaign=889062
@a_cup_of_java | Другие наши каналы
👍1
Java News Roundup: Jakarta NoSQL 1.0, Spring 7.0-M3, Maven 4.0-RC3, LangChain4j 1.0-beta2
This week's Java roundup for March 10th, 2025 features news highlighting: OpenJDK JEPs targeted and proposed to target for JDK 25; the release of Jakarta NoSQL 1.0; the third milestone release of Spring Framework 7.0; the third release candidate of Maven 4.0; and the second beta release of LangChain4j 1.0.
By Michael Redlich
Read: https://www.infoq.com/news/2025/03/java-news-roundup-mar10-2025/
@a_cup_of_java | Другие наши каналы
This week's Java roundup for March 10th, 2025 features news highlighting: OpenJDK JEPs targeted and proposed to target for JDK 25; the release of Jakarta NoSQL 1.0; the third milestone release of Spring Framework 7.0; the third release candidate of Maven 4.0; and the second beta release of LangChain4j 1.0.
By Michael Redlich
Read: https://www.infoq.com/news/2025/03/java-news-roundup-mar10-2025/
@a_cup_of_java | Другие наши каналы
👍2
TrueSql – заново учимся ходить в базу данных. Часть 3 – транзакции и соединения
Принято считать, что транзакции, сессии и контекст это что-то сложное. Но в TrueSql работать с транзакциями очень просто и прозрачно, а понятий "сессия" и "контекст" просто не существует. Сегодня рассказываем как работать с транзакциями и соединениями в TrueSql. Быстро объясняем внутреннее устройство.
Читать: https://habr.com/ru/articles/888158/?utm_campaign=888158
@a_cup_of_java | Другие наши каналы
Принято считать, что транзакции, сессии и контекст это что-то сложное. Но в TrueSql работать с транзакциями очень просто и прозрачно, а понятий "сессия" и "контекст" просто не существует. Сегодня рассказываем как работать с транзакциями и соединениями в TrueSql. Быстро объясняем внутреннее устройство.
Читать: https://habr.com/ru/articles/888158/?utm_campaign=888158
@a_cup_of_java | Другие наши каналы
Идеи ничего не стоят
Команда Spring АйО перевела статью одного из создателей Hibernate, в которой он объясняет, почему ему часто приходится отвергать новые и хорошие идеи, и почему это на самом деле не означает, что он является врагом всего нового.
Читать: https://habr.com/ru/companies/spring_aio/articles/891436/?utm_campaign=891436
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью одного из создателей Hibernate, в которой он объясняет, почему ему часто приходится отвергать новые и хорошие идеи, и почему это на самом деле не означает, что он является врагом всего нового.
Читать: https://habr.com/ru/companies/spring_aio/articles/891436/?utm_campaign=891436
@a_cup_of_java | Другие наши каналы
Свежая вакансия в Gehtsoft
Gehtsoft — компания по разработке ПО — ищет Tech Lead Java Developer.
Чем вы будете заниматься:
— разработкой и тестированием новых функций, — устранением причин инцидентов, поддержкой инфраструктуры;
— ускорением выхода продуктов на рынок и повышением их ценности для клиентов;
— снижением технического долга.
Где: удалённо
Опыт: 4+ лет
Вакансия и как отправить отклик: https://tprg.ru/Fm7Y
#вакансии #работа
Gehtsoft — компания по разработке ПО — ищет Tech Lead Java Developer.
Чем вы будете заниматься:
— разработкой и тестированием новых функций, — устранением причин инцидентов, поддержкой инфраструктуры;
— ускорением выхода продуктов на рынок и повышением их ценности для клиентов;
— снижением технического долга.
Где: удалённо
Опыт: 4+ лет
Вакансия и как отправить отклик: https://tprg.ru/Fm7Y
#вакансии #работа
Podcast: Building LinkedIn’s Resilient Data Storage: A Deep Dive into Derived Data Storage with Felix GV
In this podcast, Felix GV, Principal Staff Engineer at LinkedIn, discusses how to create and operate planet-scale data storage solutions for derived data. When it’s time to build a new system, how do you decide on the pieces that must be fitted to ensure a resilient operating system?
By Felix GV
Read: https://www.infoq.com/podcasts/building-linkedin-resilient-data-storage/
@a_cup_of_java | Другие наши каналы
In this podcast, Felix GV, Principal Staff Engineer at LinkedIn, discusses how to create and operate planet-scale data storage solutions for derived data. When it’s time to build a new system, how do you decide on the pieces that must be fitted to ensure a resilient operating system?
By Felix GV
Read: https://www.infoq.com/podcasts/building-linkedin-resilient-data-storage/
@a_cup_of_java | Другие наши каналы
👍1
Как читать сообщения, если никто из брокеров не предоставил удобный интерфейс
Пишите вы себе EDA на основе Apache Kafka, и ваши сервисы тщательно логируют все свои действия, процесс отлажен и работает годами. Вдруг один из сервисов отчитался в логах, что отправил событие в брокер, но другой по какой-то его не прочитал. Как понять, кто виноват?
Как правило, брокер сообщений между сервисами – черная коробка, которая работает, что называется «As Is». Разработчики подключают зависимости, вешают аннотации консюмеров и продюсеров, оно заводится и все рады. Но что они там подключили и как это работает никто не видит.
Так давайте же посмотрим, как мы можем открыть этот чёрный ящик на примере наиболее популярных брокеров сообщений.
Читать: https://habr.com/ru/companies/axenix/articles/886042/?utm_campaign=886042
@a_cup_of_java | Другие наши каналы
Пишите вы себе EDA на основе Apache Kafka, и ваши сервисы тщательно логируют все свои действия, процесс отлажен и работает годами. Вдруг один из сервисов отчитался в логах, что отправил событие в брокер, но другой по какой-то его не прочитал. Как понять, кто виноват?
Как правило, брокер сообщений между сервисами – черная коробка, которая работает, что называется «As Is». Разработчики подключают зависимости, вешают аннотации консюмеров и продюсеров, оно заводится и все рады. Но что они там подключили и как это работает никто не видит.
Так давайте же посмотрим, как мы можем открыть этот чёрный ящик на примере наиболее популярных брокеров сообщений.
Читать: https://habr.com/ru/companies/axenix/articles/886042/?utm_campaign=886042
@a_cup_of_java | Другие наши каналы
Project Leyden Ships Third Option for Faster Application Start with JEP 483 in Java 24
In Java 24, Project Leyden’s JEP 483, "Ahead-of-Time Class Loading & Linking", starts Java applications like Spring PetClinic up to 40% faster without code changes or new application constraints. It needs a training run to build a cache file that ships with the application. With GraalVM Native Image and CRaC, the startup is 95-99% faster but faces more constraints. Leyden plans more improvements.
By Karsten Silz
Read: https://www.infoq.com/news/2025/03/java-24-leyden-ships/
@a_cup_of_java | Другие наши каналы
In Java 24, Project Leyden’s JEP 483, "Ahead-of-Time Class Loading & Linking", starts Java applications like Spring PetClinic up to 40% faster without code changes or new application constraints. It needs a training run to build a cache file that ships with the application. With GraalVM Native Image and CRaC, the startup is 95-99% faster but faces more constraints. Leyden plans more improvements.
By Karsten Silz
Read: https://www.infoq.com/news/2025/03/java-24-leyden-ships/
@a_cup_of_java | Другие наши каналы
Автоматизация деплоя: из Bitbucket через Jenkins в MicroK8s — опыт финтех-разработчика
Всем привет! Я — Java-разработчик с пятилетним опытом в финтехе, и сегодня я расскажу, как настроить CI/CD для деплоя Spring Boot приложения из Bitbucket через Jenkins в MicroK8s. Это не просто теория — я поделюсь реальным кейсом, разберу ошибки, с которыми столкнулся, и дам рабочий код. Если вы хотите автоматизировать деплой и не наступать на грабли — поехали!
Представьте: у вас есть микросервис на Spring Boot, который нужно быстро и без ошибок доставить в продакшен. Ручной деплой отнимает время, а команда требует стабильности. Я решил эту задачу с помощью Bitbucket, Jenkins и MicroK8s, но путь оказался не таким гладким, как хотелось бы. Проблемы с аутентификацией, конфликты портов и настройка окружения заставили меня попотеть. Как я справился? Об этом — в статье.
CI/CD (Continuous Integration/Continuous Deployment) — это must-have для современных разработчиков. Автоматизация сборки, тестирования и деплоя приложений экономит время, снижает вероятность ошибок и ускоряет доставку кода до продакшена. В этой статье мы разберем, как настроить полноценный CI/CD-пайплайн для Spring Boot приложения, используя связку Bitbucket, Jenkins и MicroK8s.
Читать: https://habr.com/ru/articles/891844/?utm_campaign=891844
@a_cup_of_java | Другие наши каналы
Всем привет! Я — Java-разработчик с пятилетним опытом в финтехе, и сегодня я расскажу, как настроить CI/CD для деплоя Spring Boot приложения из Bitbucket через Jenkins в MicroK8s. Это не просто теория — я поделюсь реальным кейсом, разберу ошибки, с которыми столкнулся, и дам рабочий код. Если вы хотите автоматизировать деплой и не наступать на грабли — поехали!
Представьте: у вас есть микросервис на Spring Boot, который нужно быстро и без ошибок доставить в продакшен. Ручной деплой отнимает время, а команда требует стабильности. Я решил эту задачу с помощью Bitbucket, Jenkins и MicroK8s, но путь оказался не таким гладким, как хотелось бы. Проблемы с аутентификацией, конфликты портов и настройка окружения заставили меня попотеть. Как я справился? Об этом — в статье.
CI/CD (Continuous Integration/Continuous Deployment) — это must-have для современных разработчиков. Автоматизация сборки, тестирования и деплоя приложений экономит время, снижает вероятность ошибок и ускоряет доставку кода до продакшена. В этой статье мы разберем, как настроить полноценный CI/CD-пайплайн для Spring Boot приложения, используя связку Bitbucket, Jenkins и MicroK8s.
Читать: https://habr.com/ru/articles/891844/?utm_campaign=891844
@a_cup_of_java | Другие наши каналы
Как применять happens-before на практике и в чем основные преимущества этой концепции
Основные правила применения концепции happens-before
Читать: «Как применять happens-before на практике и в чем основные преимущества этой концепции»
@a_cup_of_java | Другие наши каналы
Основные правила применения концепции happens-before
Читать: «Как применять happens-before на практике и в чем основные преимущества этой концепции»
@a_cup_of_java | Другие наши каналы
❤3
Java 24! Спецвыпуск Java Digest
Всем привет! 👋 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин, Константин и Роман. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Сегодня вышла Java 24! Давайте посмотрим, что нового она принесла нам!
Скорее читать спецвыпуск!
Читать: https://habr.com/ru/companies/tbank/articles/891798/?utm_campaign=891798
@a_cup_of_java | Другие наши каналы
Всем привет! 👋 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин, Константин и Роман. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Сегодня вышла Java 24! Давайте посмотрим, что нового она принесла нам!
Скорее читать спецвыпуск!
Читать: https://habr.com/ru/companies/tbank/articles/891798/?utm_campaign=891798
@a_cup_of_java | Другие наши каналы
👍3
Новый релиз Java 24: что нового
Oracle представила Java 24, не являющуюся LTS-версией. Главные новинки: экспериментальные функции Generational Shenandoah и Compact Object Headers. Java 24 ускоряет запуск приложений и расширяет возможности API Stream. Подробности о новых функциях и ожиданиях от JDK 25 читайте далее.
Подробности: https://www.infoq.com/news/2025/03/java24-released/
#en
@a_cup_of_java | Другие наши каналы
Oracle представила Java 24, не являющуюся LTS-версией. Главные новинки: экспериментальные функции Generational Shenandoah и Compact Object Headers. Java 24 ускоряет запуск приложений и расширяет возможности API Stream. Подробности о новых функциях и ожиданиях от JDK 25 читайте далее.
Подробности: https://www.infoq.com/news/2025/03/java24-released/
#en
@a_cup_of_java | Другие наши каналы
👍4
Функциональное программирование в Java
Привет, Хабр!
В этой статье я опишу функциональное программирование и расскажу, как оно реализовано в Java. Помимо вопроса «что это?», я постараюсь ответить на вопросы «зачем?», «когда?» и «как?» это используется.
Читать: https://habr.com/ru/companies/reksoft/articles/892242/?utm_campaign=892242
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
В этой статье я опишу функциональное программирование и расскажу, как оно реализовано в Java. Помимо вопроса «что это?», я постараюсь ответить на вопросы «зачем?», «когда?» и «как?» это используется.
Читать: https://habr.com/ru/companies/reksoft/articles/892242/?utm_campaign=892242
@a_cup_of_java | Другие наши каналы
👍4
Forwarded from Типичный программист
Редакция Tproger запустила свой канал для авторов, где учат писать лучше. Если давно хотели попробовать себя в IT-журналистике — самое время начать.
Почему As Code — это не просто тренд, а новая реальность разработки
В статье Максим Морев расскажет, что такое подход As Code, как он развивался и почему он нужен компаниям.
Читать: «Почему As Code — это не просто тренд, а новая реальность разработки»
@a_cup_of_java | Другие наши каналы
В статье Максим Морев расскажет, что такое подход As Code, как он развивался и почему он нужен компаниям.
Читать: «Почему As Code — это не просто тренд, а новая реальность разработки»
@a_cup_of_java | Другие наши каналы
👍1
Шатаем ActiveMQ
Пожалуйста обновите ActiveMQ после прочтения этой статьи. Рассказ об одной известной атаке на инфраструктуру крупных ИТ-проектов — брокер сообщений Apache ActiveMQ.
Читать: https://habr.com/ru/articles/892450/?utm_campaign=892450
@a_cup_of_java | Другие наши каналы
Пожалуйста обновите ActiveMQ после прочтения этой статьи. Рассказ об одной известной атаке на инфраструктуру крупных ИТ-проектов — брокер сообщений Apache ActiveMQ.
Читать: https://habr.com/ru/articles/892450/?utm_campaign=892450
@a_cup_of_java | Другие наши каналы
❤2
Регистрация по взрослому: @AuthenticationalPrinciple, JWT, UserDetails
Казалось бы, что может быть проще создания регистрации и логика: взял пароль, взял username, сохранил в базу, когда пользователь заходит, просто сравниваешь значения с теми, что лежат в базе.
А потом кто-то взламывает доступ к твоей базе и продает строчку за рубль. А если у тебя еще и приложение, где у пользователя есть информация о банковском счете, а у тебя пароли лежат незашифрованные в базе.
Сегодня я покажу как решить эту проблему.
Читать: https://habr.com/ru/articles/892480/?utm_campaign=892480
@a_cup_of_java | Другие наши каналы
Казалось бы, что может быть проще создания регистрации и логика: взял пароль, взял username, сохранил в базу, когда пользователь заходит, просто сравниваешь значения с теми, что лежат в базе.
А потом кто-то взламывает доступ к твоей базе и продает строчку за рубль. А если у тебя еще и приложение, где у пользователя есть информация о банковском счете, а у тебя пароли лежат незашифрованные в базе.
Сегодня я покажу как решить эту проблему.
Читать: https://habr.com/ru/articles/892480/?utm_campaign=892480
@a_cup_of_java | Другие наши каналы
Неблокирующий вызов внешнего сервиса в процессе
Довольно часто из процесса приходится обращаться по API к различным внешним сервисам. По сути, это стандартный сценарий оркестрации систем или даже микросервисов (пардон за модное слово). На BPMN диаграмме это выглядит просто и логично – постучались куда-то по API, получили ответ и перешли к следующей задаче. Для моделей аналитического уровня это нормально.
Однако, переходя к исполняемой модели, надо учитывать, что внешний сервис может быть недоступен или просто отвечает очень небыстро. Что происходит с процессом в это время?
Читать: https://habr.com/ru/companies/haulmont/articles/892644/?utm_campaign=892644
@a_cup_of_java | Другие наши каналы
Довольно часто из процесса приходится обращаться по API к различным внешним сервисам. По сути, это стандартный сценарий оркестрации систем или даже микросервисов (пардон за модное слово). На BPMN диаграмме это выглядит просто и логично – постучались куда-то по API, получили ответ и перешли к следующей задаче. Для моделей аналитического уровня это нормально.
Однако, переходя к исполняемой модели, надо учитывать, что внешний сервис может быть недоступен или просто отвечает очень небыстро. Что происходит с процессом в это время?
Читать: https://habr.com/ru/companies/haulmont/articles/892644/?utm_campaign=892644
@a_cup_of_java | Другие наши каналы
🫡1
Hexagonal Architecture: Почему старая добрая многослойка больше не работает?
Что такое Hexagonal Architecture. Показываем основные возможности применения гексагональной архитектуры в программировании. Рассматриваем пошаговую инструкцию и основные нюансы
Читать: «Hexagonal Architecture: Почему старая добрая многослойка больше не работает?»
@a_cup_of_java | Другие наши каналы
Что такое Hexagonal Architecture. Показываем основные возможности применения гексагональной архитектуры в программировании. Рассматриваем пошаговую инструкцию и основные нюансы
Читать: «Hexagonal Architecture: Почему старая добрая многослойка больше не работает?»
@a_cup_of_java | Другие наши каналы
Эффективный подход к тестированию веб-контроллеров в Spring Boot приложениях
Команда Spring АйО перевела статью о том, как правильно подходить к тестированию веб-контроллеров в Spring Boot приложениях, чтобы не делать лишнюю работу, но и не упускать важных аспектов процесса тестирования.
Читать: https://habr.com/ru/companies/spring_aio/articles/892194/?utm_campaign=892194
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью о том, как правильно подходить к тестированию веб-контроллеров в Spring Boot приложениях, чтобы не делать лишнюю работу, но и не упускать важных аспектов процесса тестирования.
Читать: https://habr.com/ru/companies/spring_aio/articles/892194/?utm_campaign=892194
@a_cup_of_java | Другие наши каналы
На страже производительности Spring Boot приложений: Профилирование и оптимизация
Spring Boot широко используется для создания масштабируемых и эффективных Java‑приложений. Однако по мере усложнения или масштабирования вашего приложения могут начать проявляться узкие места производительности, что приводит к замедлению времени отклика и увеличению потребления ресурсов. Выявление и устранение этих узких мест является важнейшей составляющей процесса оптимизации производительности вашего приложения, особенно в производственных средах.
В этой статье мы подробно рассмотрим, как можно оптимизировать производительность Spring Boot приложений, используя базовые методы профилирования и тюнинга. Особое внимание будет уделено таким аспектам, как профилирование процессора и памяти, оптимизация сборки мусора и тюнинг виртуальной машины Java (JVM).
Читать: https://habr.com/ru/companies/otus/articles/892716/?utm_campaign=892716
@a_cup_of_java | Другие наши каналы
Spring Boot широко используется для создания масштабируемых и эффективных Java‑приложений. Однако по мере усложнения или масштабирования вашего приложения могут начать проявляться узкие места производительности, что приводит к замедлению времени отклика и увеличению потребления ресурсов. Выявление и устранение этих узких мест является важнейшей составляющей процесса оптимизации производительности вашего приложения, особенно в производственных средах.
В этой статье мы подробно рассмотрим, как можно оптимизировать производительность Spring Boot приложений, используя базовые методы профилирования и тюнинга. Особое внимание будет уделено таким аспектам, как профилирование процессора и памяти, оптимизация сборки мусора и тюнинг виртуальной машины Java (JVM).
Читать: https://habr.com/ru/companies/otus/articles/892716/?utm_campaign=892716
@a_cup_of_java | Другие наши каналы