我希望学习用于开发Web应用程序的Java技术。当我更多地看到这一点时,我在jsf,jsp和javaee之间感到困惑。我知道SO上有几个帖子(post 1,post 2)试图解决这些混淆,我还有其他一些帖子:
答案 0 :(得分:32)
JSP"死了"赞成JSF?
JSF与JSP相比有许多好处。例如:
我们可以继续下去。
您仍然可以将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。例子:
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一样功能强大,但大约两倍更简单。