WildFly
WildFly (ранее известный как JBoss Application Server) — это сервер приложений с открытым исходным кодом, реализующий спецификации Java Platform, Enterprise Edition (Java EE, ныне Jakarta EE). Разрабатывается и поддерживается компанией Red Hat, входящей в состав IBM. WildFly предназначен для развёртывания, запуска и управления корпоративными Java-приложениями, включая веб-сервисы, микросервисы и распределённые системы.
История
Происхождение и развитие JBoss AS
История WildFly начинается с проекта JBoss, основанного в 1999 году Марком Флейри (Marc Fleury) как сервер приложений с открытым кодом. Первоначально проект назывался JBoss Application Server (JBoss AS) и быстро завоевал популярность благодаря лёгкости, модульности и соответствию стандартам Java EE. В 2006 году компания Red Hat приобрела JBoss Inc., что обеспечило проекту стабильное финансирование и корпоративную поддержку.
Переименование в WildFly
В 2012 году было объявлено, что следующая версия сервера (8.0) будет выпущена под новым именем — WildFly. Основные причины переименования: устранение путаницы с брендом JBoss (который стал обозначать целую экосистему продуктов Red Hat, включая JBoss EAP — коммерческую версию) и подчёркивание нового подхода к архитектуре (модульная, легковесная, облачная). Первая версия WildFly 8.0 вышла в феврале 2014 года.
Версии и история выпусков
С момента переименования WildFly регулярно обновляется, следуя за развитием Jakarta EE. Ключевые версии:
- WildFly 8 (2014) — первая версия, поддержка Java EE 7.
- WildFly 9 (2015) — внедрение модульной архитектуры, улучшенная поддержка Docker.
- WildFly 10 (2016) — поддержка Java EE 7, улучшения в управлении памятью.
- WildFly 11 (2017) — переход на Jakarta EE 8, улучшенная интеграция с OpenShift.
- WildFly 12 (2018) — поддержка Java 10, новые функции безопасности.
- WildFly 13 (2018) — улучшенная поддержка HTTP/2, TLS 1.3.
- WildFly 14 (2019) — поддержка Jakarta EE 8, улучшения в кластеризации.
- WildFly 15 (2019) — улучшенная поддержка микросервисов, интеграция с MicroProfile.
- WildFly 16 (2020) — поддержка Java 11, улучшения в управлении конфигурацией.
- WildFly 17 (2020) — поддержка Jakarta EE 8, улучшенная поддержка GraalVM.
- WildFly 18 (2021) — поддержка Jakarta EE 9, улучшения в безопасности.
- WildFly 19 (2021) — поддержка Jakarta EE 9.1, улучшенная интеграция с Kubernetes.
- WildFly 20 (2022) — поддержка Jakarta EE 10, улучшения в производительности.
- WildFly 21 (2022) — поддержка Java 17, улучшения в модульной системе.
- WildFly 22 (2023) — поддержка Jakarta EE 10, улучшения в управлении кластером.
- WildFly 23 (2023) — поддержка Java 17, улучшения в безопасности.
- WildFly 24 (2024) — поддержка Jakarta EE 10, улучшения в совместимости с облачными платформами.
- WildFly 25 (2024) — поддержка Java 21, улучшения в модульной архитектуре.
Архитектура и компоненты
Модульная система
WildFly построен на модульной архитектуре, основанной на проекте JBoss Modules. В отличие от традиционных серверов приложений (например, Apache Tomcat), где все библиотеки загружаются в единый classloader, WildFly использует изолированные модули. Каждый модуль содержит свой набор классов и зависимостей, что предотвращает конфликты версий и упрощает развёртывание приложений.
Основные компоненты
- Сервер приложений — ядро WildFly, отвечающее за управление жизненным циклом приложений, обработку запросов и управление ресурсами.
- Веб-контейнер — реализация сервлетов (Apache Tomcat, интегрированный в WildFly) для обработки HTTP-запросов.
- EJB-контейнер — поддержка Enterprise JavaBeans для создания распределённых бизнес-логик.
- JPA-провайдер — реализация Java Persistence API (обычно Hibernate) для работы с базами данных.
- JMS-провайдер — поддержка Java Message Service (ActiveMQ Artemis) для асинхронного обмена сообщениями.
- Контейнер безопасности — управление аутентификацией и авторизацией (Elytron).
- Управление транзакциями — поддержка распределённых транзакций (Narayana).
Режимы работы
WildFly поддерживает несколько режимов запуска:
- Standalone — одиночный сервер, подходящий для разработки и небольших развёртываний.
- Domain — управляемый кластер серверов, где один контроллер (Domain Controller) управляет несколькими экземплярами (Host Controller). Режим используется для масштабирования и централизованного управления.
- Embedded — встраиваемый режим, позволяющий запускать WildFly внутри других приложений (например, для тестирования).
Классификация и версии
WildFly vs JBoss EAP
WildFly — это сообщество-управляемая версия сервера приложений, распространяемая под лицензией Apache 2.0. JBoss Enterprise Application Platform (JBoss EAP) — коммерческая версия, основанная на стабильных релизах WildFly, с дополнительными патчами безопасности, долгосрочной поддержкой (LTS) и сертификацией для корпоративных сред. JBoss EAP поставляется Red Hat с подпиской на поддержку.
Версии Jakarta EE
WildFly поддерживает различные версии Jakarta EE (ранее Java EE). Начиная с WildFly 8, сервер соответствует Java EE 7; с WildFly 11 — Jakarta EE 8; с WildFly 18 — Jakarta EE 9; с WildFly 20 — Jakarta EE 10. Актуальная версия (WildFly 25) поддерживает Jakarta EE 10.
Применение
Корпоративные приложения
WildFly широко используется для развёртывания корпоративных Java-приложений: ERP-систем, CRM, банковских систем, порталов и веб-сервисов. Благодаря поддержке Java EE/Jakarta EE, он обеспечивает стандартизированную среду для разработки и развёртывания.
Микросервисы и облачные технологии
WildFly поддерживает создание микросервисов с помощью MicroProfile — набора спецификаций для облачных Java-приложений. Сервер интегрируется с контейнерными платформами, такими как Docker и Kubernetes, а также с Red Hat OpenShift. WildFly может запускаться в виде контейнера, что упрощает развёртывание в облачных средах.
Разработка и тестирование
Благодаря лёгкости и быстрому запуску, WildFly часто используется разработчиками для локального тестирования и отладки приложений. Встроенная поддержка горячей замены кода (hot deployment) ускоряет цикл разработки.
Примеры использования
Пример: развёртывание веб-приложения
Разработчик создаёт Java-приложение с использованием сервлетов, JSP, EJB и JPA. Приложение упаковывается в WAR-файл (Web Archive) или EAR-файл (Enterprise Archive) и развёртывается на WildFly через веб-консоль управления, командную строку (CLI) или автоматическое копирование в директорию deployments. Сервер автоматически обнаруживает и запускает приложение, предоставляя ему доступ к базам данных, очередям сообщений и другим ресурсам.
Пример: кластеризация
Для обеспечения высокой доступности и масштабирования WildFly может быть настроен в режиме домена. Несколько серверов объединяются в кластер, где запросы распределяются между ними. Сервер поддерживает репликацию сессий, распределённые транзакции и синхронизацию состояния между узлами.
Интересные факты
- WildFly — один из немногих серверов приложений, полностью поддерживающих спецификации Jakarta EE, включая такие сложные компоненты, как EJB 3.2, JPA 2.2 и JMS 2.0.
- В 2020 году WildFly стал первым сервером приложений, получившим сертификацию Jakarta EE 9.
- Сервер поддерживает GraalVM — высокопроизводительную виртуальную машину, позволяющую запускать Java-приложения с улучшенной производительностью.
- WildFly активно используется в российских компаниях для разработки корпоративных систем, включая банковский сектор и государственные учреждения.
Критика
Несмотря на популярность, WildFly подвергается критике за:
- Сложность конфигурации — модульная архитектура и большое количество параметров могут затруднить настройку для новичков.
- Потребление ресурсов — по сравнению с лёгкими серверами (например, Tomcat или Jetty), WildFly требует больше оперативной памяти и процессорного времени.
- Зависимость от Red Hat — хотя WildFly является открытым проектом, его развитие сильно зависит от решений Red Hat, что может вызывать опасения у некоторых пользователей.
- Совместимость с новыми технологиями — иногда WildFly отстаёт в поддержке новейших версий Java и Jakarta EE по сравнению с конкурентами (например, Payara или GlassFish).
Источники
- Официальная документация WildFly (wildfly.org)
- JBoss Community Wiki (developer.jboss.org)
- Red Hat JBoss EAP Documentation (access.redhat.com)
- Jakarta EE Specification (jakarta.ee)
- «WildFly: A Comprehensive Guide» by Francesco Marchioni (2023)
- Java EE 7 Essentials by Arun Gupta (2013)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →