Ich bin verwirrt zwischen dem Unterschied von javax.faces-2.1.14.jar von jsf-api-2.2.0-m05.jar und jsf-impl-2.2.0-m05.jar Ich versuche, ein JSF-Projekt zu machen, ohne Maven zu verwenden, und während ich nach Beispielen suchte, sah ich verschiedene Jar Abhängigkeiten auf verschiedenen Tutorials. Das Tutorial von coreservlet verwendet javax.faces-2.1.14.jar und das andere Tutorial, das ich von einem anderen gesehen habe Website verwendet 2 JAR-Dateien jsf-api-2.2.0-m05.jar und jsf-impl-2.2.0-m05.jar Ich möchte den Unterschied zwischen diesen beiden Abhängigkeiten kennen. Vielen Dank im Voraus Jungs.
Das jsf-api-xxx.jar
enthält Klassen, die sich unter den Paketen java package javax.faces
befinden. Die Klassen in diesem Jar sind die Implementierung der Standard-API, die durch die JSF-Spezifikation definiert wird. Das jsf-impl-xxx.jar
enthält Klassen, die sich unter dem Java-Paket com.sun.faces
befinden, was, wie das Java-Paket angibt, die eigene Klasse von Sun für die JSF-Implementierung ist.
Das javax.faces-xxx.jar
führt die beiden vorherigen JAR-Dateien zusammen. Im Maven-Repository befindet es sich unter org.glassfish
groupId. Sie werden sowohl javax.faces
als auch com.sun.faces
java package darin finden.
Was sollten Sie für Ihre Entwicklung verwenden? Eigentlich können Sie beides verwenden. Der empfohlene Weg besteht jedoch darin, jsf-api-xxx.jar
nur in den Kompilierungsklassenpfad aufzunehmen. Daher hängt Ihre eigene Anwendung nicht von Klassen unter com.sun.faces
package ab, um die Portabilität für andere JSF-Implementierungen zu erreichen. Wenn Sie eine Anwendung wie GlassFish verwenden, sollte der Container bereits zur Laufzeit die JSF-Implementierung bereitstellen. Sie sollten die obigen JSF-JAR-Dateien nicht mit Ihrer Kriegs- oder EAR-Datei verpacken, da der Server alle Dateien zur Verfügung stellt. Wenn Sie einen Container verwenden, der standardmäßig nicht mit einer JSF-Implementierung wie Tomcat geliefert wird, müssen Sie javax.faces-xxx.jar
oder ( jsf-api-xxx.jar
+ jsf-impl-xxx.jar
) in WEB-INF/lib
einpacken.
Sie sind verschiedene Versionen.
Die Unterschiede zwischen den Versionen finden Sie in den Versionshinweisen, aber 2.2 und 2.1 sind nicht trivial.