👍6
10 популярных библиотек для модульного и интеграционного тестирования Java
Юнит-тестирование и интеграционное тестирование в Java являются важными составляющими процесса разработки программного обеспечения.
Юнит-тестирование подразумевает тестирование отдельных блоков или компонентов кода в изоляции. Для этого обычно используется фреймворк тестирования, например JUnit или TestNG, и пишутся тестовые примеры, которые проверяют код и убеждаются в том, что его поведение соответствует ожиданиям. Модульные тесты должны быть быстрыми, повторяемыми и не зависеть от внешних зависимостей.
https://www.javacodegeeks.com/2023/03/10-popular-libraries-for-java-unit-and-integration-testing.html
👉@BookJava
Юнит-тестирование и интеграционное тестирование в Java являются важными составляющими процесса разработки программного обеспечения.
Юнит-тестирование подразумевает тестирование отдельных блоков или компонентов кода в изоляции. Для этого обычно используется фреймворк тестирования, например JUnit или TestNG, и пишутся тестовые примеры, которые проверяют код и убеждаются в том, что его поведение соответствует ожиданиям. Модульные тесты должны быть быстрыми, повторяемыми и не зависеть от внешних зависимостей.
https://www.javacodegeeks.com/2023/03/10-popular-libraries-for-java-unit-and-integration-testing.html
👉@BookJava
👍1
Как найти "мертвый" код в Java-сервисах
При создании решений код, который мы пишем, может прослужить много лет. При случайном просмотре устаревшего кода мы можем задаться вопросом: используется ли он до сих пор? Отсутствующая документация или устаревшие тесты не помогут нам ответить на этот вопрос. Если поспрашивать, то никто толком не знает. Давайте попробуем его удалить? А потом начинается хаос: выясняется, что она все еще используется для поддержки некоторых старых пользователей, на случай непредвиденных обстоятельств, или для той забытой интеграции, которую все еще используют.
Если код действительно больше не используется, то зачастую это происходит по историческим причинам. Возможно, сценарии использования были заменены новыми функциональными возможностями или устарели, а код забыли удалить. В случаях, когда исследовать "мертвый" код не так уж и просто, как повысить уверенность?
https://blog.picnic.nl/how-to-find-dead-code-in-your-java-services-d167c8f22838
👉@BookJava
При создании решений код, который мы пишем, может прослужить много лет. При случайном просмотре устаревшего кода мы можем задаться вопросом: используется ли он до сих пор? Отсутствующая документация или устаревшие тесты не помогут нам ответить на этот вопрос. Если поспрашивать, то никто толком не знает. Давайте попробуем его удалить? А потом начинается хаос: выясняется, что она все еще используется для поддержки некоторых старых пользователей, на случай непредвиденных обстоятельств, или для той забытой интеграции, которую все еще используют.
Если код действительно больше не используется, то зачастую это происходит по историческим причинам. Возможно, сценарии использования были заменены новыми функциональными возможностями или устарели, а код забыли удалить. В случаях, когда исследовать "мертвый" код не так уж и просто, как повысить уверенность?
https://blog.picnic.nl/how-to-find-dead-code-in-your-java-services-d167c8f22838
👉@BookJava
👍3
Глубокое погружение в Java Memory Model
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.
👉 @BookJava
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.
👉 @BookJava
👍7❤1
Java Pro Tips: Редкие трюки для повышения эффективности разработки
В этой статье мы рассмотрим некоторые редкие и мощные советы и приемы, которые помогут вам раскрыть весь потенциал Java и создать элегантный и эффективный код.
От функциональных интерфейсов и ссылок на методы до потокового API и необязательных классов - мы рассмотрим некоторые расширенные возможности Java, которые часто упускаются из виду, но могут значительно улучшить ваш опыт программирования.
Итак, давайте погрузимся в работу и раскроем всю мощь Java!
https://blog.devgenius.io/java-pro-tips-rare-tricks-to-supercharge-your-programming-d4290c100d56
👉 @BookJava
В этой статье мы рассмотрим некоторые редкие и мощные советы и приемы, которые помогут вам раскрыть весь потенциал Java и создать элегантный и эффективный код.
От функциональных интерфейсов и ссылок на методы до потокового API и необязательных классов - мы рассмотрим некоторые расширенные возможности Java, которые часто упускаются из виду, но могут значительно улучшить ваш опыт программирования.
Итак, давайте погрузимся в работу и раскроем всю мощь Java!
https://blog.devgenius.io/java-pro-tips-rare-tricks-to-supercharge-your-programming-d4290c100d56
👉 @BookJava
👍1
👍4❤1🔥1
Подборка Telegram каналов для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
👍2
Как уменьшить размер докерного образа JVM не менее чем на 60%
Если вы давно работаете с языками на базе JVM (Java, Kotlin, Scala и др.), то, возможно, заметили, что начиная с Java 11 среда выполнения Java Runtime Environment (JRE) больше не имеет отдельного дистрибутива. В связи с этим решением многие дистрибьюторы докерных образов Java Development Kit (JDK), такие как OpenJDK, Amazon Correto и другие, не предоставляют JRE в виде отдельного докерного образа. Использование этих образов привело к тому, что общий размер образа Docker составил около 360 МБ, а реальный размер jar-приложения - около 26 МБ. На мой взгляд, общий размер Docker-образа слишком велик, и его следует уменьшить, чтобы сэкономить место и пропускную способность сети для всех, кто будет использовать этот Docker-образ. Теперь давайте посмотрим, как радикально уменьшить размер Docker-образа.
https://blog.devops.dev/how-to-reduce-jvm-docker-image-size-by-at-least-60-459ec87b95d8
👉@BookJava
Если вы давно работаете с языками на базе JVM (Java, Kotlin, Scala и др.), то, возможно, заметили, что начиная с Java 11 среда выполнения Java Runtime Environment (JRE) больше не имеет отдельного дистрибутива. В связи с этим решением многие дистрибьюторы докерных образов Java Development Kit (JDK), такие как OpenJDK, Amazon Correto и другие, не предоставляют JRE в виде отдельного докерного образа. Использование этих образов привело к тому, что общий размер образа Docker составил около 360 МБ, а реальный размер jar-приложения - около 26 МБ. На мой взгляд, общий размер Docker-образа слишком велик, и его следует уменьшить, чтобы сэкономить место и пропускную способность сети для всех, кто будет использовать этот Docker-образ. Теперь давайте посмотрим, как радикально уменьшить размер Docker-образа.
https://blog.devops.dev/how-to-reduce-jvm-docker-image-size-by-at-least-60-459ec87b95d8
👉@BookJava
👍4
Потоковая обработка данных с помощью Kafka Streams: архитектура и ключевые концепции
При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных. Для этой цели может использоваться Kafka Streams, которая позволяет выполнять обработку данных в режиме реального времени.
В этой статье мы рассмотрим основные компоненты Kafka Streams и теоретические аспекты их использования. Мы будем использовать последние версии технологий, доступных на сегодня: Kafka 3.4.0 и Java 17 в качестве языка программированию. Для снижения входного порога мы будем использовать только нативные возможности Kafka и Kafka Streams, и не будем рассматривать решения с использованием различных фрейморков вроде Spring.
https://habr.com/ru/articles/747658/
👉@BookJava
При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных. Для этой цели может использоваться Kafka Streams, которая позволяет выполнять обработку данных в режиме реального времени.
В этой статье мы рассмотрим основные компоненты Kafka Streams и теоретические аспекты их использования. Мы будем использовать последние версии технологий, доступных на сегодня: Kafka 3.4.0 и Java 17 в качестве языка программированию. Для снижения входного порога мы будем использовать только нативные возможности Kafka и Kafka Streams, и не будем рассматривать решения с использованием различных фрейморков вроде Spring.
https://habr.com/ru/articles/747658/
👉@BookJava
👍6
Делаем свою простейшую систему сборки для Java
Довелось мне обучать одного знакомого, желающего войти в ИТ (привет, Саша!). Человек он упорный, прошел разные курсы, стажировки, упорно продолжает идти вперед и уже вполне тянет на уровень джуна. Но иногда внезапно задает такие вопросы, из которых я понимаю, что у него огромные дыры в базовых знаниях и представлениях. На курсах этому, видимо, не учат.
Один из последних вопросов был про устройство сборки. И он показал явное непонимание того, как исходный код собирается в исполняемый файл и запускается. Начинающим обычно говорят в духе "вот создаешь Gradle-проект, в IDE жмешь кнопочку запуска и все работает". Gradle/Maven при этом представляются таким черным ящиком, в котором есть кнопка сборки и запуска, а внутри - черная магия. И как только возникает необходимость что-то в этом простом процессе изменить или понять - начинаются проблемы.
https://habr.com/ru/articles/752014/
👉@BookJava
Довелось мне обучать одного знакомого, желающего войти в ИТ (привет, Саша!). Человек он упорный, прошел разные курсы, стажировки, упорно продолжает идти вперед и уже вполне тянет на уровень джуна. Но иногда внезапно задает такие вопросы, из которых я понимаю, что у него огромные дыры в базовых знаниях и представлениях. На курсах этому, видимо, не учат.
Один из последних вопросов был про устройство сборки. И он показал явное непонимание того, как исходный код собирается в исполняемый файл и запускается. Начинающим обычно говорят в духе "вот создаешь Gradle-проект, в IDE жмешь кнопочку запуска и все работает". Gradle/Maven при этом представляются таким черным ящиком, в котором есть кнопка сборки и запуска, а внутри - черная магия. И как только возникает необходимость что-то в этом простом процессе изменить или понять - начинаются проблемы.
https://habr.com/ru/articles/752014/
👉@BookJava
👍4
Полезные и неизвестные библиотеки Java
https://piotrminkowski.com/2023/01/30/useful-unknown-java-libraries/
👉@BookJava
https://piotrminkowski.com/2023/01/30/useful-unknown-java-libraries/
👉@BookJava
👍3
Полное руководство по виртуальным потокам Java
1. Настройка
2. Почему виртуальные потоки?
3. Как создать виртуальный поток
4. Как работают виртуальные потоки
5. Планировщик и совместное планирование
6. Закрепленные виртуальные темы
7. ThreadLocal и пулы потоков
8. Некоторые внутренности виртуальных потоков
9. Выводы
10. Приложение: Конфигурация Maven
https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/
👉@BookJava
1. Настройка
2. Почему виртуальные потоки?
3. Как создать виртуальный поток
4. Как работают виртуальные потоки
5. Планировщик и совместное планирование
6. Закрепленные виртуальные темы
7. ThreadLocal и пулы потоков
8. Некоторые внутренности виртуальных потоков
9. Выводы
10. Приложение: Конфигурация Maven
https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/
👉@BookJava
👍7