我是否需要JSF -api或JSF -impl或两者都需要才能开始使用JSF?为什么它们没有合并



我已经开始学习JSF,我想知道在我们开始使用JSF的类路径中包含的JAR是什么。是jsf-api还是jsf-impl ?还是两者都要包括?如果两者都是,那为什么它们不合并呢?

我假设您使用的不是真正的Java EE应用服务器,如WildFly、TomEE、Payara等,而是像Tomcat这样的准系统JSP/Servlet容器,它确实没有随JSF一起发货,因此您必须手动安装它。否则,所有这些关于jar的麻烦都是不必要的。


是jsf-api还是jsf-impl?还是两者都要包括?

你两者都需要。jsf-api.jar包含API,它几乎只存在抽象类和接口。它是您在代码中导入和使用的javax.faces.*类型。jsf-impl.jar包含了实现,这是真正存在的辛勤工作的代码。实现是通过API中的工厂在内部加载的。它是您而不是应该在代码中直接导入和使用的com.sun.faces.*类。如果您这样做,那么您将无法切换到不同的JSF实现,例如MyFaces。


如果两者都是,为什么它们不合并呢?

存在一个合并的JAR, javax.faces.jar。您可以选择这一个,而不是两个松散的jar。

参见:

  • 我们的JSF wiki页面
  • JSF实现和组件库
  • Mojarra和MyFaces的区别
  • 用最简单的术语来说,什么是工厂?
  • 如何通过Maven正确安装和配置JSF库?

相关内容

  • 没有找到相关文章