Советы по использованию Spring Framework 🚀
Используйте аспектно-ориентированное программирование (AOP) в SpringFramework для решения сквозных задач. Реализуйте протоколирование, безопасность и кэширование с помощью @Aspect
и pointcuts. 🔥
👉@BookJava
Как перейти на Scala: основы и особенности
Расскажет опытный эксперт — Алексей Воронец. На уроке вы:
- обсудите синтаксические особенности языка;
- узнаете, какие возможности языка позволяют комфортно использовать подходы функционального программирования;
- попрактикуетесь в написании функций и методов, создании иммутабельных конструкций;
- получите представление о возможностях композиции.
Занятие пройдёт 10 апреля в 20:00 мск в рамках курса «Scala-разработчик». Доступна рассрочка на обучение!
Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cvVJsJРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Что хранится в файле манифеста?
В JAR архиве можно найти файл META-INF/MANIFEST.MF
. Это манифест архива – хранилище его метаинформации. Манифест обычно добавляется той же утилитой, которой собирается jar-файл: maven-jar-plugin
, команда JDK jar
.
Манифест – текстовый файл, который состоит из заголовков, строчек вида ключ: значение
. Заголовки разделены на секции. Файл начинается с главной секции, описывающей метаинформацию всего архива. Следом, отделенные пустыми строками, идут секции для отдельных пакетов и файлов. В них могут переопределяться общие заголовки. JVM игнорирует неизвестные ей заголовки, что позволяет сторонним утилитам хранить в манифесте свою специфичную метаинформацию.
Вот некоторые из часто используемых заголовков:
• Информация об архиве: Manifest-Version, Created-By, Multi-Release, Built-By
• Main-class – точка входа приложения
• Classpath приложения
• Информация об экстеншне (Specification и Implementation, deprecated)
• Заголовки OSGI бандла
• Типы и хэши файлов архива (особенно применимо в Android приложениях)
Полный список стандартных заголовков можно почитать в документации.
👉@BookJava
Spring Framework в деталях
SimpleJdbcInsert - Spring Framework JDBC
АОП в Spring Framework
XML-конфигурация АОП в Spring Framework
Транзакции - Spring Framework в деталях
источник
👉@BookJava
25 расширений Docker для Java-разработчика
Знакомство с миром Docker подобно исследованию огромной игровой площадки компьютерной магии. Каждый раз, когда мы пишем код или настраиваем что-то, мы понимаем, насколько потрясающей может быть контейнеризация. Как разработчики, мы всегда ищем способы сделать нашу работу более плавной и быстрой. Именно здесь на помощь приходят расширения Docker.
https://digma.ai/top-docker-extensions-for-developers/
👉@BookJava
Начните карьеру в ИТ с гранта на обучение до 100% в Центральном университете!
Грант можно получить на одно из направлений бакалавриата по искусственному интеллекту, разработке и бизнес-аналитике. Помимо диплома и практико-ориентированного образования студенты получат:
- Персонализацию учебной траектории;
- Стажировку в одной из лучших ИТ-компании страны;
- Личного ментора на все время обучения;
- Доступ к современному кампусу в центре Москвы.
Получить полную информацию и оставить заявку можно здесь.
erid:2VtzqxNjMMF
Реклама, АНО ВО «Центральный университет», ИНН 7743418023
Знаете ли вы, что можно создать полнофункциональное веб-приложение на Java с помощью Spring Initializr? Вот как это сделать за 45 секунд ⚡️
👉@BookJava
Для чего нужно ключевое слово super?
Как и многие другие ключевые слова, super
имеет несколько разных значений в зависимости от контекста:
1. Задать нижнюю границу generic-типа: Consumer<? super Number>
2. Обратиться к члену класса-родителя, который перекрыт (shadowed) членами наследника или локальными переменными: int foo = super.foo
3. Вызвать в конструкторе конструктор родителя: SubClass() { super("subclass param"); }
4. В случае неопределенности, уточнить родительский тип interface A {
default int foo() { return 1; }
}
interface B {
default int foo() { return 2; }
}
class C implements A, B {
@Override
public int foo() {
return B.super.foo() ;
}
}
👉@BookJava
Mastering the Main Thread in Java
Язык Java, известный своими мощными возможностями многопоточности, основан на концепции потоков, выполняющихся параллельно. В основе каждого Java-приложения лежит главный поток. Этот поток организует точку входа в программу, инициирует другие потоки и управляет жизненным циклом приложения. В этом учебном пособии по программированию мы погрузимся в мир главного потока, рассмотрим его роль, нюансы и лучшие практики оптимального управления потоками.
https://www.developer.com/java/java-main-thread/
👉@BookJava
Распределённые транзакции
В статье рассматриваются общие подходы к решению проблемы двойной записи, когда два микросервиса должны гарантировано, атомарно записать информацию в бд.
Каждый из рассмотренных вариантов имеет свои достоинства и недостатки, и может быть применен в промышленной разработке.
https://developers.redhat.com/articles/2021/09/21/distributed-transaction-patterns-microservices-compared
👉@BookJava
Совет по Spring Boot 🚀
Создание собственного FailureAnalyzer
Перехват исключений при запуске и преобразование их в человекочитаемые сообщения эффективно достигается с помощью анализатора отказов в Spring Boot 🔥.
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.application.failure-analyzer
👉@BookJava
🚀 Пристегните ремни: Spring Framework набирает высоту
⚡️ Пройди тест по Java от OTUS и проверь, готов ли ты к обучению на нашем курсе?
Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cvHNJp
🎫 Курс можно приобрести в рассрочкуРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Реализации Microkernel архитектуры с помощью Java OSGI
Я хотел бы поделиться опытом реализации микроядерной архитектуры (microkernel) на Java с помощью OSGI (Open Service Gateway Initiative). Этот подход является промежуточным вариантом между микро-сервисной и монолитной архитектурой. С одной стороны присутствует разделение между компонентами на уровне VM с другой - межкомпонентное взаимодействие происходит без участия сети, что ускоряет запросы.
https://habr.com/ru/articles/801785/
👉@BookJava
В чем разница между Iterator и ListIterator?
— Iterator может итерироваться только вперед, а ListIterator может и вперед и назад.
— ListIterator имеет дополнительные методы previous()
, hasPrevious()
, add(), set()
.
— ListIterator позволяет получить индекс текущего элемента.
— ListIterator может начать итерацию с произвольного индекса списка, а Iterator только с начала.
— ListIterator можно получить только из объектов, реализующих List, а Iterator из любой коллекции.
— ListIterator является более функциональным и позволяет вносить изменения в список во время итерации, Iterator — только читать.
— Итераторы безопасны для использования в многопоточных приложениях, а ListIterator — нет.
👉@BookJava
⁉️ Как стать востребованным разработчиком на Java в 2024?
Освойте JVM и облачную инфраструктуру на онлайн-курсе «Java Developer. Advanced» от OTUS.
После обучения вы сможете:
- реализовать проект с несколькими сервисами, развёрнутыми в Kubernetes с демонстрацией модели метрик на дашборде Grafana;
- подать нагрузку на приложение, снять дамп памяти и описать его содержимое;
- запустить профилирование приложения под нагрузкой.
Все это позволит вам претендовать на вакантные позиции в крупных российских и международных компаниях.
Стартуем уже 28 марта!
👉 Узнайте подробности и пройдите короткий тест прямо сейчас, это последний шанс попасть в группу: https://vk.cc/cvBhjjРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Java 23: Восстановление баланса с помощью примитивных паттернов
Постоянное внедрение сопоставления шаблонов в Java привело к тому, что некоторые функции языка оказались более значимыми, чем другие, и разбалансировали язык. В Java 23 примитивные паттерны исправят эту ситуацию в отношении примитивных типов в instanceof
и switch
. В этом эпизоде также рассматриваются другие грядущие паттерны ('deconstruction', 'static', 'instance' и 'constant') и показывается, как они будут развивать сопоставление паттернов в Java.
0:00 Intro
1:02 Existing Patterns
1:23 Type Patterns
1:32 Guarded Patterns
1:53 Record Patterns
2:09 Unnamed Patterns
2:29 Nested Patterns
2:50 Summary of Existing Patterns
3:38 Primitive Patterns in instanceof
5:17 Primitive Patterns in switch
6:30 Primitive Patterns when Nested
7:33 Upcoming Patterns
7:59 Deconstruction Patterns
8:40 Static Patterns
9:09 Instance Patterns
9:54 Constant Patterns
10:37 Try JDK 23 EA!
источник
👉@BookJava
Трассировка в Spring Boot3
Вспоминая свои первые годы работы, я несколько удивляюсь тому, как я устранял проблемы, связанные с продакшеном. Я работал над проектом, в котором занимался всем - от взаимодействия с клиентами до кода, развертывания и, естественно, решения проблем. Когда возникала проблема и у меня не было четкого решения, я брал дамп базы данных продакшена, запускал приложение на своей машине с этой базой данных, затем звонил заказчику и пытался повторить его действия, используя необходимые отладочные указатели и операторы печати, чтобы точно определить проблему. В то время этот метод оказался для меня эффективным. Приложение было небольшим, с ограниченной базой пользователей, и с ним вполне мог справиться один разработчик. Однако я еще не понимал важности протоколирования.
https://medium.com/javarevisited/tracing-in-spring-boot3-097205dc08f4
👉@BookJava
Тест по Java от OTUS
Проверь насколько хорошо ты знаешь Java
Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса🎁 .
👉 ПРОЙТИ ТЕСТ: https://otus.pw/W77D/?erid=2VtzqvA68UN
🎫 А ещё, сейчас действуют скидка в честь дня рождения Otus! Возможна оплата в рассрочку! Предложение ограничено.
Хотите протестировать учебный процесс заранее? Регистрируйтесь на открытый урок «Знакомство с Micronaut» 11 апреля
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Читать полностью…
erid: LjN8KTAAY
❓ Как стать DevOps-специалистом всего за полгода и увеличить свой доход минимум в 3 раза?
Привет! Я Марсель Ибраев, Senior system engineer в Core42 Cloud и спикер учебного центра Слёрм. Совместно с ребятами из Честного Знака, Лаборатории Касперского, VK и Jetty Cloud мы запускаем новый крутой проект для всех начинающих DevOps-специалистов /channel/devopsupgrade/90
На своем канале собрал фишки, которые помогут:
⚡️ начать наконец свой путь в DevOps;
⚡️ освоить базовые компетенции для DevOps-специалиста;
⚡️ стать Junior DevOps и повысить свою стоимость на рынке труда в 3 раза.
Уже сейчас вы можете забрать бесплатный роадмап по основным компетенциям в девопсе, который поможет вам начать свой карьерный путь.
🔥 Проект ограничен по времени. Залетайте на корабль!
ПОДПИСАТЬСЯ НА КАНАЛ
и забрать роадмап
На что способны виртуальные потоки Java в обработке файлов
Начнем с того,что я не специалист по Java и у меня нет коммерческого опыта на этом языке. Я просто обычный кодер, который по вечерам пилит проекты на Java, а основной мой стек состоит из PHP и смеси Python + Go. В данной статье хочу с вами поделиться опытом с использованием виртуальных потоках (Virtual Threads) в обработке файлов.
https://habr.com/ru/articles/803955/
👉@BookJava
Как приложению ограничить доступ к файлу?
В целях безопасности, весь доступ приложения к определенным частям кода и ресурсам может быть ограничен. Решения о доступе к, например, Reflection API, или к файлу принимаются менеджером безопасности.
Внутри менеджера представлен набор методов check*(
), которые делегируют выполнение основному методу checkPermission()
. Сам доступ, права на который нужно проверить, представляется классом java.security.Permission
. Так, доступ к файлу на чтение проверяет метод checkRead
. Он передает в checkPermission
объект FilePermission
с указанным именем файла.
Экземпляр класса SecurityManager
, который реализует нужную логику ограничения доступа, можно установить программно методом System.setSecurityManager
, или на старте приложения флагом -Djava.security.manager
. По умолчанию менеджер не установлен.
Менеджер безопасности изначально был нужен для ограничения апплетов – они выполнялись в браузере пользователя и не должны были получить доступ к локальным пользовательским данным. Сейчас технология апплетов устарела, но SecurityManager
остается всё таким же актуальным.
👉@BookJava
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
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/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Чат программистов📌
/channel/developers_ru
Библиотеки 📌
/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 Полезные советы по программированию
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
Excel лайфхак📌
/channel/Excel_lifehack
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.
В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
JPoint 2024 — крупнейшая в России Java-конференция для опытных разработчиков.
Конференция будет проходить весной 2024 года — в течение трех дней: 17 апреля в онлайне и 24–25 апреля в Москве, с возможностью подключиться онлайн.
В программе доклады про архитектуру, фреймворки, языки, эксплуатацию, VM и Runtime. Лучшие практики Java-разработки, использование Spring Boot, работа JVM «под капотом», программирование на Kotlin и других JVM-языках, backend-архитектура и многое другое. Кроме докладов будут воркшопы, мастер-классы, интервью и круглые столы. В этом году будут выступать спикеры из Сбера, Яндекса, VK, Тинькофф, Huawei, Контур, Syntacore, Мир Plat.Form и OZON.
Билеты можно купить за счет компании. Для тех, кто покупает билеты сам, у нас есть промокод на скидку 10%: BOOKJAVA
Реклама. ООО "Вайлдкард". ИНН 7801718607
Как Java-разработчику сделать прорыв в карьере в 2024?
Прийти на обновленную программу онлайн-курса «Java Developer. Professional» от OTUS!
✅ Обучение также подходит опытным разработчикам на других языках.
В программе вас ждут еще больше вебинаров по наиболее актуальным и сложным темам. Ограниченный стек технологий. Нацеленность на понимание — разбор инструменты изнутри
Выбирайте хард уровень домашних заданий
💻 Хотите протестировать учебный процесс заранее? Регистрируйтесь на открытый урок «Знакомство с Micronaut» 11 апреля
➡️ Не упусти свой шанс — пройди вступительный тест, и проверь свой уровень:
https://otus.pw/ZgtL/?erid=LjN8KSozs
Quarkus — горячий тренд Java-разработки
Quarks ускоряет загрузку Java-приложений в CloudEra
Если вы занимаетесь разработкой Java-приложений, наверняка слышали о революционном фреймворке Quarkus. Если же еще не слышали, вот его краткое описание: Quarkus — это Kubernetes-нативный Java-стек, созданный для разработчиков, ставящих во главу угла производительность, гибкость и облачную нативную архитектуру.
В Quarkus реализован тот же подход, что и в Spring Boot, но с дополнительными преимуществами — меньшими артефактами с быстрой загрузкой, сокращением ресурсопотребления и повышением эффективности.
https://medium.com/javarevisited/exciting-news-in-the-world-of-java-development-4e07766d5a1f
👉@BookJava
Когда использовать WEB-INF, а когда META-INF?
В корне архива java-приложения часто встречаются директории WEB-INF
и META-INF
. Обе директории хранят в себе различные файлы с метаинформацией о программе, обычно в текстовом виде: yaml, xml, json, обычный текст.
META-INF используется в архивах всех типов. Главный файл этой директории – MANIFEST.MF
. Там же хранятся
• Объявления провайдеров SPI;
• Подпись архива: файлы .SF, .DSA, .RSA;
• INDEX.LIST с подсказками о местонахождении пакетов для загрузчика.
Иногда (не часто) приложения добавляют туда свои статические ресурсы, так как эта директория попадает в classpath и доступна в рантайме.
WEB-INF используется только в web-архивах (.war). Она не заменяет, но дополняет META-INF. В ней хранится:
• Главный файл web-приложения web.xml
;
• Дескрипторы тегов .TLD;
• Поддиректория classes/
с классами web-приложения;
• Поддиректория lib/ с
.jar-библиотеками зависимостей;
• Поддиректория tag/
с файлами тегов.
👉@BookJava
🦾 Как Java-разработчику сделать прорыв в карьере в 2024?
Присоединяйтесь к открытому уроку «Знакомство с Armeria»
На уроке мы погрузимся в удивительный мир фреймворка Armeria! Узнаем, какие возможности он предоставляет и как эффективно использовать его вместе с SpringBoot.
Урок посвящен курсу «Java Developer. Professional» от OTUS, где вы сможете расширить свои знания и навыки в Java разработке, и в частности, познакомиться с передовыми технологиями, такими как Armeria.
🔥 Не упустите шанс поучаствовать в увлекательном уроке и расширить свои профессиональные горизонты!
👉 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись:
https://otus.pw/KBOa/?erid=2Vtzqvgz4ff
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Java 22 уже доступна
Download Now: https://jdk.java.net/22/
Release notes: https://jdk.java.net/22/release-notes
API Javadoc: https://docs.oracle.com/en/java/javase/22/docs/api/index.html
Features: https://openjdk.org/projects/jdk/22/
Inside Java on JDK22: https://inside.java/2024/03/19/the-arrival-of-java-22/
👉@BookJava