Java EE vs JSP vs JSF [已关闭]

2022-09-01 09:37:52

我正在寻求学习一种用于开发Web应用程序的Java技术。随着我对此的深入研究,我对感到困惑。我知道SO上有几个帖子(帖子1帖子2)试图解决这些困惑,除此之外,我还有几个:

  1. JSP是否“死了”,有利于JSF?
  2. Java EE是JSF运行在其上的平台,还是完全不同的东西?
  3. JSF仅仅是一个用于开发Web应用程序的MVC框架吗?
  4. JSF是由Oracle开发的框架和Java的一部分,还是完全是一个单独的框架(就像Zend Framwork来自PHP一样)?
  5. [奖金]你会建议学习还是

在你的答案中,你可以随意将这些技术中的任何一个与 ASP.NET,ASP.NET MVC,Ruby on Rails,Zend Framework或常规的Java小程序进行比较,因为这些是我已经熟悉的东西。

感谢您抽出宝贵时间接受采访。


答案 1

JSP是否“死了”,有利于JSF?

与 JSP 相比,JSF 具有无数的好处。例如:

  • 它定义了一种 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 的一部分,但您不需要完整的 Java EE 概要文件即可使用 JSF。例子:

  • 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框架。

最常见的JSF实现是Mojarra和MyFaces。(Luiggi现在在这方面打败了我,你可以检查他的链接)。

[奖金]你会建议学习jsp还是jsf?

我会推荐两者。JSP第一,JSF之后。

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

另请查看 JSF 2.2 的新功能,此页面对于介绍添加到框架中的最新功能非常棒。


答案 2

JSP是否“死了”,有利于JSF?

不,它仍然作为视图技术维护为传统和当前的Web应用程序。此外,JSF 使用 JSP 作为视图,但由于 JSF 2,最好使用 Facelets 作为技术视图。原因在这里解释:为什么从JSF2.0开始,Facelets作为视图定义语言优于JSP?简而言之,Facelets支持对要渲染的内容进行预处理和后处理,而JSP则不支持。

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

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

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

是的。它不为 Web 服务生成、连接池、事务管理等提供任何帮助。它支持 EJB 注入和参数注入通过 ,但仅此而已。您可以使用其他框架来完成这项工作:Hibernate,EJB,Spring,CDI等。@EJB@ManagedProperty

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

JSF 由 JSR 344 支持。此规范受 Oracle 支持的 Java Community Process 支持。由此,您可以推断出至少Oracle为JSF提供了实现。由于 JSF 是一个规范,因此其他组织也可以实现它。目前,JSF还有另一个实现,MyFaces

你会建议学习还是

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