Spring — фреймворк для сложных Java-приложений

В 2002 году австралийский разработчик Род Джонсон в своей работе «Expert One-on-One J2EE Design and Development» представил код Java-фреймворка Interface21, который он написал специально для собственных проектов. На основе этого кода он позже вместе с другими программистами разработал фреймворк Spring, который был впервые выпущен под свободной лицензией Apache 2.0 на SourceForge в июне 2003 года. Он до сих пор является одним из самых популярных решений для разработки корпоративных приложений на Java. С тех пор фреймворк с открытым исходным кодом устранил слабые места и ограничения стандартной среды разработки J2EE (теперь также известной как «платформа Java»), а также компонентной модели Enterprise JavaBeans (EJB), значительно снизив их сложность.

Что такое Spring?

Spring упрощает разработку Java-приложений — независимо от того, являются ли они автономными или веб-приложениями. Самыми большими преимуществами этого фреймворка являются его компактный исходный код и минимальные усилия, необходимые для настройки. Эти удобства предоставляются программисту на основе следующих принципов, которые объясняются в книге Рода Джонсона:

  • Dependency Injection (DI): Dependency Injection относится к внешнему экземпляру в объектно-ориентированном программировании, который управляет зависимостями объектов. Spring использует для этого Java-компонент JavaBeans. Они функционируют в Java как контейнер для передачи данных, поэтому они служат шаблоном для всех управляемых ресурсов («бобов») во фреймворке Spring. Таким образом, Spring может выступать в качестве контейнера, который предоставляет предварительно настроенные классы, включая их зависимости, в Java-проект.
  • Аспектно-ориентированное программирование: Чтобы еще больше повысить модульность объектно-ориентированных приложений, Spring также предлагает опциональные подходы аспектно-ориентированного программирования, которые используют язык AspectJ. Это позволяет синтаксически структурировать аспекты, или межкомпонентные связи, которые неизбежны в сложных системах. Преимущество такого подхода заключается в том, что фактический программный код может быть отделен от технических процессов, таких как обработка ошибок, валидация или безопасность.
  • Шаблоны: Шаблоны в Spring обозначаются как классы для различных программных интерфейсов, и просто работа с API путем предоставления автоматического управления ресурсами, унифицированной обработки ошибок и другой помощи.

Следуя принципам, изложенным выше, фреймворк Spring позволяет разработчикам получать доступ к обычным Java-объектам, или POJO (или обычным Java-объектам), при разработке приложений Enterprise Java. В отличие от Enterprise JavaBeans (EJBs), POJO не требуют специального сервера приложений, поддерживающего контейнеры EJB — стандартных решений, таких как Tomcat, вполне достаточно. Для использования Spring вам также необходим комплект разработчика Java SE (SDK).

Spring: Знакомство с самым важным модулем

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

  • Контейнер ядра: Контейнер ядра включает элементарные модули spring-core, spring-beans, spring-context, spring-context-support и spring-expression. Core и Beans создают базовый контур фреймворка и содержат, например, функцию инъекции зависимостей, а также поддержку POJO. Модуль контекста наследует свои возможности от модуля Beans и добавляет в приложение функции, например, для интернационализации или загрузки ресурсов. Кроме того, поддерживаются функции Java Enterprise, такие как EJB и JMX (Java Management Extensions). С помощью context-support библиотеки сторонних разработчиков могут быть объединены с Spring. Spring-expression содержит Spring Expression Language (SPeL), являющийся развитием унифицированного языка выражений спецификации JSP 2.1 (JavaServer Pages).
  • AOP и инструментарий: Для обеспечения возможности аспектно-ориентированного программирования фреймворк Spring содержит модуль spring-AOP, а также модуль spring-aspects для интеграции ранее упомянутого языка AspectJ. Компонент spring-instrument позволяет инструментализировать классы Java — то есть изменять байткод во время выполнения — а также добавляет реализации ClassLoader для различных серверов приложений.
  • Обмен сообщениями: Чтобы функционировать как основа для приложений, основанных на сообщениях, Spring имеет некоторые ключевые функции ключевого проекта Spring Integration — такие как, например, «Message», «MessageChannel» или «MessageHandler». Соответствующий модуль называется spring-messaging.
  • Доступ к данным/интеграция: Модули этой категории предназначены для предоставления Java-приложениям возможности взаимодействовать с другими приложениями и управлять доступом к данным. Модуль spring-JDBC, например, предоставляет слой абстракции, который определяет, как клиент обращается к базе данных, и устраняет необходимость громоздкого кодирования JDBC. Spring-ORM, с другой стороны, предоставляет интеграционные слои для популярных ORM-интерфейсов, которые позволяют получить доступ к реляционным базам данных. Другие компоненты — spring-TX (поддерживает управление программными транзакциями для всех классов и POJO), spring-OXM (слои абстракции для отображения объектов/XML) и spring-JMS, модуль с функциями для создания и обработки сообщений.
  • Web: В этой категории вы найдете модули spring-web, spring-webmvc и spring-websocket, предназначенные для веб-приложений. Первый из них добавляет в Java-приложение типичные функции интеграции, ориентированные на веб-приложения, такие как функция загрузки многокомпонентных данных или HTTP-клиент. Модуль spring-webmvc также называется веб-сервлетом и содержит реализации Spring для реализации стандартной архитектуры контроллера представления модели и веб-сервисов REST. Spring-websocket обеспечивает передачу данных между клиентом и сервером на основе WebSockets.
  • Тест: Модуль spring-test позволяет проверить функциональность компонентов вашего Java-приложения. С помощью соответствующих дополнительных фреймворков, таких как Junit или TestNG, вы можете выполнять как обширные модульные тесты (с упором на отдельный компонент), так и интеграционные тесты (с упором на взаимодействие нескольких компонентов).

Spring: Java в современной веб-разработке

С самого начала Java, включая связанные с ней технологии, была предназначена для использования в веб-разработке. После первых трудностей, связанных с низким уровнем поддержки ранних браузеров, тогдашней очень низкой пропускной способностью частных интернет-соединений, не говоря уже об ограниченной вычислительной мощности ПК в то время, язык программирования, наконец, пережил прорыв в конце 1990-х годов. На начальных этапах развития Всемирной паутины были популярны Java-апплеты — приложения, написанные на языке Java, которые могут быть запущены с помощью соответствующих сред выполнения в браузере и могут взаимодействовать с пользователем без необходимости отправки данных на сервер. Из-за своей ресурсозависимости они были не очень практичны. С появлением мобильных устройств, не поддерживающих браузерные апплеты, интерактивные веб-элементы полностью исчезли со сцены.

В то время как Java сравнительно быстро потерпел неудачу во фронтенде, этот язык программирования стал основным на стороне сервера, где сценарии применения довольно сильно различаются: От сервлетов для запускаемых на сервере аналогов апплетов до сложных корпоративных решений, таких как промежуточное программное обеспечение, банковское ПО или большие системы управления контентом — широкий спектр технологий Java востребован как никогда, если позволяет бюджет. Благодаря своим преимуществам с точки зрения затрат и времени, язык сценариев PHP используется примерно на трех четвертях всех веб-сайтов. Для веб-разработчиков, работающих с Java, Spring предлагает не только необходимые структуры, но и значительное упрощение рабочего процесса. К преимуществам веб-разработки на Java относятся, в частности, независимость от платформы, возможность интеграции с корпоративным программным обеспечением и процессами, а также четкая структура.

Для каких проектов лучше всего подходит фреймворк Spring?

Spring обычно используется в качестве легкого фреймворка для Java-приложений, поскольку для использования его многочисленных преимуществ практически не требуется вносить изменения в исходный код. Среди прочего, упрощается реализация управления транзакциями, интерфейсов и доступа к базе данных. Возможность проведения несложных модульных и интеграционных тестов также является одной из ключевых причин популярности фреймворка Spring. Но главным моментом, несомненно, является отказ от платформенно-специфических и нестандартизированных компонентов, что делает Spring одновременно высоко переносимым и независимым от серверов приложений. По этой причине вы можете легко использовать мета-фреймворк, в который в дальнейшем будут интегрированы внешние компоненты или целые фреймворки. Типичным примером применения является разработка бэкенда на базе Spring, который затем связывается с фронтендом, предварительно созданным с помощью UI-фреймворка, такого как Twitter Bootstrap.

Spring особенно силен в реализации сложных бизнес-приложений. Для компаний фреймворк Spring в дополнение к Java на протяжении многих лет является отличным выбором для реализации необходимых технологий. В отличие от чисто веб-фреймворков — таких как проект Apache competitor компании Strate — Spring не ограничивается веб-приложениями, но также позволяет разрабатывать нативные настольные решения. Для простых приложений — онлайн или офлайн — Spring (и Java) подходят меньше, даже если реализация таких проектов в принципе возможна.

Преимущества Spring: обзор

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

  • POJO можно применять для дополнительной логики
  • Готовый базовый фреймворк, который практически не нуждается в модификации
  • Не требуется сервер приложений
  • Позволяет проводить модульные и интеграционные тесты
  • Архитектура MVC
  • Возможно аспектно-ориентированное программирование с помощью AspectJ
  • Инъекция зависимостей (контроль внешних зависимостей)
  • Программное управление транзакциями

Оцените статью
cdelat.ru
Добавить комментарий