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

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
⚡️ Узнайте, как манипулировать байт кодом Java-приложений!

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

Вебинар будет полезен Java-разработчикам, которые сталкиваются с вопросами производительности приложений.

Встречаемся 1 августа в 20:00 мск.

Спикер — Tech Lead в одном из крупнейших российских банков и кандидат технических наук.

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥32
🖥 Helidon — набор библиотек Java для создания микросервисов

Helidon — это набор cloud-native Java-библиотек с открытым исходным кодом для написания микросервисов, работающих с использованием виртуальных потоков Java.
Кстати, Helidon WebServer — первый в мире веб-сервер, полностью основанный на виртуальных потоках.

🖥 GitHub
🟡 Доки

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥6👍3
👍 Тест по Java

Проверь насколько хорошо ты знаешь Java и готов освоить Spring!

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cyBJTn

Время прохождения теста ограничено 30 минут, 21 вопрос.

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

PathIterator — это интерфейс в Java, который позволяет объектам, реализующим интерфейс Shape, возвращать геометрию своей границы, позволяя вызывающему объекту получать путь этой границы по одному сегменту за раз.

Основные возможности PathIterator:

— PathIterator позволяет перебирать сегменты пути объекта Shape по одному.
— Для каждого сегмента PathIterator может предоставить информацию о его типе (например, линия, кривая Безье), координатах и других атрибутах.
— PathIterator может использоваться для преобразования пути объекта Shape, например, для его масштабирования, поворота или перемещения.
👍166
This media is not supported in your browser
VIEW IN TELEGRAM
Офер в Яндекс для опытных бэкендеров за два дня

24–25 августа приглашаем бэкендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно решить задачи онлайн до 20 августа и пройти несколько технических секции 24 августа, чтобы уже 25-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться.

Как правило, за несколько собеседований сложно понять, подходит ли вам команда и наоборот. Multitrack позволит вам поработать в трёх разных командах Яндекса и выбрать подходящую. Вы сможете погрузиться в рабочие процессы, познакомиться с будущими коллегами и понять, с какими задачами и технологиями хотите работать.

Узнать подробности и зарегистрироваться.

Реклама. ООО "Яндекс". ИНН 7736207543
👍8😁54🔥4
🖥 Плагин Gradle для анализа зависимостей

plugins {
id("com.autonomousapps.dependency-analysis") version "<<latest_version>>"
}


Это плагин Gradle для JVM-проектов, написанных на Java, Kotlin и т.д.
Предоставляет рекомендации по управлению зависимостями, позволяет обнаруживать неиспользуемые и неправильно используемые зависимости

🖥 GitHub
🟡 Wiki

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥43❤‍🔥3
👩‍💻 Курс для Java-разработчиков, которые хотят профессионального роста.

Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса

➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cyDRXC

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

CompletableFuture в пакете java.util.concurrent является классом, который предоставляет мощный и гибкий подход к асинхронному программированию. Он позволяет выполнять асинхронные операции и обрабатывать их результаты, комбинировать несколько операций и управлять зависимостями между ними.

Помимо операций, представленных на изображении, CompletableFuture также предоставляет множество других методов для работы с асинхронными операциями, таких как thenApply(), thenCompose(), thenCombine(), exceptionally() и другие, которые позволяют обрабатывать результаты, комбинировать операции, обрабатывать исключения и многое другое. Это делает CompletableFuture мощным инструментом для асинхронного программирования.
🔥18👍103
Selector

Класс Selector используется для организации многоканального неблокирующего ввода-вывода.
Основная идея в том, что Selector позволяет одному потоку следить за состоянием множества каналов (сокетов, файловых каналов) и обрабатывать их события (готовность к чтению/записи).

Возможности Selector:
— Регистрация множества каналов в Selector для мониторинга.
— Проверка готовности зарегистрированных каналов к операциям чтения, записи.
— Извлечение готовых каналов и выполнение операций с ними.
— Отмена регистрации каналов в Selector.

Использование Selector позволяет избежать блокировки на операциях чтения/записи по каналам и эффективно масштабировать приложение для одновременной работы с большим количеством соединений.
Класс часто применяется в сетевых серверах для неблокирующей обработки большого числа клиентских соединений в одном потоке.
👍224
🖥 Fury — быстрый фреймворк Java (существует и для других ЯП) для сериализации на основе JIT и zero-copy

<dependency>
<groupId>org.apache.fury</groupId>
<artifactId>fury-core</artifactId>
<version>0.5.1</version>
</dependency>


Fury позволяет ускорить Java-приложение до 170 раз.

🖥 GitHub
🟡 Доки
🟡 Бенчмарки

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21😁73🔥3
🚀 Заканчивается набор на открытый урок "Java Generics для автоматизации тестирования"! 🚀

Стартуем 30 июля в 20:00 по мск.  Успейте попасть в группу! 

Присоединяйтесь к нашему открытому уроку по Java Generics от OTUS, ведущего образовательного центра с более чем 130 авторскими курсами для IT-специалистов. 

Открытый урок проходит в рамках курса Java QA Engineer. Professional. Для разработчиков автоматизированного тестирования на Java. Прокачайте профессиональные навыки, углубите и систематизируйте знания, научитесь грамотно внедрять автоматизацию в проекты.

👉 Что Вы узнаете на уроке?

Что такое Java Generics?
Вы разберетесь в основах Java Generics, узнаете, что это такое и зачем они нужны. Поймете, как использование Generics может повысить безопасность и эффективность вашего кода.

Использование Java Generics в UI автоматизации тестирования
Вы изучите применение Java Generics в UI автоматизации тестирования. Узнаете, как Generics помогают создавать более гибкие и переиспользуемые тесты для пользовательского интерфейса, что значительно упростит поддержку автоматизации.

Использование Java Generics в API автоматизации тестирования
Вы освоите методы использования Java Generics в API автоматизации тестирования. Поймете, как применять Generics для создания универсальных и мощных тестов для API, что повысит надежность и масштабируемость ваших тестовых сценариев.

🤔 Как Вы сможете применить полученные знания?

Повысить безопасность и эффективности кода
Вы сможете писать более безопасный и эффективный код, используя Java Generics. Это позволит вам избежать ошибок на этапе компиляции и улучшить качество вашего программного обеспечения.

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

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

Для регистрации на открытый урок нажмите здесь.

Торопитесь! Места ограничены.

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
5👍3
StringBuilder

StringBuilder — это класс для работы с изменяемыми строками, аналогичный StringBuffer. API класса StringBuilder такой же, как у StringBuffer, он также хранит строку в виде модифицируемого массива символов.

Но, в отличие от StringBuffer, StringBuilder не является потокобезопасным. Он работает быстрее за счет отсутствия синхронизации.
Поэтому его рекомендуется использовать в однопоточных приложениях для работы со строками, когда нет необходимости в синхронизации.

При создании можно задать начальную емкость buffer'а в виде размера массива символов.
Если строка превышает текущую емкость, она автоматически расширяется с сохранением содержимого.
🔥15👍95😁1
This media is not supported in your browser
VIEW IN TELEGRAM
1️⃣ Написание кода (write code):
• Пример кода: System.out.println("Hello, javaguru.by !");
2️⃣ Компиляция (javac):
• javac входит в состав JDK.
• Команда: javac -cp /lib/classes -d ./classes ./package/Main.java
• Результатом компиляции является байт-код (файл с расширением .class), который сохраняется в указанной директории.
3️⃣ Запуск программы (java):
• Байт-код загружается и интерпретируется с помощью Java Runtime Environment (JRE).
• Команда: java -cp ./classes package.Main
• JRE включает в себя Java Virtual Machine (JVM), которая выполняет байт-код.
4️⃣ Выполнение и вывод (execution and output):
• JVM выполняет байт-код, преобразовывая его в машинный код через Execution Engine.
• Результатом выполнения является вывод в консоль: Hello, javaguru.by !


*️⃣ JDK (Java Development Kit): Содержит инструменты для разработки Java-приложений, включая компилятор (javac) и другие утилиты.
*️⃣ JRE (Java Runtime Environment): Среда выполнения Java-программ, включает JVM и Java Class Library.
*️⃣ JVM (Java Virtual Machine): Виртуальная машина Java, выполняющая байт-код. Состоит из Class Loader, Runtime Data Area, Native Method Interface, Execution Engine и других компонентов.

#️⃣Процесс выполнения:

1. Class Loader загружает классы.
2. Runtime Data Area предоставляет область памяти для выполнения программы.
3. Execution Engine интерпретирует и компилирует байт-код в машинный код.
4. Native Method Interface (JNI) позволяет выполнять нативные методы.
5. Native Method Libraries содержат библиотеки нативных методов.

🔠 Здесь java с 0 до экспертности: https://javaguru.by/core

💴 Микросервисы: https://javaguru.by/developer

🔠 Больше полезной инфы: https://javaguru.by
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥11👍7
Java Bean

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

Основные характеристики JavaBeans:

1. Класс должен быть публичным и иметь открытый конструктор без аргументов.
2. Приватные поля класса должны быть доступны с помощью геттеров и сеттеров (
getter и setter методы).
3. Класс должен быть сериализуемым, то есть должен реализовывать интерфейс
Serializable.

JavaBeans также могут иметь дополнительные свойства, такие как события и методы уведомления, которые позволяют другим компонентам реагировать на изменения состояния.
🔥15👍74
🔄 Как часто вам приходится вносить изменения в тесты из-за обновления интерфейса? 

Это может занимать уйму времени и вызывать постоянные проблемы с поддержкой. Java Generics позволяет вам создать универсальные методы, которые можно использовать с различными элементами UI. 

Например, можно создать метод, который будет взаимодействовать как с кнопками, так и с полями ввода, без необходимости дублирования кода. 

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

🔧Ваши тесты API часто оказываются негибкими и требуют множества изменений при добавлении новых эндпоинтов? 

Применение Java Generics для создания универсальных тестов помогает создать тесты, которые могут адаптироваться под различные эндпоинты. 

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

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

🔍Приходится ли вам сталкиваться с повторяющимися структурами данных в тестах? 

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

Например, вы можете использовать один обобщенный класс для обработки списков данных различных типов. 

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

🌐Сложности с поддержкой тестов на разные типы браузеров? 

Тестирование UI на различных браузерах может быть трудоемким и запутанным. Java Generics позволяет создать обобщенные методы для работы с различными браузерами, что упрощает создание и поддержку тестов. 

Например, вы можете создать метод, который будет работать как с Chrome, так и с Firefox, без необходимости дублирования кода. 

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

📢Хотите узнать как применить Java Generics на своих проектах?

Приходите на открытый урок с Павлом Балахоновым и задавайте свои вопросы.

Открытый урок проходит в рамках курса Java QA Engineer. Professional. Для разработчиков автоматизированного тестирования на Java.

🗓Стартуем сегодня в 20:00 по мск.

Торопитесь! Места ограничены. Для регистрации на открытый урок нажмите здесь.

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6👍2🔥2
ListIterator

ListIterator — это интерфейс итератора, предназначенный специально для работы со списками.

В отличие от обычного Iterator, ListIterator позволяет не только итерировать список в прямом направлении, но и в обратном.
Он поддерживает операции для перемещения вперед и назад по списку.

ListIterator реализует методы:
— next(): переход к следующему элементу.
— previous(): переход к предыдущему элементу.
— hasNext(): проверка, есть ли следующий элемент.
— hasPrevious(): проверка, есть ли предыдущий элемент.
— add(): добавление элемента в список.

ListIterator часто используется, когда нужно пройти по списку в обоих направлениях. Например, чтобы сначала обработать элементы в прямом порядке, а затем в обратном. Или чтобы вставить элементы в произвольное место списка.
👍21🔥42🎉2
📚 Пройди тест на знание Java и получи доступ к 59 открытым урокам по Spring

🕗 Два открытых урока можно посмотреть без регистрации и оценить формат обучения. Для доступа ко всем открытым урокам из курса «Разработчик на Spring Framework» от OTUS необходимо пройти входное тестирование: ответить на 21 вопрос и уложиться в тайминг.

📊 -Курс рассчитан на профессионалов с практическим опытом работы на Java.
- Мы будем 5 месяцев погружать вас в теорию и практику Spring Framework.
- Дадим 18 практических работ. Процесс review сдаваемой работы максимально приближен к тому, каким он мог быть на реальном проекте. Помимо этого, мы попросим вас сдать дипломную работу, каких скучных записанных занятий, только живые онлайн-лекции, интересные практические задачи и развернутая обратная связь от лучших экспертов ниши. 📅 Старт группы уже 31 июля 2024г. Доступна рассрочка на обучение.

➡️ НАЧАТЬ ТЕСТИРОВАНИЕ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
4👍3🔥21