Простыми словами о фреймворках
Всем привет, работаю java разработчиком последние 9 лет, хотел бы пояснить на максимально простом примере зачем нужны фреймворки и в чем их отличие от библиотек.
И те и другие созданы для исключения дублирования часто используемой функциональности: не нужно повторно писать и тестировать код, разработчики знакомы с распространенными решениями, что облегчает вход в проект.
Библиотеки имеют определенный интерфейс, который позволяет вызывать их код из вашего проекта. За интерфейс и его реализацию отвечают авторы библиотеки. Фреймворки же напротив, являются точкой входа и вызывают код вашего проекта. А это значит что теперь уже вы должны реализовать определенный интерфейс, который предлагает автор фреймворка. Это похоже на подключение плагинов в других программах.
Часть кода переезжает в настройки или в иной форме становится декларативной. Приведу пример конфигурации одного из самых популярных java фреймворков Spring. Проект будет загружать из БД список пользователей и отдавать их "как есть" через REST апи:
application.yml - конфигурируем порт для апи и настройку подключения к бд:
server.port: 8080
spring.datasource.url: jdbc:postgresql://localhost:5432/mydb
В формате фреймворка объявляем репозиторий - компонент для получения записей о пользователях из таблицы БД:
interface UserRepository extends CrudRepository<User, Long> {}
В формате фреймворка объявляем эндпоинт - точку для подключения других сервисов к REST апи нашего проекта:
@GetMapping("users")
List<User> getUsers() { return userRepository.findAll(); }
Теперь другие сервисы могут через апи нашего сервиса получить список пользователей из БД:
GET http://localhost:8080/users
С минимальными настройками можно подключить и другие необходимые компоненты - для работы с разными БД, очередями, логгированием, можно настроить транзакции, ретраи, авторизацию и всё остальное.
Если вы только начинаете карьеру в it, есть смысл попробовать воспроизвести пару примеров из интернета по вашему фреймворку, а также пройтись по теоретическим вопросам (вроде "жизненный цикл спринг бинов"), но было бы разумней потратить время на общие алгоритмические и технические темы. Всем удачи!
Лига программистов
2.1K постов11.9K подписчик
Правила сообщества
- Будьте взаимовежливы, аргументируйте критику
- Приветствуются любые посты по тематике программирования
- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества