Java EE vs JSP vs JSF

Oli*_*ryn 30 java jsf jsp jsf-2

我期待学习用于开发Web应用程序的Java技术.当我更加注重这一点时,我对,感到困惑.我知道在SO(帖子1,帖子2)上有几个帖子试图解决这些混淆,我还有其他一些帖子:

  1. JSP"死"是否支持JSF?
  2. Java EE是JSF运行的平台还是完全不同的东西?
  3. JSF仅仅是用于开发Web应用程序的MVC框架吗?
  4. JSF是由Oracle开发的框架和Java的一部分,还是一个单独的框架(很像Zend Framwork来自PHP)?
  5. [Bonus]你会推荐学习还是

在您的回答中,您可以随意将这些技术与ASP.NET,ASP.NET MVC,Ruby on Rails,Zend Framework或常规Java Applet进行比较,因为这些是我已经熟悉的事情.

感谢您的时间.

Eva*_*tti 34

JSP"死"是否支持JSF?

JSF比JSP有许多好处.例如:

  • 它定义了MVC方法
  • 它建立了组件化标准
  • 它具有应用值功能
  • 内置AJAX
  • 定义的视图上下文控件
  • 允许使用Primefaces等丰富的接口扩展

我们可以继续下去.

您仍然可以将JSP用于需要某些特定灵活性或性能的其他场景,对于servlet也是如此,但JSF几乎取代了JSP用于"健壮"应用程序.

现在,我是JSF的忠实粉丝,但还有很长的路要走.JSF 2.2有点看起来像一个成熟的框架,因为它有一个定义的导航标准(FacesFlow),我们在2.1中只有一个内置的文件上传器,它甚至不是AJAX,而且还有"HTML5"等等.所以是的,还有很多工作要做,我不会在这里详述.

根据我的经验,如果与JSF和其他框架(如Spring MVC)相比,JSP实际上是"死的".Java EE 7教程几乎没有提到JSP的任何内容.但它并没有死,因为Web容器已经支持它,你仍然可以使用它.

Java EE是JSF运行的平台还是完全不同的东西?

JSF是Java EE的一部分,但是为了使用JSF,您不需要完整的Java EE配置文件.例子:

  • Tomcat只是一个Java EE Web Profile实现,您可以在Tomcat中使用JSF.
  • 您可以在JBoss中使用JSF,但是您不需要启用JMS以使JSF工作.

Java EE组件是模块化的,您只需要Web Profile服务器/容器即可使用JSF.

JSF仅仅是用于开发Web应用程序的MVC框架吗?

是(但我不会仅仅说).每个人都有自己的利弊.但原则是一样的.

有人可能会争论与EJB的集成,但Spring MVC也有自己的容器.

JSF是由Oracle开发的框架和Java的一部分,还是一个单独的框架(很像Zend Framwork来自PHP)?

Oracle现在委托团队定义规范.理论上,如果需要,您可以实现自己的JSF.我不知道PHP的Zend Framework.

最常见的JSF实现是Mojarra和MyFaces.(Luiggi现在打败了我,你可以查看他的链接).

[Bonus]你会推荐学习jsp还是jsf?

我会推荐两者.JSP首先和JSF之后.

但我会100%建议你为你的项目使用JSF.但请确保您了解组件化以及使JSF成为强大工具的所有内容.

另请参阅JSF 2.2新功能,这个页面非常棒,可以介绍添加到框架中的最新功能.

  • Spring MVC仍然使用JSP作为视图技术. (4认同)

Lui*_*oza 14

JSP"死"是否支持JSF?

不,它仍然作为视图技术用于传统和当前Web应用程序.此外,JSF使用JSP作为视图,但是从JSF 2开始,最好使用Facelets作为技术视图.这里解释了原因:为什么Facelets比JSF2.0以后的视图定义语言优于JSP?.简而言之,Facelets支持要呈现的内容的前后处理,而JSP则不支持.

Java EE是JSF运行的平台还是完全不同的东西?

JSF可以在任何Java Web应用程序服务器中独立运行.您只需添加必要的库:JSF-api和JSF-impl.

JSF仅仅是用于开发Web应用程序的MVC框架吗?

是.它没有为Web服务生成,连接池,事务管理等提供任何帮助.它支持EJB注入@EJB和参数注入@ManagedProperty,但这就是全部.您可以使用其他框架来完成这项工作:Hibernate,EJB,Spring,CDI等.

JSF是由Oracle开发的框架和Java的一部分,还是一个单独的框架(很像Zend Framwork来自PHP)?

JSF由JSR 344提供支持.Oracle 社区流程支持此规范,Oracle 支持该流程.由此可以推断,至少Oracle为JSF提供了一个实现.由于JSF是一个规范,它也可以由其他组织实现.目前,JSF的另一个实现是MyFaces.

你会建议学习还是

这就像问我应该学习如何创建HTML或如何使用将为我创建HTML的库集?.JSP是一种用于Web应用程序视图的技术,它通过使用Java技术来支持动态内容.JSF是一个MVC框架,可帮助您通过视图,控制器和模型简化视图(JSP或Facelets)中的内容生成和数据绑定.您可以同时学习,我建议您了解您当前使用的内容或使用的内容.你应该学习IMO:JSF用于开发JSF应用程序,JSP用于其他MVC框架或维护用JSP构建的当前遗留应用程序.