-2

我需要将一些停放的 Java 副项目中的功能合并到一个新的应用程序中,并试图决定要使用的一些第三方库,特别是与 UI 相关的库。我很想从面向技术架构的成员那里获得一些关于他们对最近 Java 框架趋势和经验的看法的反馈。

遗留项目是一个混合的、所有基于 Web 的、大量围绕 CRUDable 对象的业务逻辑和搜索。一个使用内部框架 - 非常快速、可扩展,但存在与内部工作相关的缺点 - 新开发人员的学习曲线等。另一个是 Tapestry 5 应用程序 - 非常强大,与 XFire / CXF 完美集成以生成网络服务,快速的 UI 生成,但对于非 Tapestry 类型具有良好的学习曲线。第三个,一个 Spring 3 应用程序,使用 JSP 2.0 标记文件作为视图层,并带有一些 JQuery 用于表示/ajax。

我对 Spring 非常熟悉,并且发现带有 Tiles 的 UI 的标签文件在低复杂性和性能方面非常有效。我最近还完成了一个使用 RichFaces 4 的项目,该项目成功并按时完成。我喜欢 RF/IceFaces 等免费提供的丰富 UI,并且注意到 JSF 在其最新版本中完全退出了 JSP。

切入正题,限制使用基于组件的 UI 库,其具有明确定义但不可修改的行为,如 RF / IF,比使用标签文件 / JQuery 的自行解决方案更适合新应用程序。我更熟悉后者,但不想在项目的早期阶段通过采用过时的方法走错路。我想继续将 Spring 3 控制器用于 RESTful、可书签的应用程序入口点 - 是否将 IF / RF 与 Spring 混合使用,或者 JSF 方法是否完全从 Spring 中删除了 MVC 义务?

如果从 Spring 中删除 MVC 义务:

  • JSF 生命周期将如何与 Spring 集成——它会是自包含的并且只使用 IOC 来连接 Spring 服务吗?

  • 是否与生成 Web 服务等的 IF/RF 方法进行了良好的集成?

  • 中频/射频对平板/手机有哪些支持?

  • 是否完全需要 Spring - 托管 bean 可以解决问题吗?

4

1 回答 1

3

切入正题,使用基于组件的 UI 库具有明确定义但不可修改的行为(如 RF / IF)的限制,它比使用标签文件 / JQuery 的自行解决方案更适合新应用程序。

它不是一个或另一个。Java Server Faces 是一个基于组件的 Web 框架,它允许在请求和响应上同步服务器和客户端状态,从而允许应用程序中的阶段和事件模型之类的东西。许多 JSF 组件固有地利用 jQuery,并通过将它们包装在服务器端行为中来扩展富客户端控件。无论如何,这都不是不可修改的行为,只是有一些学习曲线可以以非常具体的方式定制事物。

JSF 目前是 Oracle 推荐的 Java EE Web 开发方法。

IF / RF 与 Spring 混合还是 JSF 方法完全从 Spring 中删除了 MVC 义务?

JSF 生命周期将如何与 Spring 集成——它是自包含的并且只使用 IOC 来连接 Spring 服务吗?

JSF 本质上是它自己的 MVC 框架,并且托管属性已经在依赖注入中拥有自己的烘焙。Core Spring 主要是依赖注入,所以人们会认为它们是不一致的,但令人惊讶的是它们很好地结合在一起。

Spring 的最新版本为 JSF 提供了他们自己的 EL Resolver 实现,它允许将 JSF Managed Beans 作为 Spring bean 处理。这个类甚至可以回装到旧版本的 Spring 中,我已经完成并且没有发现任何问题。

Spring MVC 主要建立在 JSP 技术之上,但它不是 Spring 的核心部分。如果您不希望提供 JSP 页面,则根本不需要将它包含在 JSF Web 应用程序中。

是否与生成 Web 服务等的 IF/RF 方法进行了良好的集成?

当涉及到 JSF 应用程序中的 Web 服务时,最好记住 JSF 不必对您的 Web 应用程序定义限制,也不必对其进行完整定义。JSF 仅仅是 JSF 页面请求的前端。了解这一点后,您的同一个 Web 应用程序也可以提供它们自己的基于 SOAP 或 REST 的 Web 服务,或者只是在业务逻辑中的服务器端数据源处处理这些 Web 服务。另一种方法仍然是从页面上的 Javascript 调用外部 Web 服务。JSF 中的任何内容都不会阻止您合并 HTML、Javascript 甚至更新的 HTML5 技术的任何元素。

中频/射频对平板/手机有哪些支持?

不确定 IF 和 RF 有什么,但我知道 Primefaces 有一个令人印象深刻的移动应用程序控制集,值得一试。

是否完全需要 Spring - 托管 bean 可以解决问题吗?

不,绝对不需要。我碰巧喜欢 Spring,所以我使用它。

于 2013-04-23T12:01:58.977 回答