Для заинтересованных, JBoss AS и WildFly имеет внутреннее модульное разделение API на основе Java EE и файлов impl. Разделенные файлы JAR jsf-api.jar и jsf-impl.jar по-прежнему необходимы. Причина не совсем техническая, а просто дополнительный сервис, который заставляет разработчиков программировать против правильных библиотек. Во время компиляции отображаются только модули API (обычно через интегрированный с IDE плагин, который добавляет их в "путь сборки" ). Это должно избегать случайного поиска, импорта и использования классов реализации, например, в пакете com.sun.faces.*.
Уже с версии 1.x реализация JSF Mojarra состояла из двух файлов JAR: jsf-api.jar и jsf-impl.jar. API JAR содержал классы javax.faces.*, а JAR реализации содержал классы com.sun.faces.*. Поскольку изменение системы сборки соответствует правилам Java EE Maven, оба класса API и реализации были объединены в один файл javax.faces.jar, см. Также issue 2028 (началось с Mojarra 2.1.6 в декабре 2011 года). Начиная с Mojarra 2.3, разделенные файлы JAR больше не создаются.