bookjava | Unsorted

Telegram-канал bookjava - Библиотека Java разработчика

11206

Библиотека Java разработчика. Java, Spring, Maven, Hibernate По всем вопросам @evgenycarter

Subscribe to a channel

Библиотека Java разработчика

Виртуальные потоки: революционное решение для параллелизма

Несмотря на то, что платформе Java почти 30 лет, она стабильно остаётся одной из трёх самых популярных языков программирования. Эта продолжающаяся популярность обусловлена виртуальной машиной Java (JVM), которая абстрагирует такие сложности, как управление памятью, и компилирует код во время выполнения, обеспечивая непревзойдённую масштабируемость на уровне интернета.

Долговременная актуальность Java также объясняется быстрым развитием языка, его библиотек и JVM. Виртуальные потоки Java, представленные в проекте Loom, инициативе сообщества OpenJDK, знаменуют собой революционное изменение в том, как Java справляется с параллелизмом.


Запускает 10 000 platform threads


public class PlatformThreadCreationTimeAnalyzer {

private static class Task implements Runnable {

@Override
public void run() {
System.out.println("Hello! I am a Platform Thread");
}
}

public static void main(String[] args) throws Exception {
long startTime = System.currentTimeMillis();
for (int counter = 0; counter < 10_000; ++counter) {
new Thread(new Task()).start();
}
System.out.print("Platform Thread Creation Time: " + (System.currentTimeMillis() - startTime));
}
}


https://dzone.com/articles/deep-dive-into-java-virtual-threads-a-game-changer

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Полнотекстовый поиск в java приложениях с помощью Elasticsearch

Рассмотрим, как использовать Elasticsearch в качестве поискового движка в приложениях на Spring Boot. Поговорим о стратегии реализации полнотекстового поиска, эффективной индексации сущностей JPA и их связей. Уделим внимание использованию аннотаций полей, настройке релевантности с помощью весовых коэффициентов и реализации нечёткого поиска для обработки вариаций запросов. Также обсудим методы
настройки синонимических связей, многоуровневых фильтров и ранжирования результатов по релевантности для повышения качества поиска.

https://habr.com/ru/companies/rostelecom/articles/851658/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Бесплатное IT-образование в 2024

Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления

Выбирайте нужное и подписывайтесь:

👩‍💻 Java: @Java_Iibrary
👩‍💻 Моб. разработка: @MobDev
👩‍💻 Frontend: @FrontendPortal
⚙️ Backend: @BackendPortal
📱 GitHub: @git_developer
🤓 Книги айти: @portalToIT
👩‍💻 Python: @PythonPortal
👩‍💻 C#: @KodBlog
👩‍💻 С/С++: @Cpportal
🖥 Базы Данных & SQL: @SQL
👩‍💻 Golang: @juniorGolang
👩‍💻 PHP: @PHPortal
👩‍💻 Разработка игр: @GameDevgx
👩‍💻 DevOps: @loose_code
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
🐞 Тестирование: @QAPortal
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign

➡️ Сохраняйте себе, чтобы не потерять

Читать полностью…

Библиотека Java разработчика

Yandex Cloud запустил сервис для ускорения разработки продуктов в облаке Yandex Serverless Integrations

Теперь разработчики смогут при минимальном написании кода автоматизировать различные процессы, например обработку онлайн-заказов и мониторинг систем безопасности.

Сделать это можно благодаря инструменту Yandex Workflows — он позволяет описать последовательность операций с помощью декларативного языка YAML. Сервис автоматически запустит эти процессы и проконтролирует их выполнение.

Помимо этого, Yandex Serverless Integrations включает в себя инструменты EventRouter для передачи событий между сервисами и API Gateway для создания шлюзов между внешними и облачными сервисами по спецификации OpenAPI 3.0.

Читайте подробнее в статье

Читать полностью…

Библиотека Java разработчика

👩‍💻 Хотите стать экспертом в разработке на Spring Framework?

Обучение на курсе «Разработчик на Spring Framework» от OTUS — это практический подход к освоению самого востребованного фреймворка для Java-разработчиков.
Узнайте, как создавать веб-приложения на микросервисной архитектуре, автоматизировать задачи с Spring Boot и реализовывать высокоуровневые решения!

В конце курса у вас будет портфолио из готовых приложений и глубокое понимание работы со Spring. Пройдите вебинар-собеседование, чтобы быть готовым к реальным интервью.

➡️ Пройдите вступительный тест для записи на курс и перейдите на новый профессиональный уровень с дипломом, признанным крупными компаниями: https://vk.cc/cCMlGq

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

Читать полностью…

Библиотека Java разработчика

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

CyclicBarrier — это синхронизирующий механизм из библиотеки
java.util.concurrent в Java, который позволяет нескольким потокам остановиться в определенной точке выполнения до тех пор, пока все потоки не достигнут этой точки. После того, как все потоки достигают барьера, они могут продолжить выполнение. Этот механизм часто используется, когда нужно координировать действия группы потоков, чтобы они начинали выполнение следующего этапа одновременно.

Основные характеристики и работа:
1. Количество потоков: CyclicBarrier создается с числом потоков (или "участников"), которые должны достичь барьера. Пока не все участники достигнут барьера, они будут ожидать.

2. Метод `await()`: Каждый поток вызывает метод await() на объекте CyclicBarrier. Это указывает, что данный поток достиг барьера и должен ждать остальных. Как только все потоки вызовут этот метод, барьер "открывается", и все потоки продолжают выполнение.

3. Повторное использование (цикличность): После того, как все потоки проходят через барьер, он может быть использован повторно, поэтому и называется "циклическим". Это удобно для сценариев, где есть многократные синхронизации потоков на разных этапах выполнения программы.

4. Фаза действия: CyclicBarrier может быть настроен так, чтобы выполнять определенное действие (заданный `Runnable`) один раз, когда все потоки достигают барьера. Это полезно для выполнения дополнительной работы после завершения синхронизации.

Пример использования:


import java.util.concurrent.CyclicBarrier;

public class CyclicBarrierExample {
public static void main(String[] args) {
int numThreads = 3;
CyclicBarrier barrier = new CyclicBarrier(numThreads, new Runnable() {
@Override
public void run() {
System.out.println("Все потоки достигли барьера. Выполняем действие.");
}
});

for (int i = 0; i < numThreads; i++) {
new Thread(new Task(barrier)).start();
}
}
}

class Task implements Runnable {
private CyclicBarrier barrier;

public Task(CyclicBarrier barrier) {
this.barrier = barrier;
}

@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName() + " выполняет работу.");
Thread.sleep(1000); // Симуляция работы
System.out.println(Thread.currentThread().getName() + " достиг барьера.");
barrier.await(); // Ожидание остальных потоков
System.out.println(Thread.currentThread().getName() + " продолжает выполнение.");
} catch (Exception e) {
e.printStackTrace();
}
}
}


Когда использовать CyclicBarrier:
1. Координация этапов: Если нужно, чтобы несколько потоков выполнили этап работы и затем продолжили к следующему этапу только после того, как все потоки завершат текущий.

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

3. Многократные барьеры: Если требуется многократная синхронизация в течение выполнения задачи (например, при итерациях параллельного алгоритма).

Отличие от CountDownLatch:
- CyclicBarrier можно использовать многократно, в то время как CountDownLatch работает один раз.
- CyclicBarrier ожидает определенного числа потоков, тогда как CountDownLatch уменьшается каждый раз при вызове countDown(), независимо от того, каким потоком это было вызвано.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Знали ли вы, что вы можете перетащить класс или запись #Java в @vaadin Copilot, чтобы автоматически сгенерировать для него форму? Теперь вы знаете ✨

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Научитесь использовать ключевую особенность Clojure на открытом уроке для опытных разработчиков.

Запускайте программу всего один раз и работайте с ней в реальном времени весь процесс разработки.

Приходите на вебинар «Интерактивная разработка на языке Clojure»!Записаться на событие: https://vk.cc/cCIZmx

Вы узнаете:
- Как добавлять новые функции и изменять состояние программы
- Как «прощупывать» любые данные и пошагово отлаживать код.
- Как запускать тесты и подключаться к внешним системам.

Занятие пройдёт 24 октября в 20:00 МСК и приурочено к старту курса «Clojure Developer». После урока вы сможете продолжить обучение по специальной цене и даже в рассрочку!
Для бесплатного участия и получения записи регистрируйтесь прямо сейчас: https://vk.cc/cCIZmx

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

Читать полностью…

Библиотека Java разработчика

Java. Проблема с null. Null safety

В этом видео я рассказываю о проблеме с null в языке программирования Java, из-за которой возникает печально известное NullPointerExeption. Даю некоторые рекомендации по организации кода для борьбы с этой проблемой и повышения надежности работы программ.

источник

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как легко перейти с Java на Rust: Особенности и советы

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

Кроме того, я создал три open source библиотеки на Rust, которые публиковал на GitHub. Это позволило мне лучше изучить идиоматичный Rust, работу с асинхронностью и т. д.

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

https://habr.com/ru/articles/756984/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как эффективно разделять приложения на микросервисы?

Расскажет Евгений Непомнящий — разработчик в IT Sense. Встречаемся на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом:

- рассмотрите принципы функциональной декомпозиции;
- научитесь выделять отдельные компоненты приложения;
- погрузитесь в методику EventStorming;
- изучите подход API First Design;
- узнаете, как разрабатывать API.

Встречаемся 28 октября в 20:00 мск в рамках курса «Software Architect». Доступна рассрочка на обучение!

Ссылка для регистрации: https://vk.cc/cCxnDx

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

Читать полностью…

Библиотека Java разработчика

Подборка Telegram каналов для программистов

Системное администрирование 📌
/channel/sysadmin_girl Девочка Сисадмин
/channel/srv_admin_linux Админские угодья
/channel/linux_srv Типичный Сисадмин

/channel/devops_star DevOps Star (Звезда Девопса)
/channel/i_linux Системный администратор
/channel/linuxchmod Linux
/channel/sys_adminos Системный Администратор
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux

1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus

Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах

GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
/channel/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
/channel/game_devv Все о разработке игр

Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов

БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT
/channel/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста

QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика

Шутки программистов 📌
/channel/itumor Шутки программистов

Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров

Английский 📌
/channel/UchuEnglish Английский с нуля

Математика 📌
/channel/Pomatematike Канал по математике
/channel/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
/channel/Excel_lifehack

/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)

Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT

Читать полностью…

Библиотека Java разработчика

Совет по Java💡

При использовании Projections и QueryDSL, вместо того чтобы использовать Projections.constructor(Class type, Expression ...), можно добиться большей типобезопасности, применяя аннотации @QueryProjection и @QueryEntity. Таким образом, для вашей проекции будет сгенерирован типобезопасный QClass.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Операции с GridFS в MongoDB

Эффективно храните и извлекайте большие файлы, используя функцию GridFS в MongoDB. Spring Data MongoDB обеспечивает поддержку операций GridFS.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Тестовое собеседование на Middle Java-разработчика в среду

Заходи завтра, 9 октября в 19:00 по мск на открытое онлайн-собеседование от ШОРТКАТ, чтобы узнать:

Чего ждут от кандидатов на Middle позиции в Java-разработке

Какие вопросы задают на интервью и зачем

Как подготовиться к собесу,
чтобы получить оффер
Интервью проведёт Роман Половинцев, ex. TeamLead в Сбере.

Чтобы записаться на эфир, переходи в бот → @shortcut_sh_bot

Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2Vtzqwv1Qwt

Читать полностью…

Библиотека Java разработчика

😑 Нельзя просто взять и развернуть отказоустойчивый кластер

Или можно?

Говорят, что выпускники курса «Kubernetes Мега» от учебного центра Слёрм даже не задаются этим вопросом. Они точно знают, как:

👉 перенести свой продукт на платформу k8s
👉 ускорить траблшутинг
👉 обновить систему без простоя
👉 автоматизировать развертывание кластеров
👉 повысить отказоустойчивость своего продукта

А еще умеют развертывать и обслуживать кластеры с автоматической ротацией сертификатов, автодеплоем, резервным копированием и правильным хранением секретов.

⭐️ Новый поток стартует 28 октября.
До 24 октября при покупке места на курсе можно получить в подарок запись интенсива по Service Mesh и сэкономить 50 000 ₽.

➡️ Забрать промокод на скидку — через бота.

Присоединяйтесь!

Реклама ООО «Слёрм» ИНН 3652901451

Читать полностью…

Библиотека Java разработчика

🚀 Советы по Java 🚀

Компактный конструктор в записях (Records)

Компактная форма помогает разработчикам сосредоточиться на проверке и нормализации параметров, без утомительной работы по присваиванию параметров полям. 🔥

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Шпаргалка по паттернам проектирования

👉@BookJava

Читать полностью…

Библиотека Java разработчика

🧠 Если у вас есть конфликты при мерже, не волнуйтесь!

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

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Запуск однофайловых программ с исходным кодом

В JDK 11 Java представила возможность запускать программу из одного файла исходного кода с помощью команды java, без необходимости сначала явно компилировать исходный код. Это работает за счёт того, что команда java автоматически вызывает компилятор и сохраняет скомпилированный код в памяти. Это может быть отличным способом изучать Java или исследовать новые возможности в API Java, не проходя через процесс компиляции и последующего выполнения кода. Существует несколько способов использования этой функции, а также некоторые ограничения, которые нужно иметь в виду.

https://dev.java/learn/single-file-program/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

♨️ Анализировать множество показателей и не перегружать приложение?
С Java Flight Recorder – это легко.


Приглашаем вас на открытый урок «Обзор инструмента Java Flight Recorder».

🗓 22 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced» от OTUS.

JFR:
- Регистрирует множество событий внутри виртуальной машины Java
- Не ухудшает производительность
- Помогает детально разобраться в причинах сбоев и ошибок

Хотите освоить? - приходите на вебинар!

Спикер – Александр Царёв, техлид в Сбере.

🔗 Ссылка на регистрацию: https://vk.cc/cCJ0hu

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

Читать полностью…

Библиотека Java разработчика

Совет по Java Time

Обратите внимание на equals() и isEqual() в классах работы с датой и временем! ZonedDateTime, OffsetDateTime и OffsetTime ведут себя по-разному:

- equals(): Сравнивает все поля (включая зону/смещение)
- isEqual(): Сравнивает только момент времени (игнорируя зону/смещение)

Один и тот же момент времени может дать разные результаты.


👉@BookJava

Читать полностью…

Библиотека Java разработчика

Точки соприкосновения: Java & GC
Дмитрий Силин

Разберемся, как вместе уживаются Java-приложение и garbage collector (GC). Какие механизмы позволяют организовать Stop-the-World (STW) режим. Рассмотрим, что такое safepoint и checkpoint. Какие потоки останавливаются, а какие могут продолжить работу. Как GC находит объекты, и как поток приложения обнаруживает изменения, сделанные сборщиком мусора.

Далее перейдем к базовому механизму concurrent режима — барьерам. Что это такое, какие бывают. Рассмотрим, как они попадают в код, на примере интерпретатора. Разберем 2 примера барьеров — read и pre-write, на которых построен concurrent marking в реальных сборщиках мусора. Изучим опыт разработчиков JVM по оптимизации барьеров — colored pointers, self-healing. В заключение сравним STW и concurrent подходы.

источник

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Хотите научиться разрабатывать парсеры pdf-файлов и создавать полезные приложения?

Приглашаем на открытый урок «Разработка парсера pdf-файла».

🗓 24 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional»

На вебинаре разберем:

- как разработать парсер для выписки ВТБ банка в формате pdf;
- весь путь от идеи до практического применения;
- ответы на все возникающие вопросы.

⬇️ В результате урока вы получите практически полезное приложение с подробностями реализации.

Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик и преподаватель.

Все участники вебинара получат специальную цену на обучение!

🔗 Ссылка на регистрацию: https://vk.cc/cCF7BP

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

Читать полностью…

Библиотека Java разработчика

14 советов по высокопроизводительной персистентности в Java

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

Для создания высокопроизводительного уровня доступа к данным требуется много знаний о внутреннем устройстве баз данных, JDBC, JPA, Hibernate, и в этой статье обобщены некоторые из наиболее важных приемов, которые можно использовать для оптимизации корпоративного приложения.

https://vladmihalcea.com/14-high-performance-java-persistence-tips/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как работает вывод типов?

Для начала разберемся, что такое вывод типов. Type inference – это способность компилятора догадаться, какой тип нужно подставить, и сделать это за вас. На обычном интервью никто не спросит детали алгоритма вывода типов, достаточно будет сказать, что вывод происходит статически, только на основании типов аргументов и ожидаемого типа результата. По сути, вопрос заключается не в «как работает?», а «что это и когда возникает?».

Первое, что многим приходит в голову при фразе «вывод типов» – diamond operator <>. Он появился в Java с версии 7. Его применяют к конструкторам дженерик классов, чтобы отличать требование автоматического вывода типа от raw type.

С Java 9 diamond operator заработал и для анонимных классов.

Для дженерик методов можно указывать параметр явно, но diamond синтаксически недопустим – вывод и так сработает по умолчанию.

В Java 10 для вывода типа локальной переменной добавлено ключевое слово var. Работает это так же, как в большинстве современных языков – ключевое слово ставится вместо типа при объявлении.

Типы выводимых параметров лямбда-выражения также можно не указывать. С Java 11 вместо типа указывается ключевое слово var. Такой синтаксис дает возможность добавлять параметру модификаторы и аннотации.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Расскажите про приведение типов. Что такое понижение и повышение типа?

Java является строго типизированным языком программирования, а это означает, то что каждое выражение и каждая переменная имеет строго определенный тип уже на момент компиляции. Однако определен механизм приведения типов (casting) - способ преобразования значения переменной одного типа в значение другого типа.

В Java существуют несколько разновидностей приведения:

• Тождественное (identity). Преобразование выражения любого типа к точно такому же типу всегда допустимо и происходит автоматически.
• Расширение (повышение, upcasting) примитивного типа (widening primitive). Означает, что осуществляется переход от менее емкого типа к более ёмкому. Например, от типа byte (длина 1 байт) к типу int (длина 4 байта). Такие преобразование безопасны в том смысле, что новый тип всегда гарантировано вмещает в себя все данные, которые хранились в старом типе и таким образом не происходит потери данных. Этот тип приведения всегда допустим и происходит автоматически.
• Сужение (понижение, downcasting) примитивного типа (narrowing primitive). Означает, что переход осуществляется от более емкого типа к менее емкому. При таком преобразовании есть риск потерять данные. Например, если число типа int было больше 127, то при приведении его к byte значения битов старше восьмого будут потеряны. В Java такое преобразование должно совершаться явным образом, при этом все старшие биты, не умещающиеся в новом типе, просто отбрасываются - никакого округления или других действий для получения более корректного результата не производится.
• Расширение объектного типа (widening reference). Означает неявное восходящее приведение типов или переход от более конкретного типа к менее конкретному, т.е. переход от потомка к предку. Разрешено всегда и происходит автоматически.
• Сужение объектного типа (narrowing reference). Означает нисходящее приведение, то есть приведение от предка к потомку (подтипу). Возможно только если исходная переменная является подтипом приводимого типа. При несоответствии типов в момент выполнения выбрасывается исключение ClassCastException. Требует явного указания типа.
• Преобразование к строке (to String). Любой тип может быть приведен к строке, т.е. к экземпляру класса String.
• Запрещенные преобразования (forbidden). Не все приведения между произвольными типами допустимы. Например, к запрещенным преобразованиям относятся приведения от любого ссылочного типа к примитивному и наоборот (кроме преобразования к строке). Кроме того, невозможно привести друг к другу классы, находящиеся на разных ветвях дерева наследования и т.п.

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

Для проверки возможности приведения нужно воспользоваться оператором instanceof:

Parent parent = new Child();
if (parent instanceof Child) {
Child child = (Child) parent;
}


👉@BookJava

Читать полностью…

Библиотека Java разработчика

👩‍💻 «Знакомство со Spring Cloud».

Приглашаем на открытый урок, где мы разберем:

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

🗓 10 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional»

🔗 Ссылка на регистрацию : https://vk.cc/cCcj9h

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

Читать полностью…

Библиотека Java разработчика

Совет по Spring Boot 🚀

Создайте свой собственный FailureAnalyzer

Перехват исключений при запуске и их преобразование в читаемые сообщения можно эффективно реализовать с помощью FailureAnalyzer в Spring Boot 🔥

https://docs.spring.io/spring-boot/how-to/application.html#howto.application.failure-analyzer

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Взлом JVM-приложения с помощью отладчика IntelliJ IDEA

Что если мы скажем вам, что отладчик может стать не просто инструментом для поиска ошибок, а настоящим «режимом бога» в мире кода?

В новом переводе от команды Spring АйО рассматривается, как можно исследовать память приложения и изменить его функциональность, при этом не затрагивая исходного кода, а используя только лишь отладчик IntelliJ IDEA.

https://habr.com/ru/companies/spring_aio/articles/845554/

original https://blog.jetbrains.com/idea/2024/08/hacking-a-jvm-application-with-intellij-idea-s-debugger/

👉@BookJava

Читать полностью…
Subscribe to a channel