Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.64K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
☕️ Сертификаты и тренинги для Java-разработчика

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

https://proglib.io/sh/x3AwYqfjVH
Effective Kotlin: Best practices (2019)
Автор: Marcin Moskala
Количество страниц: 445

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

Скачать книгу
#Будва_Черногория #вакансия #офис #fulltime #java #естьработа #вилка

Добрый день.
Вакансия: Java разработчик (серверный)
Компания: Alar Studios
Формат работы: офис
Занятость: full time
Опыт: от 4 лет
З.п вилка: 2300 - 3000 eur (на руки)

Заниматься нужно будет построением сервиса аналитики очень больших объемов данных (big data analytics) на базе пропраетарной базы данных, использующей в том числе мощности GPU для той самой магии, которая понимает почти весь SQL, включая joins. В точки зрения технологической сложности - это высший пилотаж и поле для применения и раскрытия таланта! Предлагаем возможность развиваться в комфортных условиях мягкого климата Черногории на берегу моря (офис).

Основные задачи:
• Писать новый код на основании требований лидов
• Участие в разработке тех самых требований с лидами, оформление предложений
• Следование идеологии Agile, включая многие ритуалы (стендапы, спринты, планирование спринтов)
• Взаимодействие с коллегами по команде - у нас ансамбль, не соло проект

Требования:
• Java
• Spring
• Apache Calcite
• Понимание multithreading, механизмов синхронизации, очередей
• Понимание TCP/IP, сетевого кода, намного больше, чем просто чем UDP от TCP отличается (и почему)
Хорошо бы, но не обязательно:
• Опыт создания распределенных систем
• Опыт работы с Kubernetes
• Что такое CRDT знаете? ;-)
• Опыт с Kafka и похожим
Мы предлагаем:
• Очень интересную работу - сколько в мире систем распределенных RDBMS? Вам предоставляется шанс работать над одной из самых уникальных!
• Оплачиваемые отпуска
• Официальное трудоустройство и оформление ВНЖ в Черногории
• Оплачиваем переезд (лично вам), помогаем с поиском жилья (поиск, варианты, посмотреть, подтвердить), помогаем перевезти семью.
Комфортный офис в комфортном климате, море в 10-и минутах пешком.
Для интервью необходимо будет выполнить тестовое задание
Ваше CV прошу направлять на [email protected] или в @daikirey
SmartDev - первая технологическая конференция Сбера для разработчиков

20 мая | Онлайн

Первая техно-конференция от Сбера для разработчиков. Шесть параллельных стримов, топовые международные спикеры. Dev to dev.

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

Обсудим темы:
- новые типы приложений для разработки навыков виртуальных ассистентов семейства Салют Native Apps и Canvas Apps с возможностью интеграции в СберБанк Онлайн, а также сервисы Platform V для back-end разработки;
- презентация SmartServices для разработчиков навыков;
- SmartNLP — погружение в NLP/NLU технологии будущего
и др.

Участие бесплатное, по предварительной регистрации на сайте конференции.

До встречи в прямом эфире!
Как Spring Framework реализует паттерн Dependency Injection?

Инверсия контроля (inversion of control, IoC) – принцип проектирования, по которому контроль над потоком управления передается фреймворку. Управляющий и прикладной код разделяются. При разработке модуля этот подход избавляет от необходимости знать о других модулях программы и деталях их взаимодействия. Такой код становится более переипользуемым и модульным, уменьшает связность.

Внедрение зависимостей (Dependency Injection, DI) – одна из реализаций IoC. При взаимодействии с другими модулями, программа оперирует высокоуровневыми абстракциями, тогда как конкретная её реализация поставляется фреймворком.

Стандартная реализация DI – фреймворк инстанциирует все сервисы, и складывает их в IoC-контейнер. При этом специальная сущность, Service Locator, занимается поиском соответствия реализаций абстракциям и их внедрением.

Spring – большой набор различных библиотек. DI реализуется одной из основных библиотек – Spring IoC.

Сущности бизнес-логики в Spring, как и в JavaEE называются beans. Бины объявляются различными способами, корни большинства из них лежат в понятии Configuration. В качестве контейнера бинов выступает ApplicationContext. Чтобы передать инициализацию зависимости контексту, она помечается аннотацией @Autowired.

Лучше разобраться в понятиях экосистемы Spring поможет известный доклад Евгения Борисова «Spring-потрошитель»:часть 1,часть 2.
Окунись в мир белого хакинга уже сегодня! Пройди бесплатный онлайн-интенсив Skillbox по программированию, изучи востребованный язык программирования Java и создай свой первый проект под руководством опытного специалиста.

Все подробности по ссылке: 👉https://clc.am/_N5FnA

За 3 дня интенсива ты:

⚡️ Освоишь основные инструменты программирования на Java.
⚡️ Напишешь программу для мониторинга активности рабочего стола.
⚡️ Получишь полезные советы разработчика с 15-летним опытом — Даниила Пилипенко.
⚡️ Узнаешь, как устроена работа Java-программиста.

Подключайся к прямому эфиру с 10 по 12 мая в 19:00 по московскому времени 😉
Spring Boot: Up and Running: Building Cloud Native Java and Kotlin Applications (2020)
Автор: Mark Heckler
Количество страниц: 328

Spring Boot - это наиболее широко используемая среда Java, которая загружается более 75 миллионов раз в месяц. Его простота и мощность изменили разработку приложений от монолитной архитектуры к микросервисной. Однако простота Spring Boot может сбивать с толку. Что нужно знать разработчикам, чтобы сразу же начать работать со Spring Boot продуктивно? В этой практической книге показано, как использовать фреймворк для написания успешных и важных приложений.

Скачать книгу
Зачем нужен package-info?

Обычно, чтобы создать новый пакет, вы создаете папку с соответствующим названием, и во всех ее .java файлах добавляете в начале строчку с названием пакета, вида package full.dir.path;. Этого вполне достаточно для работы.

Однако, дополнительно вы можете добавить в пакет его объявление – файл package-info.java. Несмотря на то, что это .java-файл, это не объявление класса. В названии класса дефисы запрещены, так что неоднозначности не возникнет.

Минимальное содержимое файла package-info.java – всё та же строка package full.dir.path;. Такой файл не несет практической пользы. Есть две вещи, которые можно в него добавить, чтобы польза появилась.

Первое – документация пакета. Javadoc-комментарий будет использоваться генератором документации. Пример – описание пакета java.lang. Его исходник вы можете найти в файле java/lang/package-info.java.

Второе возможное применение – аннотации уровня пакета. Для этого аннотация должна иметь Target PACKAGE. Например, некоторые пакеты Spring Framework помечены аннотацией @NonNullApi.

Подробно объявления пакетов описаны в главе 7.4.1 спецификации.

#JVM
R2DBC Revealed: Reactive Relational Database Connectivity for Java and JVM Programmers (2021)
Автор: Robert Hedgpeth
Количество страниц: 236

Ознакомьтесь с новейшими тенденциями в программировании баз данных для разработчиков, работающих на Java, Kotlin, Clojure и других языках, основанных на JVM. Эта книга знакомит с Reactive Relational Database Connectivity (R2DBC), современным способом подключения к реляционным базам данных и запросов из Java и других языков JVM. Книга начинается с того, что не только помогает понять, что такое реактивное программирование, но и объясняет, почему оно необходимо в современной разработке. Затем, опираясь на эти основы, книга перенесет вас в мир баз данных и недавно выпущенную спецификацию Reactive Relational Database Connectivity (R2DBC).

Скачать книгу
#вопросы_с_собеседований
Почему в некоторых интерфейсах вообще не определяют методов?
В команду ВТБ — одного из крупнейших банков страны — ищут опытного UI/UX-дизайнера!

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

Подробнее о вакансии: https://www.vtbcareer.com/vacancy/788700/
Ответ к https://yangx.top/javaproglib/2474

Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
#вопросы_с_собеседований
Назовите основные характеристики шаблонов проектирования.
Продолжаем конкурс на самый интересный контент в телеграм-каналах Proglib!
Призовой фонд — 280 тысяч рублей.
Срок окончания конкурса -- 15 мая

Автор лучшего поста в отдельно взятом канале получает 20 тысяч рублей.
Мы упростили конкурс — теперь вам достаточно найти интересную и актуальную статью 2020-2021 года, написать к ней небольшой анонс (до 700 знаков) и прислать нам, тем не менее ваши идеи по другим форматам только добавляют + в общий зачет. Авторство можем указать по вашему желанию. В канале @progbook предлагаем отправлять рецензии на новые книги и старые актуальные.

Полный список каналов:
https://yangx.top/progbook
https://yangx.top/proglibrary
https://yangx.top/pyproglib
https://yangx.top/frontendproglib
https://yangx.top/javaproglib
https://yangx.top/dsproglib
https://yangx.top/phpproglib
https://yangx.top/cppproglib
https://yangx.top/mobileproglib
https://yangx.top/goproglib
https://yangx.top/csharpproglib
https://yangx.top/devopsslib
https://yangx.top/testerlib
https://yangx.top/hackproglib

Все посты будут с лайками и дизлайками и хэштегом #proglib_contest. Ссылки мы будем прогонять через наш сокращатель, будут браться в расчет лайки, дизлайки, охваты, клики по ссылкам. Выиграет тот кто наберёт больше всего лайков/охватов/кликов по ссылкам в публикации. Присылайте посты боту @proglib_contest_bot с указанием, на какой канал идет публикация. Юридическая информация здесь.
Имя - все шаблоны имеют уникальное имя, служащее для их идентификации;
Назначение данного шаблона;
Задача - задача, которую шаблон позволяет решить;
Способ решения - способ, предлагаемый в шаблоне для решения задачи в том контексте, где этот шаблон был найден;
Участники - сущности, принимающие участие в решении задачи;
Следствия - последствия от использования шаблона как результат действий, выполняемых в шаблоне;
Реализация - возможный вариант реализации шаблона.
Как написать иммутабельный класс?

Immutable (неизменяемый) класс – это класс, состояние экземпляров которого невозможно изменить после создания.

С иммутабельным классом всегда легче работать. Его состояние не поменяется, значит обращаться к нему в многопоточной среде можно без дополнительной синхронизации. Функции, зависящие только от состояния экземпляра будут возвращать один и тот же результат от вызова к вызову – это облегчает например реализацию hashCode(). Также вместо нескольких одинаковых экземпляров можно использовать один закэшированный объект, экономя память (паттерн Приспособленец).

Шаги, которые необходимо предпринять, чтобы класс стал immutable:

1. Запретите расширение класса – либо объявите его final, либо закройте доступ наследникам ко всем способам мутации, перечисленным в следующих пунктах;
2. Сделайте все поля финальными;
3. Не выставляйте наружу методов-мутаторов, которые меняют состояние;
4. Не отдавайте наружу поля ссылочного изменяемого типа (объекты классов, массивы) – если объект под ссылкой не иммутабельный, должна возвращаться его глубокая копия (defensive copy);
5. Создавайте объект правильно (подробнее в следующем посте).

Если вам нужны преимущества иммутабельного объекта, но также нужно иногда изменять его, подойдет подход copy on write: каждый метод-мутатор должен мутировать и возвращать не сам объект, а только что созданную его копию. Оригинал всё так же остается неизменным.
В Java Mentor идет набор на уникальную программу подготовки Java-специалистов. Главная особенность программы - оплата обучения происходит только после вашего трудоустройства в IT ☕️⚡️

За 6-8 месяцев наставники подготовят вас на позицию Java-разработчика (один из самых востребованных и высокооплачиваемых языков программирования).
Менторы помогут освоить востребованные технологии, будут контролировать усвоение материала. Вы получите опыт в бизнес-проекте необходимый для трудоустройства, также наставники помогут составить резюме и подготовят вас к прохождению собеседований.

🙋‍♂️👉 Узнать подробнее: https://clck.ru/Ujetw

Трудоустройство в Москве со стартовой зарплатой от 120 000 рублей. Работодателя выбираете самостоятельно после успешных собеседований.

Быстрый карьерный и финансовый рост за счет программы поддержки после трудоустройства рассчитанной на 2 года: вебинары, митапы, буткэмпы от экспертов IT-рынка и карьерных специалистов.
#вопросы_с_собеседований
Что вы знаете о Языке выражений JSP (JSP Expression Language – EL)?
JSP Expression Language (EL) — скриптовый язык выражений, который позволяет получить доступ к Java компонентам (JavaBeans) из JSP. Начиная с JSP 2.0 используется внутри JSP тегов для отделения Java кода от JSP для обеспечения лёгкого доступа к Java компонентам, уменьшая при этом количество кода Java в JSP-страницах, или даже полностью исключая его.

Развитие EL происходило с целью сделать его более простым для дизайнеров, которые имеют минимальные познания в языке программирования Java. До появления языка выражений, JSP имел несколько специальных тегов таких как скриптлеты (англ.), выражения и т. п. которые позволяли записывать Java код непосредственно на странице. С использованием языка выражений веб-дизайнер должен знать только то, как организовать вызов соответствующих java-методов.

Язык выражений JSP 2.0 включает:
☕️ Создание и изменение переменных.
☕️ Управление потоком выполнения программы: ветвление, выполнение различных типов итераций и т.д.
☕️ Упрощенное обращение к встроенным JSP-объектам.
☕️ Возможность создавать собственные функции.

Язык выражений используется внутри конструкции ${ ... }. Подобная конструкция может размещаться либо отдельно, либо в правой части выражения установки атрибута тега.