Почему памятники надо ставить тем, кто автоматизирует MS Word
DocxKtm — это Kotlin DSL-обёртка над docx4j для автоматизации Word-документов.
Умеет: создавать документы «с нуля», вставлять текст, картинки, таблицы, колонтитулы, нумерацию страниц.
Поддерживает шаблоны с подстановками и логикой (через встроенный движок на базе MVEL2). По функциональности близко к Python-библиотеке docxtpl, но на JVM и с выразительностью Kotlin.
Если вам надоело вручную генерировать документы в Word — это может сэкономить кучу времени и нервов.
Внутри статьи - моя история создания этой библиотеки.
Читать: https://habr.com/ru/articles/949036/?utm_campaign=949036
@a_cup_of_java | Другие наши каналы
DocxKtm — это Kotlin DSL-обёртка над docx4j для автоматизации Word-документов.
Умеет: создавать документы «с нуля», вставлять текст, картинки, таблицы, колонтитулы, нумерацию страниц.
Поддерживает шаблоны с подстановками и логикой (через встроенный движок на базе MVEL2). По функциональности близко к Python-библиотеке docxtpl, но на JVM и с выразительностью Kotlin.
Если вам надоело вручную генерировать документы в Word — это может сэкономить кучу времени и нервов.
Внутри статьи - моя история создания этой библиотеки.
Читать: https://habr.com/ru/articles/949036/?utm_campaign=949036
@a_cup_of_java | Другие наши каналы
👍2
Как мы внедряли Dynatrace в банке для мониторинга Kafka, БД и Java/C++ сервисов
Я работаю в одном крупном российском банке, где занимаюсь разработкой распределённых систем. За последние несколько лет наша архитектура заметно усложнилась — часть сервисов работает в OpenShift, часть на виртуалках, а кое-что до сих пор крутится на «железе».
Основная боль заключалась в том, что у нас не было единой системы мониторинга. Метрики мы собирали из разных источников: где-то стоял Prometheus, где-то — Zabbix, в Kafka писали свои дашборды, а для C++ приложений вообще не было нормального мониторинга. Каждый инцидент превращался в расследование: мы переключались между тремя-четырьмя консолями, сверяли логи, писали временные скрипты для выгрузки метрик. В среднем на поиск корневой причины (root cause analysis) у нас уходило от нескольких часов до пары дней.
Читать: https://habr.com/ru/articles/949106/?utm_campaign=949106
@a_cup_of_java | Другие наши каналы
Я работаю в одном крупном российском банке, где занимаюсь разработкой распределённых систем. За последние несколько лет наша архитектура заметно усложнилась — часть сервисов работает в OpenShift, часть на виртуалках, а кое-что до сих пор крутится на «железе».
Основная боль заключалась в том, что у нас не было единой системы мониторинга. Метрики мы собирали из разных источников: где-то стоял Prometheus, где-то — Zabbix, в Kafka писали свои дашборды, а для C++ приложений вообще не было нормального мониторинга. Каждый инцидент превращался в расследование: мы переключались между тремя-четырьмя консолями, сверяли логи, писали временные скрипты для выгрузки метрик. В среднем на поиск корневой причины (root cause analysis) у нас уходило от нескольких часов до пары дней.
Читать: https://habr.com/ru/articles/949106/?utm_campaign=949106
@a_cup_of_java | Другие наши каналы
Весенние обновления Spring: релизы и безопасность
Вышли третьи milestone-версии Spring Boot, Security, GraphQL, Integration и других модулей с новыми функциями и улучшениями. Также закрыты важные уязвимости в Spring Framework и Security. Подробнее об изменениях ищите в официальных заметках.
Подробности: https://www.infoq.com/news/2025/09/spring-news-roundup-sep15-2025/
#en
@a_cup_of_java | Другие наши каналы
Вышли третьи milestone-версии Spring Boot, Security, GraphQL, Integration и других модулей с новыми функциями и улучшениями. Также закрыты важные уязвимости в Spring Framework и Security. Подробнее об изменениях ищите в официальных заметках.
Подробности: https://www.infoq.com/news/2025/09/spring-news-roundup-sep15-2025/
#en
@a_cup_of_java | Другие наши каналы
Оптимизация производительности запросов в OLAP‑СУБД: цели, методы и практика
Ниже — выверенная и локализованная на русский язык версия текста об оптимизации производительности СУБД. Термины без устойчивых русских эквивалентов сохранены на английском с первым пояснением.
Читать: https://habr.com/ru/articles/949338/?utm_campaign=949338
@a_cup_of_java | Другие наши каналы
Ниже — выверенная и локализованная на русский язык версия текста об оптимизации производительности СУБД. Термины без устойчивых русских эквивалентов сохранены на английском с первым пояснением.
Читать: https://habr.com/ru/articles/949338/?utm_campaign=949338
@a_cup_of_java | Другие наши каналы
🆒2
Как Web3 меняет разработку веб-приложений: от серверов к блокчейну
Поговорили с экспертом и узнали, где Web3 даёт практическую пользу разработчикам: сравниваем подходы, исследуем рынок вакансий и особенности новой реальности.
Читать: «Как Web3 меняет разработку веб-приложений: от серверов к блокчейну»
@a_cup_of_java | Другие наши каналы
Поговорили с экспертом и узнали, где Web3 даёт практическую пользу разработчикам: сравниваем подходы, исследуем рынок вакансий и особенности новой реальности.
Читать: «Как Web3 меняет разработку веб-приложений: от серверов к блокчейну»
@a_cup_of_java | Другие наши каналы
Новое в мире Java: выпущен JDK 25 с 18 новыми функциями, обновлен GraalVM для JDK 25, а Oracle объявил о выводе GraalVM из релизного цикла Java. Также вышли обновления для LangChain4j, Gradle, JBang и других важных инструментов. Подробнее в обзоре.
Подробности: https://www.infoq.com/news/2025/09/java-news-roundup-sep15-2025/
#en
@a_cup_of_java | Другие наши каналы
Подробности: https://www.infoq.com/news/2025/09/java-news-roundup-sep15-2025/
#en
@a_cup_of_java | Другие наши каналы
⚡1
Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом
Привет! Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.
Читать: https://habr.com/ru/companies/yandex/articles/948570/?utm_campaign=948570
@a_cup_of_java | Другие наши каналы
Привет! Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.
Читать: https://habr.com/ru/companies/yandex/articles/948570/?utm_campaign=948570
@a_cup_of_java | Другие наши каналы
🔥2
Утилита Find и регулярные выражения
Про find можно писать много и долго, а если еще перевести мануал и снабдить каждый параметр развернутыми примерами, то материала получится на целую книгу. Пока эту книгу никто не написал, я решил рассказать о некоторых особенностях работы утилиты с регулярками и другими функциями.
Регулярки освоить нетрудно. Буквально за пару часов можно получить почти средний уровень владения и научиться читать и писать выражения для поиска ip-адресов, e-mail, html-тегов, телефонных номеров, дат и прочих несложных конструкций. Я думаю, все это вам знакомо, но на всякий случай в конце статьи я добавил несколько ссылок для изучения.
Я уже прошел «курс молодого бойца» по регуляркам, написал свою, вставил в find, и она не сработала. Но пойдем по порядку.
Читать: https://habr.com/ru/companies/lanit/articles/945774/?utm_campaign=945774
@a_cup_of_java | Другие наши каналы
Про find можно писать много и долго, а если еще перевести мануал и снабдить каждый параметр развернутыми примерами, то материала получится на целую книгу. Пока эту книгу никто не написал, я решил рассказать о некоторых особенностях работы утилиты с регулярками и другими функциями.
Регулярки освоить нетрудно. Буквально за пару часов можно получить почти средний уровень владения и научиться читать и писать выражения для поиска ip-адресов, e-mail, html-тегов, телефонных номеров, дат и прочих несложных конструкций. Я думаю, все это вам знакомо, но на всякий случай в конце статьи я добавил несколько ссылок для изучения.
Я уже прошел «курс молодого бойца» по регуляркам, написал свою, вставил в find, и она не сработала. Но пойдем по порядку.
Читать: https://habr.com/ru/companies/lanit/articles/945774/?utm_campaign=945774
@a_cup_of_java | Другие наши каналы
❤2🔥2
10 VSCode расширений, которые реально повышают продуктивность
Топ-10 расширений VSCode для повышения продуктивности: форматирование, тестирование API, управление проектами и многое другое. Ускорьте свою разработку с лучшими инструментами.
Читать: «10 VSCode расширений, которые реально повышают продуктивность»
@a_cup_of_java | Другие наши каналы
Топ-10 расширений VSCode для повышения продуктивности: форматирование, тестирование API, управление проектами и многое другое. Ускорьте свою разработку с лучшими инструментами.
Читать: «10 VSCode расширений, которые реально повышают продуктивность»
@a_cup_of_java | Другие наши каналы
❤2
JVM: Барьеры, которые подходят любому GC
В новом переводе от команды Spring АйО рассказывается, как сократить время разогрева JVM с помощью ahead-of-time компиляции (в рамках Project Leyden), а также объясняется, почему традиционные GC-барьеры мешают гибкому выбору сборщика мусора.
Статья содержит интересное решение — GC-независимые барьеры загрузки, которые можно «пропатчить» в рантайме под конкретный GC, обеспечивая совместимость без переписывания кода.
Читать: https://habr.com/ru/companies/spring_aio/articles/949710/?utm_campaign=949710
@a_cup_of_java | Другие наши каналы
В новом переводе от команды Spring АйО рассказывается, как сократить время разогрева JVM с помощью ahead-of-time компиляции (в рамках Project Leyden), а также объясняется, почему традиционные GC-барьеры мешают гибкому выбору сборщика мусора.
Статья содержит интересное решение — GC-независимые барьеры загрузки, которые можно «пропатчить» в рантайме под конкретный GC, обеспечивая совместимость без переписывания кода.
Читать: https://habr.com/ru/companies/spring_aio/articles/949710/?utm_campaign=949710
@a_cup_of_java | Другие наши каналы
🔥3
Как работает функция map() в Java 8: с примерами преобразования списков. В статье объясняется, как метод map() из Stream API позволяет применять функцию к каждому элементу коллекции, упрощая обработку данных и заменяя классические циклы. Стримы и коллекции в Java: разбор использования static import для упрощения записи методов, таких как collect(toList()). Обсуждаются примеры и частые вопросы по работе с потоками в Java 8, а также полезные курсы и ресурсы для углубленного изучения. Вопросы для интервью по Java и Spring: от Core Java и SQL до Spring MVC и микросервисов. В статье представлены ключевые темы и аннотации для подготовки к собеседованиям. Полезный ресурс для тех, кто хочет систематизировать знания и успешно пройти интервью.
Подробности: http://www.java67.com/2015/01/java-8-map-function-examples.html
#en
@a_cup_of_java | Другие наши каналы
Подробности: http://www.java67.com/2015/01/java-8-map-function-examples.html
#en
@a_cup_of_java | Другие наши каналы
❤1
Как преобразовать ArrayList в Map в Java 8
Статья объясняет, как с помощью Stream API превратить ArrayList в HashMap или LinkedHashMap, учитывая порядок элементов и дубликаты ключей. Полезные советы помогут новичкам и опытным разработчикам работать с коллекциями эффективнее.
Подробности: http://www.java67.com/2017/10/java-8-convert-arraylist-to-hashmap-or.html
#en
@a_cup_of_java | Другие наши каналы
Статья объясняет, как с помощью Stream API превратить ArrayList в HashMap или LinkedHashMap, учитывая порядок элементов и дубликаты ключей. Полезные советы помогут новичкам и опытным разработчикам работать с коллекциями эффективнее.
Подробности: http://www.java67.com/2017/10/java-8-convert-arraylist-to-hashmap-or.html
#en
@a_cup_of_java | Другие наши каналы
Как отлаживать Java 8 Stream: метод peek() для понимания пайплайна
Статья подробно объясняет, как с помощью метода peek() можно проследить промежуточные данные в Stream, понять ленивое вычисление и корректно отлаживать цепочку операций фильтрации и преобразования. Лучшие курсы и полезные материалы для изучения программирования собраны в одном месте. От Java и Python до DevOps и машинного обучения — найдите подходящий курс и прокачайте свои навыки с помощью проверенных ресурсов и подробных гайдов. Архив блогов за годы — обзор публикаций
В статье представлен подробный архив блогов с 2012 по 2025 годы, включая разбивку по месяцам и количеству публикаций. Это помогает проследить активность и тематику на протяжении времени. Интересно для тех, кто изучает динамику контента.
Подробности: http://www.java67.com/2016/09/java-8-streampeek-example.html
#en
@a_cup_of_java | Другие наши каналы
Статья подробно объясняет, как с помощью метода peek() можно проследить промежуточные данные в Stream, понять ленивое вычисление и корректно отлаживать цепочку операций фильтрации и преобразования. Лучшие курсы и полезные материалы для изучения программирования собраны в одном месте. От Java и Python до DevOps и машинного обучения — найдите подходящий курс и прокачайте свои навыки с помощью проверенных ресурсов и подробных гайдов. Архив блогов за годы — обзор публикаций
В статье представлен подробный архив блогов с 2012 по 2025 годы, включая разбивку по месяцам и количеству публикаций. Это помогает проследить активность и тематику на протяжении времени. Интересно для тех, кто изучает динамику контента.
Подробности: http://www.java67.com/2016/09/java-8-streampeek-example.html
#en
@a_cup_of_java | Другие наши каналы
Как GC останавливает весь мир, чтобы вынести мусор
Как GC останавливает весь "мир", чтобы "вынести мусор"!
Концептуальное описание работы GC в Ваших приложениях.
🔴 Что такое Stop-The-World
📍 Зачем нужны SafePoints
🧩 Что делает функция GC_POLL()
🧹 Что делает GC
и почему GC иногда останавливает весь "мир"...
Узнать о сборке мусора чуть больше
Читать: https://habr.com/ru/articles/950082/?utm_campaign=950082
@a_cup_of_java | Другие наши каналы
Как GC останавливает весь "мир", чтобы "вынести мусор"!
Концептуальное описание работы GC в Ваших приложениях.
🔴 Что такое Stop-The-World
📍 Зачем нужны SafePoints
🧩 Что делает функция GC_POLL()
🧹 Что делает GC
и почему GC иногда останавливает весь "мир"...
Узнать о сборке мусора чуть больше
Читать: https://habr.com/ru/articles/950082/?utm_campaign=950082
@a_cup_of_java | Другие наши каналы
👍4
Как Spring Framework поможет разрабатывать приложения для Фидонета со сложной архитектурой (+ размышления о будущем)
В этой статье мы рассмотрим не только применение Spring Framework в сети Фидонет, но и немного размышляю о будущем сети...
Читать: https://habr.com/ru/articles/950122/?utm_campaign=950122
@a_cup_of_java | Другие наши каналы
В этой статье мы рассмотрим не только применение Spring Framework в сети Фидонет, но и немного размышляю о будущем сети...
Читать: https://habr.com/ru/articles/950122/?utm_campaign=950122
@a_cup_of_java | Другие наши каналы
❤3
О подводных камнях виртуальных потоков в Java
Виртуальные потоки (JEP 425) являются мощным инструментом для построения приложений, которые в теории могут обслуживать десятки тысяч запросов в секунду. Однако это в теории. Практика же может выглядеть совершенно иначе. Данная статья рассказывает о нескольких подводных камнях, из-за которых виртуальные потоки могут не сработать, а сделать даже хуже.
Читать: https://habr.com/ru/articles/950204/?utm_campaign=950204
@a_cup_of_java | Другие наши каналы
Виртуальные потоки (JEP 425) являются мощным инструментом для построения приложений, которые в теории могут обслуживать десятки тысяч запросов в секунду. Однако это в теории. Практика же может выглядеть совершенно иначе. Данная статья рассказывает о нескольких подводных камнях, из-за которых виртуальные потоки могут не сработать, а сделать даже хуже.
Читать: https://habr.com/ru/articles/950204/?utm_campaign=950204
@a_cup_of_java | Другие наши каналы
Российские Java/Spring-разработчики: какие IDE выбирают сегодня
Хотя большинство Java-разработчиков в России по-прежнему используют разные вариации IntelliJ IDEA, постепенно начинают появляться и новые альтернативы. Одна из них — OpenIDE, российская среда разработки на базе IntelliJ Platform. Мы уже писали о проекте, и он для нас особенно важен: Axiom JDK входит в консорциум разработки OpenIDE вместе с компаниями "Группа Астра" и Haulmont.
Проект стартовал меньше года назад и уже заметен на рынке Java-инструментов. Чтобы подтвердить это цифрами, делимся результатами опроса Spring АйО среди Java/Spring-разработчиков об используемых IDE в 2025 году.
Читать: https://habr.com/ru/companies/axiomjdk/articles/949914/?utm_campaign=949914
@a_cup_of_java | Другие наши каналы
Хотя большинство Java-разработчиков в России по-прежнему используют разные вариации IntelliJ IDEA, постепенно начинают появляться и новые альтернативы. Одна из них — OpenIDE, российская среда разработки на базе IntelliJ Platform. Мы уже писали о проекте, и он для нас особенно важен: Axiom JDK входит в консорциум разработки OpenIDE вместе с компаниями "Группа Астра" и Haulmont.
Проект стартовал меньше года назад и уже заметен на рынке Java-инструментов. Чтобы подтвердить это цифрами, делимся результатами опроса Spring АйО среди Java/Spring-разработчиков об используемых IDE в 2025 году.
Читать: https://habr.com/ru/companies/axiomjdk/articles/949914/?utm_campaign=949914
@a_cup_of_java | Другие наши каналы
Путеводитель для начинающих по сборщику мусора Shenandoah
Shenandoah — это высокопроизводительный сборщик мусора с низкими задержками, разработанный компанией Red Hat и впервые внедрённый в OpenJDK. Он был создан с целью минимизировать задержки на протяжении работы приложения, что особенно важно для приложений с высокими требованиями к производительности и отзывчивости. В новом переводе от команды Spring АйО рассмотрим основные особенности Shenandoah, его работу, настройку и примеры использования.
Читать: https://habr.com/ru/companies/spring_aio/articles/950642/?utm_campaign=950642
@a_cup_of_java | Другие наши каналы
Shenandoah — это высокопроизводительный сборщик мусора с низкими задержками, разработанный компанией Red Hat и впервые внедрённый в OpenJDK. Он был создан с целью минимизировать задержки на протяжении работы приложения, что особенно важно для приложений с высокими требованиями к производительности и отзывчивости. В новом переводе от команды Spring АйО рассмотрим основные особенности Shenandoah, его работу, настройку и примеры использования.
Читать: https://habr.com/ru/companies/spring_aio/articles/950642/?utm_campaign=950642
@a_cup_of_java | Другие наши каналы
🔥2
Топ-53 задачи на Java для подготовки к собеседованиям. В статье собраны популярные и полезные задания по программированию, которые помогут улучшить навыки решения проблем и подготовиться к техническим интервью на Java. Полезно как новичкам, так и опытным разработчикам. Лучшие курсы и вопросы для программистов
В статье собраны лучшие курсы по Java, DevOps, Linux, дизайну паттернов и другим IT-направлениям, а также обширный список популярных вопросов для подготовки к собеседованиям. Полезный ресурс для развития и успешного трудоустройства. Архивы публикаций: обзор по месяцам и годам
В статье представлен подробный обзор количества публикаций по месяцам с 2012 по 2024 год. Это помогает оценить активность и динамику контента за разные периоды. Интересно для тех, кто следит за статистикой и развитием блога.
Подробности: http://www.java67.com/2020/03/top-50-java-coding-programming-problems-solutions.html
#en
@a_cup_of_java | Другие наши каналы
В статье собраны лучшие курсы по Java, DevOps, Linux, дизайну паттернов и другим IT-направлениям, а также обширный список популярных вопросов для подготовки к собеседованиям. Полезный ресурс для развития и успешного трудоустройства. Архивы публикаций: обзор по месяцам и годам
В статье представлен подробный обзор количества публикаций по месяцам с 2012 по 2024 год. Это помогает оценить активность и динамику контента за разные периоды. Интересно для тех, кто следит за статистикой и развитием блога.
Подробности: http://www.java67.com/2020/03/top-50-java-coding-programming-problems-solutions.html
#en
@a_cup_of_java | Другие наши каналы
Топ-35 вопросов по работе со строками в Java, которые часто задают на собеседованиях для разработчиков с опытом 2-5 лет. В статье разбираются ключевые темы — от особенностей String и StringBuilder до популярных задач по обработке строк. Полезно для подготовки к интервью. Использование String в операторе switch и другие вопросы по работе со строками в Java
После Java 7 можно использовать String в switch. В статье рассмотрены популярные вопросы по строкам в Java: от преобразований типов до проверки анаграмм и кодировок. Отличный ресурс для подготовки к интервью и углубления знаний. Топовые вопросы и темы для подготовки к собеседованиям по Java и смежным технологиям: от основ Core Java и SQL до Spring, Microservices и Kubernetes. Полезный ресурс для тех, кто хочет систематизировать знания и успешно пройти интервью в IT.
Подробности: http://www.java67.com/2018/06/top-35-java-string-interview-questions.html
#en
@a_cup_of_java | Другие наши каналы
После Java 7 можно использовать String в switch. В статье рассмотрены популярные вопросы по строкам в Java: от преобразований типов до проверки анаграмм и кодировок. Отличный ресурс для подготовки к интервью и углубления знаний. Топовые вопросы и темы для подготовки к собеседованиям по Java и смежным технологиям: от основ Core Java и SQL до Spring, Microservices и Kubernetes. Полезный ресурс для тех, кто хочет систематизировать знания и успешно пройти интервью в IT.
Подробности: http://www.java67.com/2018/06/top-35-java-string-interview-questions.html
#en
@a_cup_of_java | Другие наши каналы
❤3
Лучшие курсы по Docker для Java-разработчиков
В статье собраны лучшие курсы по Docker специально для Java и Spring Boot разработчиков. Docker помогает упростить разработку и деплой, и становится незаменимым инструментом для программистов. Узнайте, с чего начать обучение.
Подробности: http://www.java67.com/2021/04/top-5-courses-to-learn-docker-for-java.html
#en
@a_cup_of_java | Другие наши каналы
В статье собраны лучшие курсы по Docker специально для Java и Spring Boot разработчиков. Docker помогает упростить разработку и деплой, и становится незаменимым инструментом для программистов. Узнайте, с чего начать обучение.
Подробности: http://www.java67.com/2021/04/top-5-courses-to-learn-docker-for-java.html
#en
@a_cup_of_java | Другие наши каналы