升级到JavaServerFaces。简单的任务?

升级到JavaServerFaces。简单的任务?,java,web-applications,jsf,applet,Java,Web Applications,Jsf,Applet,我有以下问题: 首先,我知道JSP和Struts,并且有一些学术经验,但我对JSF一无所知。 有一个项目已经使用applet制作了前端。 我被要求研究如何将其更改/升级到JSF。 所以我的问题是,这是一项简单的任务,还是至少是简单的任务? 我问这个问题是因为我不知道JSF的学习曲线,而我在很久以前就放弃了学习小程序,我认为这项技术已经过时了 我们非常欢迎对此的任何意见! 更新:如果有什么不同,他们会因为沙盒限制而离开applet。 感谢在中编程需要对使用基于Servlet API之上的组件背后的

我有以下问题: 首先,我知道JSP和Struts,并且有一些学术经验,但我对JSF一无所知。 有一个项目已经使用applet制作了前端。 我被要求研究如何将其更改/升级到JSF。 所以我的问题是,这是一项简单的任务,还是至少是简单的任务? 我问这个问题是因为我不知道JSF的学习曲线,而我在很久以前就放弃了学习小程序,我认为这项技术已经过时了 我们非常欢迎对此的任何意见! 更新:如果有什么不同,他们会因为沙盒限制而离开applet。 感谢

在中编程需要对使用基于Servlet API之上的组件背后的思想有扎实的知识和理解。它还需要对web开发中的客户端和服务器端方面有深入的了解。如果你缺乏这些理解,那么学习曲线确实会相当陡峭

使用JSF,您基本上以JSP或XHTML Facelets页面作为视图,以普通Javabean类作为模型。您还需要认识到,applet基本上是一个在客户机上运行的软件,JSF在web服务器上运行,生成HTML/CSS/JS,并将其发送到webbrowser进行解释/应用/执行。它不像小程序那样在webbrowser上运行Java代码。这是一个巨大的差异

要开始学习JSF,您至少需要有Java webdevelopment的教程,然后可以从以下教程开始:

在中编程需要对使用基于Servlet API之上的组件背后的思想有扎实的知识和理解。它还需要对web开发中的客户端和服务器端方面有深入的了解。如果你缺乏这些理解,那么学习曲线确实会相当陡峭

使用JSF,您基本上以JSP或XHTML Facelets页面作为视图,以普通Javabean类作为模型。您还需要认识到,applet基本上是一个在客户机上运行的软件,JSF在web服务器上运行,生成HTML/CSS/JS,并将其发送到webbrowser进行解释/应用/执行。它不像小程序那样在webbrowser上运行Java代码。这是一个巨大的差异

要开始学习JSF,您至少需要有Java webdevelopment的教程,然后可以从以下教程开始:


我认为,从Struts到JSF是解决问题方式的一种范式转变。Struts使用基于动作的模型,而JSF使用组件模型,如使用Swing等编写桌面GUI应用程序。为了让开发人员更加困难,JSF提供了复杂的请求处理生命周期,并在JSF 1.1中实现了一个不适合现实世界的问题

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

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

通过Facelets学习JSF2.0或1.2的基础知识 在术语方面处理一个复杂的用例 的支持的动态UI 当前小程序 构建端到端的it,包括验证、模板、列表器和操作 然后在或中执行相同的用例。我之所以建议这样做,是因为您的用户目前已经习惯于使用applet的厚客户端,而GWT就是为了实现这一点
如果您最终选择了JSF1.2或2.0,那么我强烈建议您使用组件套件。它快速、简单且组件丰富。

在我看来,从Struts到JSF是解决问题方式的一种范式转变。Struts使用基于动作的模型,而JSF使用组件模型,如使用Swing等编写桌面GUI应用程序。为了让开发人员更加困难,JSF提供了复杂的请求处理生命周期,并在JSF 1.1中实现了一个不适合现实世界的问题

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

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

通过Facelets学习JSF2.0或1.2的基础知识 在术语方面处理一个复杂的用例 的支持的动态UI 当前小程序 构建端到端的it,包括验证、模板、列表器和操作 然后在或中执行相同的用例。我之所以建议这样做,是因为您的用户目前已经习惯于使用 applets和GWT就是为了这个
如果您最终选择了JSF1.2或2.0,那么我强烈建议您使用组件套件。它快速、简单、组件丰富。

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


有一些库将您的Swing程序转换为基于web的应用程序。我没有使用过任何一种,但我知道有人取得了很好的成功。这将取决于您希望应用程序的方向。JSF正在取得进展,因此基于它的工具只会变得更好。

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


有一些库将您的Swing程序转换为基于web的应用程序。我没有使用过任何一种,但我知道有人取得了很好的成功。这将取决于您希望应用程序的方向。JSF正在取得进展,因此基于它的工具只会变得更好。

哪些沙箱限制特别重要?除非您包括额外的技术,如JavaScript、Flash或Java小程序!,JSF甚至比受限java小程序做得更少。@nhnb:我不确定是否收到您的评论,但他们的问题是java安全性的实现,证书、密钥等,显然沙盒会导致很多问题。只有当小程序需要比沙盒提供的更多权限时,您才需要对其进行签名。重要的问题是小程序在沙箱之外需要哪些权限。例如,如果这是对客户端硬盘的随机访问,那么使用JSF根本不可能。@nhnb:我认为问题在于PKI证书的安装,但不确定。这肯定与PKI有关,但我不确定他们在哪一部分有问题。你对此有什么想法吗?特别是哪些沙箱限制?除非您包括额外的技术,如JavaScript、Flash或Java小程序!,JSF甚至比受限java小程序做得更少。@nhnb:我不确定是否收到您的评论,但他们的问题是java安全性的实现,证书、密钥等,显然沙盒会导致很多问题。只有当小程序需要比沙盒提供的更多权限时,您才需要对其进行签名。重要的问题是小程序在沙箱之外需要哪些权限。例如,如果这是对客户端硬盘的随机访问,那么使用JSF根本不可能。@nhnb:我认为问题在于PKI证书的安装,但不确定。这肯定与PKI有关,但我不确定他们在哪一部分有问题。你对此有什么想法吗?为什么我要在GWT中使用相同的用例?我在这一部分失去了你。这是谷歌网络工具包。这是一种被广泛接受或流行的实现像applet这样的厚客户端的方法。此外,如果您使用两个不同的技术堆栈实现相同的用例,那么您有更多的机会做出一个好的选择。GWT还使调试和单元测试更容易,因为您的UI将仅用纯Java编写。无需处理html、css等。它还具有非常好的小部件支持,其UI比JSF UI响应性更好。我建议您在这里查看他们的showcase示例:我明白了,您的意思是作为JSF的替代品。这不由我来决定,但我将对此进行研究。我对JSP的了解是否有助于我更快地学习GWT?GWT只是java。因此,您在Java方面的知识是唯一需要的。这是我的一大优势。由于它都是java,您可以利用IDE为UI层代码提供的所有功能,如代码完成、静态代码分析、调试、单元测试等?我在这一部分失去了你。这是谷歌网络工具包。这是一种被广泛接受或流行的实现像applet这样的厚客户端的方法。此外,如果您使用两个不同的技术堆栈实现相同的用例,那么您有更多的机会做出一个好的选择。GWT还使调试和单元测试更容易,因为您的UI将仅用纯Java编写。无需处理html、css等。它还具有非常好的小部件支持,其UI比JSF UI响应性更好。我建议您在这里查看他们的showcase示例:我明白了,您的意思是作为JSF的替代品

我对JSP的了解能帮助我更快地学习GWT吗?GWT只是java。因此,您在Java方面的知识是唯一需要的。这是我的一大优势。由于它都是java,所以您可以利用IDE为UI层代码提供的所有功能,如代码完成、静态代码分析、调试、单元测试等。这取决于小程序的设计方式。如果它包含与Swing不紧密耦合的可重用业务/服务/数据类,即没有java.awt/javax.Swing导入,那么您可以在JSF中重用它。我认为applet是html页面中的代码标签。所以我一直认为UI组件来自HTML标签。不,当然不是,小程序只是客户端Java软件AWT/Swing/etc的一部分,可以从网站下载。HTML标签只是指示网络浏览器在何处下载必要的软件。这取决于小程序的设计方式。如果它包含与Swing不紧密耦合的可重用业务/服务/数据类,即没有java.awt/javax.Swing导入,那么您可以在JSF中重用它。我认为applet是html页面中的代码标签。所以我一直认为UI组件来自HTML标签。不,当然不是,小程序只是客户端Java软件AWT/Swing/etc的一部分,可以从网站下载。HTML标签只是指示webbrowser在哪里下载必要的软件。从Swing到基于web的转换库如何适应这里?我不明白。我问过applet你没有在applet中使用Swing吗?@JTON:在BalusC发表评论后,我理解了你的意思。你是说有一些库可以从Swing组件创建,例如JTree或JTable等效的基于web的UI组件?你能提到一个这样的库吗?我听到人们谈论的是翅膀我没用过@杰顿:谢谢,我将对此进行研究。从第一次阅读来看,这似乎声称是JSF的替代品。我还认为它将创建一个现成的swing程序并重用它。开发人员似乎必须编写代码,从Swing到基于web的转换库如何适合这里?我不明白。我问过applet你没有在applet中使用Swing吗?@JTON:在BalusC发表评论后,我理解了你的意思。你是说有一些库可以从Swing组件创建,例如JTree或JTable等效的基于web的UI组件?你能提到一个这样的库吗?我听到人们谈论的是翅膀我没用过@杰顿:谢谢,我将对此进行研究。从第一次阅读来看,这似乎声称是JSF的替代品。我还认为它将创建一个现成的swing程序并重用它。似乎开发人员必须编写代码