Библиотека Java разработчика
11.2K subscribers
930 photos
426 videos
58 files
1.29K links
Библиотека Java разработчика. Java, Spring, Maven, Hibernate


По всем вопросам @evgenycarter
Download Telegram
Java. Сортировки

Java. Сортировка пузырьком.
Java. О сортировке выбором.
Java. Быстрая сортировка. Объяснение на пальцах)
Java. Оценка сложности алгоритмов сортировки.
Java. Сортировка слиянием.
Java. Сортировка подсчетом.
Java. Сортировка вставками.
Java. Сортировка расческой. От пузырька до расчески.

👉@BookJava
Бонни и Клайд, зима и Новый год, черное и белое, в конце концов, сметана и пельмени - есть вещи, которые прекрасно сочетаются и дополняют друг друга. Можно сказать, неотделимые друг от друга. В случае с Java-разработчиком это Spring Framework.

Мы, конечно, шутим, но если говорить серьезно, то без уверенного знания этого фреймворка сложно рассчитывать на действительно крутые проекты и серьезные задачи. Почему? Потому что более 90% вакансий Java-разработчика требуют знания Spring Framework. А еще потому что Spring Framework — де-факто стандарт разработки промышленных приложений для языка Java. Кажется, этого уже должно быть достаточно, чтобы изучить самый популярный фреймворк для Java. Но почему-то, нередко junior и middle разработчики пренебрегают этим знанием. Во многих онлайн школах на курсах либо комплексное и долгое обучение Java-разработке с нуля, где лишь поверхностно изучается Spring, либо отдельные курсы по Spring, но на английском языке. Короче, долго или сложно для изучения.

Мы в Слёрме не понаслышке знаем и регулярно видим, как часто разработчики просто машинально используют Spring, даже не вникая в его возможности. Все бы ничего, но когда возникает проблема или не шаблонная задача, они не понимают, куда смотреть и что делать. А что делать? Изучать разные сценарии использования Spring Framework, желательно на практике. А пока ловите экспертное мнение о плюсах и минусах самого популярного Java-фреймворка:

https://habr.com/ru/company/southbridge/blog/698780/
Что такое функциональный интерфейс?

Так называется специальная разновидность интерфейса, который определяет тип-функцию, коллбэк.

Чтобы компилятор считал интерфейс функциональным, этот интерфейс должен добавлять единственный абстрактный метод. Вдобавок он может содержать любое количество дефолтных методов с телом. Переобъявление методов класса Object также игнорируется.

Никаких других ограничений на метод не накладывается: он не ограничен в типах аргументов и возвращаемого значения, может иметь любое название и список выбрасываемых исключений (checked и unchecked).

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

Дополнительно функциональный интерфейс принято помечать аннотацией @FunctionalInterface. Наличие этой аннотации не необходимо, но оно даёт дополнительную валидацию: её присутствие на нефункциональном типе спровоцирует ошибку компиляции.

Типичные примеры функциональных интерфейсов: Callable, Supplier, Comparable.

👉@BookJava
Какие некоторые из важных особенностей и преимуществ Spring Framework?

Spring Framework обеспечивает решения многих задач, с которыми сталкиваются Java-разработчики и организации, которые хотят создать информационную систему, основанную на платформе Java. Из-за широкой функциональности трудно определить наиболее значимые структурные элементы, из которых он состоит. Spring Framework не всецело связан с платформой Java Enterprise, несмотря на его масштабную интеграцию с ней, что является важной причиной его популярности.

Spring Framework, вероятно, наиболее известен как источник расширений (features), нужных для эффективной разработки сложных бизнес-приложений вне тяжеловесных программных моделей, которые исторически были доминирующими в промышленности. Ещё одно его достоинство в том, что он ввел ранее неиспользуемые функциональные возможности в сегодняшние господствующие методы разработки, даже вне платформы Java. Этот фреймворк предлагает последовательную модель и делает её применимой к большинству типов приложений, которые уже созданы на основе платформы Java. Считается, что Spring Framework реализует модель разработки, основанную на лучших стандартах индустрии, и делает её доступной во многих областях Java. Таким образом к достоинствам Spring можно отнести:

• Относительная легкость в изучении и применении фреймворка в разработке и поддержке приложения.
• Внедрение зависимостей (DI) и инверсия управления (IoC) позволяют писать независимые друг от друга компоненты, что дает преимущества в командной разработке, переносимости модулей и т.д..
• Spring IoC контейнер управляет жизненным циклом Spring Bean и настраивается наподобие JNDI lookup (поиска).
• Проект Spring содержит в себе множество подпроектов, которые затрагивают важные части создания софта, такие как вебсервисы, веб программирование, работа с базами данных, загрузка файлов, обработка ошибок и многое другое. Всё это настраивается в едином формате и упрощает поддержку приложения.

👉@BookJava
Media is too big
VIEW IN TELEGRAM
The best way to fetch entities with JPA and Hibernate

👉@BookJava
Как инициализировать переменную функционального интерфейса?

Функциональный интерфейс – всё ещё интерфейс, поэтому остаются доступными стандартные способы. Интерфейс можно реализовать обычным классом, и затем создать его экземпляр оператором new. Можно совместить эти два действия, и создать экземпляр анонимного класса.

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

1. Лямбда-выражение: (x, y) -> x * y
2. Ссылка на метод: Math::sqrt

На эти способы накладывается небольшое ограничение: тип функционального параметра/переменной должен быть указан явно. Это значит, что лямбдой или метод-референсом нельзя инициализировать переменную, объявленную ключевым словом var. Также, чтобы передать лямбду или референс в параметр generic-типа, этот тип должен быть ограничен функциональным интерфейсом (должен стираться в него).

👉@BookJava
Какие подклассы класса Reader вы знаете, для чего они предназначены?

• Reader - абстрактный класс, описывающий символьный ввод;
• BufferedReader - буферизованный входной символьный поток;
• CharArrayReader - входной поток, который читает из символьного массива;
• FileReader - входной поток, читающий файл;
• FilterReader - абстрактный класс, предоставляющий интерфейс для классов-надстроек;
• InputStreamReader - входной поток, транслирующий байты в символы;
• LineNumberReader - входной поток, подсчитывающий строки;
• PipedReader - входной канал;
• PushbackReader - входной поток, позволяющий возвращать символы обратно в поток;
• StringReader - входной поток, читающий из строки.

👉@BookJava
Продвинутый Java (от разработчика из JetBrains)

Java. Урок 1. Обзор Java. Лекции от Senior Java-разработчика из JetBrains
Java. Урок 2. Javadoc и наследование
Java. Урок 3. Исключения и обобщенные типы в Java
Java. Урок 4. Коллекции Java и Stream API
Java. Урок 5. Многопоточность. Часть 1

👉@BookJava