Java библиотека
31.6K subscribers
2.31K photos
77 videos
8 files
2.04K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?

Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).

Таким образом, исходя из факта, что
FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.
🔥17👍1173
🖥 ConnectBot — SSH-клиент для Android на Java

ConnectBot — это клиент Secure Shell для Android, позволяющий подключаться к удаленным серверам по криптографически защищенному каналу.

ConnectBot удобнее всего использовать в Android Studio.

Быстрый старт с Docker и Jenkins CI:
docker run -it -v $(pwd):/workspace \
-v jenkinsfile-runner-cache:/var/jenkinsfile-runner-cache \
-v jenkinsfile-runner:/var/jenkinsfile-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):$(which docker) \
-e ANDROID_ADB_SERVER_ADDRESS=host.docker.internal \
jenkins/jenkinsfile-runner


🖥 GitHub

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116🔥1
Хотите узнать, как концепция дилеммы заключенного применяется в разработке архитектурных решений?

Всего за пару часов вы разберете основы теории игр, научитесь анализировать преимущества и риски различных архитектурных подходов, сможете эффективно управлять компромиссами между компонентами системы.

Присоединяйтесь к открытому вебинару 3 сентября в 20:00 мск! Урок создан для архитекторов ПО, руководителей IT-проектов, Fullstack- и Backend-разработчиков.

Спикер Евгений Тюменцев — директор компании по разработке ПО, 20 лет преподает компьютерные дисциплины в ВУЗе: C++, Kotlin, C#, ООП.

Встречаемся в преддверии старта курса «Архитектура и шаблоны проектирования». Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие.
16👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
10 важнейших компонентов веб-приложения

1. CI/CD pipelines: Все начинается с непрерывной интеграции и доставки (Jenkins, GitHub).
2. Запросы пользователей: После разрешения DNS запросы поступают на сервера.
3. Балансировщики: Равномерно распределяют запросы между серверами (Nginx, HAProxy).
4. CDN: Запросы могут обслуживаться через сеть доставки контента.
5. API: Веб-приложение взаимодействует с бекендами через API.
6. Базы данных и кэши: Бекенды взаимодействуют с базами данных или кэшами для получения данных.
7. Очереди задач: Большие задачи отправляются на воркеры с помощью очередей.
8. Поисковые службы: Поиск поддерживается службами полнотекстового поиска (Elasticsearch, Apache Solr).
9. Мониторинг и логирование: Хранение логов помогает анализировать данные, чтобы убедиться, что все работает исправно (Sentry, Grafana, Prometheus).
10. Службы оповещения: Уведомляют разработчиков о проблемах для быстрого реагирования.

💬 Какие еще компоненты вы добавили бы в архитектуру производственного веб-приложения?

@javalib #java
1👍216🔥3
👩‍💻 Как эффективно использовать Java Collections для хранения, извлечения и обработки данных?

Ждем вас на открытом вебинаре 11 сентября в 20:00 мск, где мы разберем:

✔️ обзор структуры коллекций и их основных методов;
✔️ особенности различных реализаций коллекций;
✔️ примеры применения коллекций для решения практических задач.

Урок идеально подходит для тех, кто начинает изучать Java или хочет углубить свои знания.

Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!

👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAgT58

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍532🔥2
Маркерный интерфейс — это интерфейс, который не содержит ни одного метода.

Он используется для пометки классов, чтобы указать на определенные свойства или функциональность, которые могут быть использованы во время выполнения программы.
👍194🔥2
⌨️ Ваши знания в области Java недостаточны для успешного прохождения нужных собеседований и сертификации Oracle Java Programmer (OCAJP)?

Всего за 4 месяца вы уверенно овладеете всеми аспектами языка Java, научитесь создавать чистый и легко читаемый код, сможете успешно пройти любое собеседование, а также успешно пройти сертификацию Oracle Java Programmer.

Хотите это реализовать? Присоединяйтесь к курсу «Углубленное изучение языка Java».

Ознакомится с курсом можно на бесплатном открытом уроке «Определение областей действия переменных (Scopes) в Java».

🔌 Урок пройдет 16 сентября в 20:00 мск.

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAjzGC

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Фреймворки для тестирования Java приложений

Тестирование играет важнейшую роль в обеспечении качества и надежности ваших приложений. Пять популярных фреймворков для тестирования:

1. JUnit:

🔹 Используется для модульного тестирования.
🔹 Простой, удобный в использовании и легко интегрируется с инструментами разработки.
🔹 Идеален для написания и запуска повторяемых тестов, обеспечивая правильное функционирование отдельных частей кода.

2. TestNG:

🔹 Поддерживает различные категории тестирования.
🔹 Гибкий, масштабируемый и подходит как для простых, так и для сложных тестов.
🔹 Предлагает расширенные функции, такие как параллельное тестирование, тестирование на основе данных и подробные отчеты.

3. Mockito:

🔹 Фреймворк для создания мок-объектов в модульных тестах.
🔹 Легкость в использовании, уменьшение шаблонного кода и интеграция с JUnit/TestNG.
🔹 Позволяет разработчикам тестировать части кода изолированно, не полагаясь на внешние зависимости.

4. Selenium:

🔹 Фреймворк для автоматизации веб-браузеров.
🔹 Поддержка кроссплатформенности, интеграция с TestNG/JUnit и активная поддержка сообщества.
🔹 Обеспечивает правильное функционирование веб-интерфейсов на разных браузерах и платформах.

5. Cucumber:

🔹 Инструмент для разработки на основе BDD.
🔹 Улучшает коммуникацию с нетехническими заинтересованными сторонами.
🔹 Использует спецификации на простом языке для написания тестов, что позволяет заказчику лучше понимать тестовые кейсы.

💬Какие фреймворки вы предпочитаете для ваших проектов? Пробовали какие-то другие, которые могли бы порекомендовать?

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9👍65
Можно ли считать Final переменную константой?

Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.

А если тип данных mutable, то есть изменяемый, при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и в таком случае назвать ее константой нельзя. Так вот, на примере видно, что часть финальных переменных действительно константы, а часть — нет, и их можно изменить.
14👍9🔥5
👩‍💻 Как эффективно использовать OAuth 2 в Spring-приложениях?

Ждем вас на открытом вебинаре 13 сентября в 20:00 мск.

где мы разберем:

✔️ что такое OAuth 2 и как он работает в Spring-приложениях;
✔️ какие роли и процессы задействованы в фреймворке авторизации;
✔️ его расширения;
✔️ ответы на все возникающие вопросы.

Урок идеально подходит для Java- и Kotlin-разработчиков.

Встречаемся в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение!

📌 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAmhda

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍93🔥2
Контейнер Optional

Optional — это контейнер, который может содержать какое-то значение или не содержать ничего.
Он используется для обозначения отсутствия значения вместо null. Это позволяет избежать ошибок NullPointerException.

Optional появился в Java 8. Он представлен классом java.util.Optional.
Чтобы создать экземпляр Optional, используются статические методы:
— empty() для пустого Optional.
— of() для Optional с заданным значением.

Для получения значения из Optional используются методы get(), или orElse() с указанием значения по умолчанию. Также есть методы фильтрации значений, например filter(), map() и flatMap().
👍25🔥83
This media is not supported in your browser
VIEW IN TELEGRAM
🎮 DevTools на каждый день

Тут собраны самые популярные и эффективные инструменты для разных направлений: IDE, ИИ, безопасность и многое другое.

💬 Какие инструменты вы используете в повседневной работе или хотели бы добавить в подборку?

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉6👍52
🖥 Byte Buddy — Java-библиотека для кодогенерации и не только

<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>LATEST</version>
</dependency>


Byte Buddy — это библиотека Java для генерации и манипулирования кодом для создания и модификации Java-классов во время выполнения Java-приложения.

Помимо самой кодогенерации, Byte Buddy позволяет создавать произвольные классы, а также предлагает удобный API для изменения классов вручную, с помощью Java-агента или во время сборки.

🖥 GitHub
🟡 Доки

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍115🔥3
⚙️ Spring Scheduler: Управление расписанием задач на Java

Spring Scheduler — это часть Spring Framework, которая позволяет планировать и выполнять задачи в заданное время или по расписанию. Он избавляет от необходимости интеграции сторонних библиотек, предлагая встроенные решения для управления задачами.

Виды задач:

- @Scheduled — аннотация для запуска методов по расписанию.
- TaskScheduler — интерфейс для более гибкого управления задачами.
- Cron-выражения — для сложных расписаний.

✔️ Преимущества:

- Простота использования за счёт минимальной конфигурации.
- Интеграция с другими частями Spring.
- Поддержка CRON-выражений для гибкости.

Недостатки:

- Ограниченная поддержка в распределённых системах.
- Возможные сложности с тестированием задач.

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍265🔥2
Хотите узнать, как эффективно использовать CSS-локаторы и XPath?

Всего за пару часов вы научитесь уверенно находить нужные элементы на странице и использовать их для эффективного UI-тестирования на Java. Вы узнаете, какие локаторы применять и как это улучшает ваши тесты.

Присоединяйтесь к открытому вебинару «CSS-локаторы и XPath для UI-тестирования на Java» 10 сентября в 20:00 мск!

Урок будет полезен начинающим специалистам, которые хотят работать в IT, начинающим тестировщикам и разработчикам на Java или других языках.

Встречаемся в преддверии старта курса «Java QA Engineer. Basic». Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAxTRT

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍43🔥3🎄1
🖥 Mill — новый инструмент для сборки проектов на Java/Scala

Mill стремится облегчить процесс сборки, для чего заимствует идеи из таких современных инструментов, как Maven, Gradle, Bazel и SBT.

Mill автоматизирует решение многих общих проблем, связанных с инструментами сборки, таких как кэширование, инкрементные повторные вычисления и параллелизм, что позволяет сосредоточить усилия на бизнес-логике, а Mill позаботится обо всем остальном.

🖥 GitHub
🟡 Доки

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥4🍾3
⚙️ Java — различные форматы конфигурации

🔹 YAML

— Удобочитаемый формат сериализации данных
— Использует отступы для вложенности
— Часто используется для конфигурационных файлов и обмена данными

🔹 JSON

— Лёгкий формат обмена данными с использованием пар "ключ-значение"
— Широко используется в API, конфигурационных файлах и для обмена данными

🔹 XML

— Язык разметки, использующий теги для определения элементов данных и их структуры
— Часто применяется для представления структурированных данных и хранения документов

🔹 Java Properties

— Простой формат конфигурации с парами "ключ-значение"
— Используется в Java-приложениях для хранения настроек и конфигурационных данных

💬 Какой формат вы используете чаще всего?

@javalib #java
👍226🔥4
👩‍💻 Как правильно использовать области действия переменных в Java и как этот навык поможет вам при подготовке к сертификации?

🔌 Ждем вас на открытом вебинаре 16 сентября в 20:00 мск.

Где мы разберем:

✔️ обзор областей действия переменных;
✔️ практические примеры: как области действия переменных влияют на поведение программы и как их правильно использовать;
✔️ подготовку к сертификации: как знание областей действия переменных может помочь вам при подготовке к экзаменам, таким как OCAJP.

Урок будет полезен для тех, кто хочет изучить Java вглубь, узнать тонкости и хитрости языка, а также для Java-разработчиков, стремящихся структурировать свои знания и лучше подготовиться к собеседованиям.

🎙 Спикер Дмитрий Коган — опытный разработчик, председатель совета предприятия в DXC, публицист, спортивный журналист и блогер.

Встречаемся в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение!

🎁 Подарок личная консультация с руководителем курса Дмитрием Коганом, всем купившим курс после открытого урока.

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAAQ0M

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍64🔥2😁1