
Java *
Объектно-ориентированный язык программирования
Повышаем производительность файлового I/O в JVM на Linux

Все кто хоть раз касался разработки I/O интенсивных приложений, наверное, задумывался о повышении их производительности. Особенно когда у проекта много внешних хранилищ и они находятся по всему миру. Давайте разберем какие есть инструменты с их плюсами и минусами и как их лучше использовать на примере конкретного проекта, в котором принимал участие Дмитрий Бундин, старший Big Data-разработчик в Grid Dynamics.
Инструменты тестирования Java: 10 лучших практик написания тест-кейсов

О чем рассказывается в этой статье:
• Станьте экспертом в разработке Java - научитесь тестировать
• Почему программистам важно разбираться в Java тестировании?
• Методы тестирования для Java
• Почему модульное тестирование так важно?
• Фреймворки модульного тестирования для Java
• Как написать тест-кейс JUnit
• С помощью автоматизации модульное тестирование становится лучше
• Сделать тестирование Java проще и легче с помощью искусственного интеллекта
• Тестирование безопасности в Java
• Выводы о Java тестировании
Пишем простого slack-бота на Java

Привет! Я — Саша Казанцев, разработчик в hh.ru. В статье я расскажу, как сделать простого бота в Slack на java и немного о других вариантах использования slack api.
Слак обладает обширной и всеобъемлющей документацией и туториалами, и чтобы написать эталонного бота, лучше прочитать вообще все. Но у нас лапки, поэтому запилим по-простому.
Структура будет интересна тем, кому лень читать лишнее: в самом начале будет инструкция по созданию бота, а после — лирика про наших.
Log4Shell/Leak4J — чрезвычайно опасная уязвимость в log4j2

Последние пару дней (и ночей) я изучал новую (чрезвычайно опасную) уязвимость в log4j2 под названием Log4Shell.
Это касается всех версий log4j-core от 2.0-beta9 до 2.14.1, и это очень серьезная проблема.
Эта уязвимость позволяет злоумышленнику удаленно выполнить код в вашей системе с возможностью получить полный контроль над базовыми серверами.
В заметке кратко описаны способы атаки и способы их устранения.
Поисковик новостей (RSS), написанный на Java + SQLite

Данная идея не претендует на уникальность. Суть проста - тратить как можно меньше времени на чтение интересующих Вас новостей, отсеивая ненужные заголовки. Проект делал в рамках моего обучения языку Java и SQL, начиная с 2018 года. В настоящий момент программа включена в Реестр российского ПО. Функционал продублирован в Telegram боте.
Актуальная версия программы для windows и linux находится на avandy-news.ru. Исходный код проекта будет полезно изучить тем, кто хочет создавать свои десктопные приложения на Swing (но рекомендую изучать JavaFX) или для изучения процесса работы с базой данных посредством чистого JDBC. Для улучшения дизайна интерфейса применён FlatLaf.
Визуализация Apache Kafka Streams с помощью Quarkus Dev UI

В этой статье показано, как можно визуализировать Apache Kafka Streams в реактивных приложениях с помощью пользовательского интерфейса разработчика в Quarkus (Quarkus Dev UI).
Quarkus - Java платформа, предоставляющая расширение для использования Kafka Streams API, а также позволяющая реализовывать приложения потоковой обработки, основанные непосредственно на Kafka.
Влезай — не убьёт! Как я попал из электромонтеров в разработчики

Привет! Меня зовут Иван, я бэкенд-разработчик в ЮMoney. Программистом я был не всегда: десять лет работал электромонтером. В своем первом посте расскажу, как попал в IT.
Под катом моя история и база знаний, которая помогла перейти из электриков в маленьком городе в мидл-разработчики крупной компании.
Автоматическое создание changeSet'ов Liquibase из Java entity

При разработке и дальнейшей поддержки приложения база данных изменяется: добавляются, удаляются таблицы, столбцы и т.д. Для упрощения отслеживания изменений существует Liquibase. Эта библиотека, в начале запуска приложения решает, надо ли на конкретной базе выполнить конкретные скрипты, или же они в ней уже выполнены.
Каждый раз при добавление или изменение Entity, мы должны добавить новый changSet. Но что если я скажу, что есть плагин, который сам создает changeSetы на основе нашей Entity и уже существующей структуры базы данных?
Нам понадобится java, spring, gradle и liquibase plugin.
Начальные данные
Для начала нужно создать проект и пару простых Entity.
В файл build.gradle добавляем плагин:
plugins {
id 'org.liquibase.gradle' version '2.0.4'
}
Можно так же указать в переменных файл
liquibase {
activities {
main {
changeLogFile "$buildDir/generated-migrations.yaml"
url database.getProperty("dbUrl")
username database.getProperty("dbUsername")
password database.getProperty("dbPassword")
referenceUrl 'hibernate:spring:entity?dialect=org.hibernate.dialect.PostgreSQL10Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy'
logLevel 'debug'
}
runList = "main"
}
}
Zeebe и Camunda: сравниваем известные BPM-системы под высокими нагрузками

Всем привет! Меня зовут Николай Первухин, я Senior Java Developer в Райффайзенбанке. В последнее время я активно занимаюсь BPM-системами Camunda и Zeebe (основа Camunda-cloud). Если вы, как и я, с ходу не можете ответить на вопрос, кто быстрее — Camunda или Zeebe, насколько, и в каких случаях они могут тормозить, то добро пожаловать под кат.
ZGC | Что нового в JDK 17

JDK 17 был выпущен 14 сентября. Это релиз Long-Term Support (LTS), что означает, что он будет поддерживаться и получать обновления в течение многих лет. Также это первый выпуск LTS, в который включена продакшн-реди версия ZGC. Освежим вашу память: экспериментальная версия ZGC была включена в JDK 11 (предыдущий выпуск LTS), а первая продакшн-реди версия ZGC появилась в JDK 15 (выпуск не LTS).
В JDK 17 ZGC получил 41 исправление и улучшение, и я остановлюсь на некоторых из них. Но прежде чем перейти к этому, если вам интересно узнать больше о возможностях/улучшениях ZGC в предыдущих выпусках JDK, прочитайте мои прошлые сообщения.
Обзор прошедших конференций JUG Ru Group и анонс весенних: Heisenbug, DotNext, HolyJS, JPoint, Mobius, C++ Russia, Hydra

Мы провели этой осенью девять конференций, причём у каждой часть программы сразу сделали доступной всем. И теперь хотим:
— поделиться с Хабром видеозаписями общедоступной части (суммарно по всем конференциям это более ста часов видео!)
— анонсировать наш следующий конференционный сезон: уже можно и подавать заявки на доклады, и приобретать билеты
Расписали всё это про каждую конференцию отдельно: выбирайте в оглавлении интересную вам, чтобы увидеть и ссылку на её записи, и дату её следующего проведения.
Создаем нативный образ при помощи Spring Boot

Облачные технологии открыли путь к множеству новых практических областей, среди которых есть и такие, которые ранее были совершенно невозможны. Среди них выделяется бессерверная парадигма:
Бессерверные вычисления – это модель выполнения вычислений в облаке, при которой облачный провайдер предоставляет машинные ресурсы по требованию и берет на себя всю работу с серверами, на что его уполномочивает клиент. При бессерверных вычислениях ресурсы не содержатся в энергозависимой памяти; напротив, вычисления выполняются краткими всплесками, после которых результаты сбрасываются в долговременное хранилище. Когда приложение не используется, никаких ресурсов на него не выделяется.
По Википедии
Ближайшие события
«Интернет в огне»: критическая уязвимость Log4Shell терроризирует онлайн-сервисы

Критическая уязвимость в Java, в библиотеке log4j, которая используется в тысячах сервисов, начиная от Minecraft и заканчивая Apple Cloud, быстро превращается в серьезную угрозу для организаций по всему миру. Уязвимости подвержены сервера Apple, Valve, Microsoft и других.
TINKOFF-INVEST. Разработка торгового робота на JAVA. Часть 1

Многие что-то слышали, некоторые даже пробовали, но лишь единицы рассказали о таком мощном и удобном инструменте автоматизации биржевой торговли, как TNIKOFF INVEST API. Полностью раскрыть все возможности API или написать полноценного робота в рамках одной статьи – непосильная задача, поэтому будем двигаться постепенно, не перегружая мозг читателя чрезмерным объемом информации.
Если разработка программного обеспечения не входит в сферу ваших интересов, но слова "акции" и "брокер" не являются чуждыми, то загляните под кат ради интереса, где можно будет узнать о том, что тикер неуникален, а также о таких идентификаторах, как ISIN и FIGI, кроме того, в конце статьи будет доступен для скачивания свод инструментов, доступных у брокера TINKOFF. Чуть не забыл, еще и про всеми любимый Agile немного можно почитать.
Возможности Java — от Java 8 до Java 17

С момента появления в 1995 году до сегодняшнего дня в Java многое изменилось. Java 8 была революционным выпуском, вернувшим Java на пьедестал лучших языков программирования.
Мы рассмотрим большинство изменений в языке Java, которые произошли с Java 8 в 2014 году до сегодняшнего дня. Мы постараемся быть как можно более краткими по каждой функции. Намерение состоит в том, чтобы иметь ссылку на все новые фичи языка Java 8 - 17 включительно.
Примечание переводчика,
Эта статья переведена по просьбе одного из читателей Хабр. Надеюсь она будет полезна как краткий справочник по новым фичам языка Java 8 - 17.
Разбор вступительных заданий в Школу Программистов hh.ru 2021

Привет! Подошел к концу двенадцатый набор в Школу Программистов hh.ru. Самое время рассказать, как Петр Васильевич раздавал премии менеджерам, кто вышел победителем из "Релиза до выходных" благодаря ролевому помощнику, и как впервые в истории Школы нам пришлось облегчить условия вступительного задания прямо во время набора.
В этой статье будет подробный разбор заданий свежего набора в Школу Программистов hh.ru.
GraphQL + SPQR + Spring Boot Starter 2021

GraphQL + SPQR + Spring Boot Starter 2021
GraphQL — это язык запросов к API-интерфейсам. Он отображает предоставляемые сервером данные, чтобы клиент смог выбрать именно то, что ему нужно. GraphQL SPQR призван упростить добавление GraphQL API в любой Java-проект. SPQR работает, динамически генерируя схему GraphQL из кода Java по средствам аннотаций. Перейдем к самой сути!
Как сделать маппинг полиморфных JSON-объектов с помощью JPA и Hibernate

В этой статье я собираюсь показать вам, как можно выполнять маппинг полиморфных объектов JSON используя JPA и Hibernate.
Поскольку Hibernate не поддерживает JSON нативно, то для достижения этой цели я буду использовать библиотеку Hibernate Types.
“Вы бигдату анализируете?” Чем занимаются разработчики в исследовательской компании

Мы в Mediascope считаем аудиторию ТВ, интернета, радио и прессы. Мониторим контент в СМИ. Измеряем потребительские предпочтения россиян. Фиксируем выходы рекламы во всех медиа. В результате пользователи наших данных получают огромное количество датасетов для анализа и решения самых разных задач бизнеса. Кроме того, многие наши данные лежат в основе рекламных взаиморасчетов медиарынка и являются своего рода индустриальной "валютой" в диалоге разных его игроков.
Кому все это нужно? Компаниям, работающим на российском рынке рекламы (сегмент - сугубо В2В) - непосредственно СМИ, медиа-холдингам, рекламным агентствам и компаниям-рекламодателям.
В нашей работе крайне важно сбалансированное сочетание, с одной стороны, ИТ-решений, стэка технологий и программных разработок, с другой, - применение методов социологических исследований, математики и анализа данных.
Расскажем обо всем поподробнее.
Вклад авторов
olegchir 4056.4tagir_valeev 2369.0phillennium 1516.423derevo 1271.0spring_aio 1162.3ARG89 1078.2igor_suhorukov 945.2dbelob 902.0doom369 826.0alizar 756.0