Java guru
5.24K subscribers
1 photo
1 video
1 file
258 links
Новости из мира Java, обзоры интересных библиотек и фреймворков, обучающие статьи. Онлайн обсуждения актуальных тем и обмен опытом. Для связи @RodmanDV
Download Telegram
Compiler Explorer — уникальный проект для исследования компилируемого кода

Это просто космический инструмент да еще и open source!!!

В левой панели вы выбираете язык и вставляете кусок кода, а в правой он показывает вам ассемблерный код, генерируемый разными компиляторами под разные архитектуры процессоров. Проект поддерживает 69 языков и Java в том числе.

Этот проект можно также использовать как отличный инструмент для изучения языка ассемблера. Достаточно навести курсор на команду, после чего откроется всплывающее окно с описанием команды. При нажатии правой клавишей мыши на команду открывается меню, в котором можно изучить более подробное описание.

В конце статьи особенно порадовал Movfuscator. Он использует только MOV ))

https://habr.com/ru/companies/ruvds/articles/815675/
Гарвардский курс по основам программирования CS50 (бесплатно)

Отличный курс по основам программирования. Можно быстро освежить базу. Особенно рекомендую новичкам.

https://youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5&si=ET3P_dbNTmHABDPx
Practice SQL - сайт для практики SQL запросов.

Навык работы с базами данных очень важен для разработчиков. Прелесть данного сайта в том, что вам не нужно самим заниматься разворачиванием тестовой базы. Достаточно открыть браузер. Также, в отличии от тестов, здесь вам нужно будет реально набирать и выполнять SQL, а это лучше запоминается.

https://www.sql-practice.com/
Coding game

Coding game - сайт для прокачки навыков программирования на 25+ языках. Можно писать и на Java. Вы получаете задачи и решаете их в игровой форме. Оформление впечатляет )

https://www.codingame.com/start/
Криптография на службе у stateless

Команда Мир Plat.Form под интересным углом посмотрела на архитектуру решения stateless сервиса. Вместо хранения состояния на стороне сервиса они решили передавать его в каждом запросе, а для защиты от подмены использовать контрольные суммы сообщения (HMAC). У решения есть свои плюсы и минусы. Больше деталей в статье.

https://habr.com/ru/companies/nspk/articles/808199/
Генерация OpenAPI из Spring Boot MVC

При работе с OpenAPI есть свои «подводные камни». Некоторые из них описаны в этой статье. В примере используется Spring Boot 3 и OpenAPI 3.

https://habr.com/ru/articles/814061/
Рецепты «приготовления» Hibernate, или решаем 5 проблем работы с фреймворком

Hibernate — очень мощный фреймворк. Однако многие, начиная с ним работать, натыкаются на проблемы производительности или отсутствия нужной функциональности. Многие из этих проблем появляются просто из-за того, что разработчики не умеют его «готовить». 

Подборка решений достаточно интересная в статье.

https://habr.com/ru/companies/magnit/articles/814573/
Гайд по использованию JUnit 5, Mockito и AssertJ для проверки поведения кода

В статье показано как использовать JUnit, Mockito и AssertJ для тестирования кода, а также JaCoCo для оценки покрытия тестами на примере простого мини-сервиса.

https://habr.com/ru/companies/banki/articles/814485/
Быстрее, выше, сильнее: оптимизируем Spring-контекст для тестов

В статье обсуждаются доступные способы оптимизации Spring-контекста для тестов. Помимо подхода с сегментацией (test slicing) там также есть примеры более тонкой настройки.

В комментариях к статье также порадовал пример с иерархией контекстов.

https://habr.com/ru/companies/tbank/articles/816051/
Особое мнение: смотрим на нагрузочные тесты как на функциональные

Многие команды сейчас переходят на Gatling для задач нагрузочного тестирования. В статье приводится пример не просто использования Apache JMeter для нагрузочного тестирования, а построение «непрерывного нагрузочного тестирования» в рамках CI/CD. Стек TestNG / Cucumber / Allure, для задач CI/CD используется Jenkins. В комментариях к статье автору предлагают еще использовать JMeter DSL. Тоже достаточно интересный кейс.

https://habr.com/ru/companies/nspk/articles/709822/
Gatling vs JMeter DSL

В продолжение темы из прошлого поста. По ссылке сравнение Gatling и JMeter DSL от автора JMeter DSL. Оно достаточно субъективно, но дает понимание мотивации автора на создание JMeter DSL. По факту у Gatling только в версии 3.7 появился Java friendly API. Остальные минусы указанные в статье думаю Gatling быстро нагонит, но попробовать JMeter DSL стоит особенно если вы раньше много работали с JMeter.

https://abstracta.github.io/jmeter-java-dsl/motivation/#comparison-table
Как протестировать логику консьюмеров и продюсеров и не сгореть? Spring Boot 3, Spring Kafka

В статье автор перебирает разные подходы к тестированию продюсеров и консьюмеров. В конце довольно интересное решение с использованием autoStartup на @KafkaListener. Хотя как отмечено в комментариях к статье он мог бы проще добиться цели вынеся логику из консьюмеров и продюсеров в отдельные сервисы )

https://habr.com/ru/companies/alfastrah/articles/816057/
Hazelcast: эксперименты с настройкой и долговременным хранением больших объектов in-memory

Статья будет полезна для тех, кто поддерживает приложения на Java, так как большая ее часть посвящена анализу работы G1 GC, знакомству с соответствующими инструментами и особенностями тюнинга GC, в частности для очень больших heap`ов. А также тем, кто пытается разобраться, на что способен Hazelcast, и для чего его можно применить.

https://habr.com/ru/companies/croc/articles/816973/
Amplicode: учим IDE говорить на языке фреймворка

Довольно интересная альтернатива IntelliJ IDEA Ultimate. По факту это довольно прокаченный плагин к IntelliJ IDEA Community, который пока доступен бесплатно. Напрягает правда неопределенность с планами по монетизации этого плагина.

https://habr.com/ru/companies/haulmont/articles/814207/
Azul CEO sees Java’s AI future as bright

Интересное интервью от CEO компании Azul. Я разделю его точку зрения относительно того, что в ближайшее время Java начнет играть более значимую роль на поприще AI. Сейчас при упоминании AI первый язык приходящий в голову - Python, но он по большей части лишь «обертка» над AI логикой в нативных библиотеках. По мере роста потребности бизнеса в интеграции AI в существующие корпоративные приложения и более быстрого развития AI движков будет появляться все больше возможностей в самой Java и ее экосистеме.

https://www.infoworld.com/article/3715467/azul-ceo-sees-javas-ai-future-as-bright.html#tk.rss_java
MapStruct — смаппь меня, если сможешь

MapStruct это библиотека позволяющая переносить данные из одних объектов в другие. В рамках переноса данных можно настроить преобразования над ними. Чаще всего ее используют для работы с DTO. У нее как и у Lombok есть не только фанаты, но и хейтеры. В комментах под статьей они опять схлестнулись в жарком споре ))

https://habr.com/ru/articles/818489/
Создание дистрибутивов для разных операционных систем в Java 21 и 22

Можно ли «запаковать» java приложение в exe файл для Windows? Да!

Раньше для этого активно использовались сторонние продукты, но в самой JDK такая возможность тоже развивалась. В статье приведена краткая хронология, а также описано каким образом эту задачу решает IntelliJ IDEA.

https://habr.com/ru/companies/jugru/articles/816981/
Стенд для нагрузочного тестирования на Testcontainers

Обычно Testcontainers используют для интеграционных тестов, но в статье приводится пример их использования для нагрузочных тестов. Решение конечно спорное особенно если стенд нагрузочного тестирования будет сильно отличаться от промышленного, но окей ))

Из интересного там приводятся примеры для Gatling, WRK и Yandex.Tank.

https://habr.com/ru/articles/819589/
Оптимизация кеширования в Spring Boot

Для улучшения производительности приложений иногда приходится прибегать к кешированию.
В Spring Boot есть удобные инструменты для добавления кеширования.В
статье рассказывается как добиться оптимального использования кеша.

https://digma.ai/top-7-techniques-to-optimize-caching-in-spring-boot/#custom-eviction-policies

#spring #tunning