I am confused between the difference of javax.faces-2.1.14.jar from jsf-api-2.2.0-m05.jar and jsf-impl-2.2.0-m05.jar I am trying to make a jsf project without using maven and while searching for examples I saw different jar dependencies on different tutorials. The tutorial from coreservlets uses javax.faces-2.1.14.jar and the other tutorial I saw from a different site uses 2 jar files jsf-api-2.2.0-m05.jar and jsf-impl-2.2.0-m05.jar Id like to know the difference of these two set of dependencies. Thanks in advance guys.
The jsf-api-xxx.jar
contains classes that are under packages java package javax.faces
. The classes in this jar are implementation of standard API defined by JSF specification. The jsf-impl-xxx.jar
contains classes that are under java package com.sun.faces
, which as the java package indicates, is Sun's own class for JSF implementation.
The javax.faces-xxx.jar
actually merges the previous two jar files together. In the Maven repository, it is under org.glassfish
groupId. You will find both javax.faces
and com.sun.faces
java package inside.
So what should you use for your development? Actually you can use both. But the recommended way is to include jsf-api-xxx.jar
only in the compilation classpath. Thus your own application does not depend on any classes under com.sun.faces
package to achieve the portability to other JSF implementations. If you are using an application such as GlassFish, the container should already provide the JSF implementation at runtime. You should not package the above JSF jar files with your war or ear file, as server will provide all of them. If you use a container that does not come with a JSF implementation by default such as Tomcat, you need to package javax.faces-xxx.jar
or (jsf-api-xxx.jar
+ jsf-impl-xxx.jar
) in the WEB-INF/lib
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With