Java EE vs JSP vs JSF

时间:2014-05-17 02:35:51

标签: java jsp jsf jsf-2

我希望学习用于开发Web应用程序的Java技术。当我更多地看到这一点时,我在之间感到困惑。我知道SO上有几个帖子(post 1post 2)试图解决这些混淆,我还有其他一些帖子:

  1. JSP"死了"赞成JSF?
  2. Java EE是JSF运行的平台还是完全不同的东西?
  3. JSF仅仅是用于开发Web应用程序的MVC框架吗?
  4. JSF是由Oracle开发的框架和Java的一部分,还是一个单独的框架(很像Zend Framwork来自PHP)?
  5. [Bonus]您会建议学习吗?
  6. 在您的回答中,您可以随意将这些技术与ASP.NET,ASP.NET MVC,Ruby on Rails,Zend Framework或常规Java Applet等进行比较,因为这些是我已经熟悉的事情。

    感谢您的时间。

3 个答案:

答案 0 :(得分:32)

  

JSP"死了"赞成JSF?

JSF与JSP相比有许多好处。例如:

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

我们可以继续下去。

您仍然可以将JSP用于需要某些特定灵活性或性能的其他场景,以及针对servlet的相同内容,但JSF几乎取代了JSP,以及#34; robust"应用

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

根据我的经验,JSP实际上是#34;死了"如果与JSF和其他框架(如Spring MVC和其他框架)进行比较。 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 Framework。

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

  

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

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

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

同时查看JSF 2.2 new features,此页面非常适合介绍添加到框架中的最新功能。

答案 1 :(得分:14)

  

JSP"死了"赞成JSF?

不,它仍然作为视图技术用于传统和当前Web应用程序。此外,JSF使用JSP作为视图,但是从JSF 2开始,最好使用Facelets作为技术视图。这里解释了原因:Why Facelets is preferred over JSP as the view definition language from JSF2.0 onwards?。简而言之,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)?

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

  

您会建议学习吗?

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

答案 2 :(得分:3)

  

1.是JSP"死了"赞成JSF?

在JAVA EE领域,JSP已经宣布"已过时"。在更广阔的世界里,它还活着。

  

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

取决于" top"的位置。 Servlet是大多数Java框架的基础,包括JSF。

  

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

是的,JSF是一个表示层框架。

  

4. JSF是由Oracle开发的框架和Java的一部分,或者它是一个单独的框架(就像Zend Framwork来自   PHP)?

JSF是Oracle的Java EE 7的官方部分。

  

5. [Bonus]你会推荐学习jsp或jsf吗?

两者都有一定的深度。还要考虑HybridJava - 它与JSF一样功能强大,但大约两倍更简单。