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.
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.
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
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-impl-xxx.jar) in the