【问题标题】:upgrade to javaserver faces. Easy task?升级到 javaserver 面。轻松的任务?
【发布时间】:2010-12-24 19:01:51
【问题描述】:


我有以下问题:
首先,我知道(并且有一些学术经验)JSP 和 Struts,但我对 JSF 一无所知。
有一个项目的前端已经使用小程序制作。
我被要求研究将其更改/升级到 JSF。
所以我的问题是,这是一项简单的任务还是至少是直接的任务?
我问这个是因为 i)我不知道 JSF 的学习曲线,并且 ii)我很久以前就放弃了学习小程序(我认为这项技术已经死了)
非常欢迎对此提出任何意见!
更新:如果有任何不同,由于沙盒限制,他们希望留下小程序。
谢谢

【问题讨论】:

  • 特别限制了哪些沙盒?除非您包含额外的技术,例如 JavaScript、Flash 或 Java Applet (!),否则 JSF 可以做的甚至比受限制的 java applet 还要少。
  • @nhnb:我不确定我是否得到您的评论,但他们遇到的问题是 java-security 东西(证书、密钥等)的实现,显然沙盒会导致很多问题
  • 只有在需要比沙盒提供的更多权限时,您才需要签署一个小程序。重要的问题是您的小程序在沙盒之外需要哪些权限。例如,如果这是对客户端硬盘的随机访问,那么使用 JSF 根本不可能。
  • @nhnb:我认为问题出在安装证书(用于 PKI),但不确定。它肯定与 PKI 有关,但我不确定他们在哪个部分有问题。您对此有任何想法吗?

标签: java web-applications jsf applet


【解决方案1】:

JSF 中编程需要扎实的Servlet API 知识,并了解在Servlet API 之上使用(基于组件的)MVC framework 背后的思想。它还需要对 Web 开发中的“客户端”和“服务器端”方面有深入的了解。如果您缺乏任何这些理解,那么学习曲线确实会非常陡峭。

使用 JSF,您基本上会得到一个 JSP 或 XHTML(Facelets)页面作为 View 和一个普通的 Javabean 类作为 Model。您还需要意识到,applet 基本上是在客户端计算机上运行的一个软件,而 JSF 在 Web 服务器上运行,生成 HTML/CSS/JS,这些 HTML/CSS/JS 被发送到 Web 浏览器,在那里它被解释/应用/执行。它不像applet 那样在webbrowser 上运行Java 代码。这是一个巨大的差异。

要开始学习JSF,你至少需要有minimum required skills for Java webdevelopment,然后你可以从以下任一教程开始:

【讨论】:

  • 取决于小程序的设计方式。如果它包含与 Swing 不紧密耦合的可重用业务/服务/数据类(即,java.awt/javax.swing 导入为零),那么您可以在 JSF 中重用它。
  • 有趣的评论。我认为小程序是 html 页面中的代码标签。所以我一直认为 UI 组件来自 HTML 标签。
  • 当然不是,applet 只是客户端 Java 软件 (AWT/Swing/etc) 的一部分,可以从网站下载。 HTML 标签只是指示网络浏览器在哪里下载必要的软件。
【解决方案2】:

从 Struts 迁移到 JSF 是您处理问题的方式的一种范式转变(我的看法)。 Struts 使用基于动作的模型,而 JSF 使用组件模型(类似于使用 Swing 编写桌面 GUI 应用程序等)。为了让开发人员的工作变得更加困难,JSF 附带了复杂的请求处理生命周期,由 JSF 1.1 中对现实世界的问题实现无益的支持。

我看到人们从 struts 迁移到 JSF 时遇到了很多困难,因此产生了一个混合了两个世界(基于动作和基于组件)的代码库。这种混合代码库很难维护和调试。

话虽如此,JSF 仍然是规范,如果您可以将 JSF 2.0(或至少 JSF 1.2)与 Facelets 一起使用,那么我的建议是考虑以下因素进行简单的概念验证

  • 使用 Facelets 了解 JSF 2.0 或 1.2 的基础知识
  • 处理一个复杂的用例(在 的动态 UI)由 当前小程序
  • 端到端构建,涵盖验证、模板、侦听器、操作
  • 然后在GWTVaadin 中执行相同的用例。我建议这样做是因为您的用户目前习惯于使用小程序的胖客户端,而 GWT 就是为此而设计的

如果您最终碰巧选择了 JSF 1.2 或 2.0,那么我强烈建议您使用 PrimeFaces 组件套件。它快速、简单且组件丰富。

【讨论】:

  • 为什么我要在 GWT 中做同样的用例?我在这部分失去了你
  • GWT 是 Google Web Toolkit。这是一种被广泛接受(或流行)的方式来实现像小程序这样的厚客户端。此外,如果您使用两个不同的技术堆栈实现相同的用例,那么您就有更多机会做出好的选择。 GWT 还使调试和单元测试更容易,因为您的 UI 将仅用纯 Java 编写。无需处理 html、css 等。它也有很好的小部件支持,它的 UI 比 JSF ui 响应更好。我建议你在这里查看他们的展示样本:code.google.com/webtoolkit/examples
  • 我明白了,您的意思是作为 JSF 的替代品。这不是由我决定的,但我会研究一下。我对 JSP 的了解是否有助于我更快地学习 GWT?
  • GWT 只是 java。因此,您的 Java 知识是唯一需要的。这对我来说是一个主要优势。由于都是 java,您可以利用 IDE 为您的 UI 层代码提供的所有功能(如代码完成、静态代码分析、调试、单元测试等)。
【解决方案3】:

总的来说,我认为这不是简单直接的转换,因为环境如此不同。使用 applet,java 代码在客户端系统上运行,并通过某种协议与服务器进行通信。 JSF 运行服务器中的所有代码,并且可以直接访问您的数据。出于规划目的,我不希望能够使用任何现有的 UI 代码。

有一些库可以将您的 Swing 程序转换为基于 Web 的应用程序。我没有使用过其中任何一个,但我认识一些取得了巨大成功的人。这将取决于您要申请的方向。 JSF 正在取得进展,因此基于它的工具只会变得更好。

【讨论】:

  • 从 Swing 到基于 Web 的转换库在这里如何适配?我不跟随。我问了小程序
  • 你没有在小程序中使用 Swing?
  • @JTON:在 BalusC 评论之后,我明白了你的意思。所以你说有些库可以从 swing 组件创建,例如JTree 或 JTable 等效的基于 Web 的 UI 组件?能否请您提及一个这样的库来研究?
  • 我听到人们谈论的是翅膀。我没用过。 wingsframework.org/cms
  • @JTON:谢谢,我会研究一下。虽然这似乎声称是 JSF 的替代品。但我认为它会创建一个现成的摇摆程序并重用它。似乎开发人员必须编写代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多