我应该选择哪个框架 - Seam、Wicket、JSF 还是 GWT? [关闭]

2024-06-30

我正在考虑是否使用 Seam、Wicket、JSF 还是 GWT 作为 Java 项目中表示层的基础。

根据就业市场的考虑、技术的新颖性以及其他 S.O. 的建议,我将 Java Web 框架的选择范围缩小到了这个子集。用户。

在做出决定时我应该考虑哪些因素?


我从 1.4 版本开始就使用 GWT,从 2.0 规范发布以来我就使用 JSF。

GWT 是一个客户端框架,它从 Java 生成 JavaScript。您的架构将是纯粹的客户端-服务器,这意味着:

  • 最好使用粗粒度服务
  • 所有传输到客户端的对象都应该是完全可序列化的(这意味着没有延迟加载或 OpenSessionInView 模式)
  • 从 GWT 2.0 开始,您可以使用 xhtml 设计 gui,这在样式化和构建 HTML 方面要容易得多
  • GWT 倾向于支持好的架构,如果你搞砸了它就会bad重构
  • Perfect历史记录(浏览器后退按钮、可添加书签的 URL)支持hard,你可能必须自己动手,尽管很容易直接破解某些东西

JSF 是一个基于组件的框架,采用视图优先设计(如果您愿意,可以使用代码隐藏):

  • 做某种类型的网络应用程序(有状态的,比如购物车)更容易
  • JSF+Seam 支持对话(想想类似向导的页面,在多个页面之间维护状态)
  • You can实现 OpenSessionInView,具体取决于您的堆栈。如果您将 EJB 用于服务/业务层,可能不推荐
  • JSF2 has superb support for AJAX, and with a component suite like RichFaces you can build nice webapps
    • 但如果你想要精致的 javascript 行为,你就必须编写一些 javascript
  • JSF 跟踪客户端或服务器端的当前 UI 状态。这是网络流量或服务器内存之间的权衡。

Resume:

  • GWT更适合网络应用(想想 gmail)需要最好的客户端性能。编写自定义组件(您编写 Java)很容易,并且由于您的服务器端只是一个服务层,因此您可以在服务器端完全无状态。
  • JSF更适合大多数 CRUD 应用程序,这些应用程序更适合面向组件的东西:想想酒店/航班预订系统、带有购物车的在线商店等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该选择哪个框架 - Seam、Wicket、JSF 还是 GWT? [关闭] 的相关文章

  • 正则表达式匹配 Java 中的未转义逗号

    问题描述 我试图使用 String 类提供的 split 方法将 a 拆分为单独的字符串 文档告诉我 它将围绕参数的匹配进行拆分 参数是正则表达式 我使用的分隔符是逗号 但逗号也可以转义 我使用的转义字符是正斜杠 只是为了让事情变得更容易
  • 如何在JNA中填充结构体数组?

    我正在尝试在 JNA 中使用以下 Windows API UINT WINAPI GetRawInputDeviceList Out opt PRAWINPUTDEVICELIST pRawInputDeviceList Inout PUI
  • JDK:如何以编程方式启用 PlatformLogger

    我需要以编程方式启用某些 JDK7 内部类的日志记录 这就是我在应用程序初始化时所做的事情 httpLogger Logger getLogger sun net www protocol http HttpURLConnection ht
  • 如何使用鼠标指针和键盘快捷键捕获文本?

    我想使用 C 或 java 使用鼠标指针和键盘快捷键从打开的窗口捕获文本 喜欢babylon http babylon com 所以 我需要知道什么以及如何实施 我需要使用哪些库 或者我可以使用 winapi 吗 使用脚本语言创建您想要执行
  • 媒体对象上的 javafx UNKNOWN 持续时间

    我是 Java 和 JavaFX 的新手 过去几年我一直在使用 QT 在 Python 上进行开发 现在我正在使用 Java 和 JavaFX 进行开发 我正在开发一个程序 可以为用户设定的时间播放音乐文件 然后停止 因此 我需要从媒体对象
  • android下拉刷新列表视图出错

    我正在使用功能下拉来刷新library https github com chrisbanes Android PullToRefresh克里斯班斯的 但是当我尝试在我的 xml 文件中导入这个小部件时 它向我显示以下错误 请帮助我如何解决
  • 查找 Maven 使用的 Java 选项

    如何找到 Maven 正在使用哪些 Java 选项 Xmx Xms Xss 等 我发现有一种方法set它们是通过环境 MAVEN OPTS 实现的 现在我想要一种方法来确保它获得正确的设置 编辑 我相信它有所不同这个问题 https sta
  • 按下 JButton 时运行函数

    我正在尝试用java编写一个程序 使用机器人每隔几秒按一次特定的键 它有一个带有开始和停止按钮的 GUI 以及一个告诉其处于哪个状态的标签 到目前为止 我已经完成了所有工作 除了当我单击 开始 时 它运行我的机器人功能的循环 这是无限的 没
  • 将 float 转换为 Short,精度损失最小[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个生成浮点值 例如 0 37885 的正弦波 但我希望它们作为短裤 直接使用 Short 进行转换 得到的值为 0 那么解决方案是什么
  • Spring Boot数据休息中的日期问题

    当我处理日期时 我遇到了春季数据休息的问题 简而言之 就是推迟一天的日期 例如 如果我有 1111 11 11 它会返回给我 1111 11 10 SO 中有一些相关的帖子 ex1 https stackoverflow com quest
  • @AfterReturning 方面在切入点方法的同一事务中执行?

    我需要在执行函数后执行任务 我为此使用了 Aspect 但我有些困惑 我在 Spring 服务中有一个函数 A Transactional readOnly false isolation Isolation DEFAULT propaga
  • 从 android 将用户注册到 QuickBlox 用户

    我正在尝试在我的 Android 应用程序中使用 QuickBlox 我阅读了指南并导入了示例 一切正常 我更改了一些用户可以使用 EditText 作为用户名和另一个密码登录的内容 并且效果很好 但现在我想添加一个注册按钮 使用户能够注册
  • 使用 Flink 监控数据流目录中的新文件

    我目前正在编写我的第一个 Flink 应用程序 并且想要监视文件夹中的新文件 不幸的是我找不到关于这个主题的很多例子 我找到了readFile fileInputFormat path watchType interval pathFilt
  • javax.el.PropertyNotFoundException:itemLabel =“#{projet.nomProjet}”:在类型java.lang.String上找不到属性“nomProjet”

    我正在尝试将 JSF 转换器应用到 selectOneMenu 内的实体 但转换器无法识别 我在 xhtml 文件中收到此警告 lt lt nomProjet cannot be resolved gt gt 当我运行该应用程序时 我收到错
  • 用java.nio在内存中写入文件?

    使用 nio 可以映射内存中的现有文件 但是是否可以仅在内存中创建它而不在硬盘驱动器上创建文件 我想模仿 CreateFileMapping 窗口函数 它允许您在内存中写入 Java 中有等效的系统吗 目标是写入内存以便另一个程序 c 读取
  • 在 onClick 处理程序的活动类 [...] 中找不到方法 [...](View)

    当我按下按钮时fragment main xml 出现这个错误 java lang IllegalStateException Could not find a method sendMessage View in the activity
  • 以编程方式创建 PDF 相册

    我有一组 PDF 相册模板 它们有空白方块 用于放置文本和照片 我的需要是使用这些模板来生成实际的专辑 我的计划是使用 iText 和 Java 我会向应用程序发送一个包含所有要使用的图像 URL 的数组 我将确切地知道图像应该放置在模板上
  • 如何使用 Firebase 查询中的信息填充 Android ListView

    这是我的第一篇文章 所以如果我没有遵循我应该遵循的一些协议 我深表歉意 我正在尝试使用 Firebase 数据库中的一些信息填充 ListView 我认为我遇到的问题是对数据库的查询太慢 线程可能正在下载图片 并且我的活动加载其活动布局而不
  • Java 8 并行流和 ThreadLocal

    我试图弄清楚如何在 Java 8 并行流中复制 ThreadLocal 值 所以如果我们考虑一下 public class ThreadLocalTest public static void main String args Thread
  • CodenameOne 在构建后停止工作

    我对 codenameone 有一个奇怪的问题 我什至不确定出了什么问题 我尝试过 发送 Windows Phone 版本 并且从那时起我认为我没有更改任何其他内容 然而 在我这样做之后 模拟器无法启动并一直说我的导入是错误的 事实并非如此

随机推荐

  • PHP - 可以将成员函数分配给变量吗? [复制]

    这个问题在这里已经有答案了 在 PHP5 中 变量可以作为函数进行计算1 http php net manual en functions variable functions php例如 function myFunc echo what
  • Django Tastypie 高级过滤:如何使用 Q 对象进行复杂查找

    我有一个基本的 Django 模型 例如 class Business models Model name models CharField max length 200 unique True email models EmailFiel
  • 如何更改 postgres 中函数的所有者

    我正在编写一个脚本来更改 postgres 的所有函数 更改每个函数的所有者 我可以使用 postgres 查询列出所有函数名称 但无法列出每个函数的参数 如果我得到以下任何问题的解决方案 我的问题就会得到解决 有没有办法列出每个函数中参数
  • 在 Javascript 中用序列号映射数组

    下面的代码 let myArray Array apply null length 10 map Number call Number 创建以下数组 0 1 2 3 4 5 6 7 8 9 我只是不明白为什么 我在互联网上找不到任何解释这种
  • Ruby on Rails,从另一个模型创建记录

    我正在使用这个文件上传器来处理 ruby on Rails 我上传了一些带有数字的文件进行统计分析 文件的模型称为 filedb 在 filedb rb 中 打开文件并分析数字 一些相关内容等 之后 我需要将结果保存到名为结果的表中 在 f
  • 为什么 Javascript sort() 函数没有给出预期的输出? [复制]

    这个问题在这里已经有答案了 可能的重复 排序不适用于整数 https stackoverflow com questions 1063007 sort not working with integers 如何在javascript排序方法中
  • Nodejs mongodb 的 Transaction API `withTransaction` 总是返回 null

    我想从 mongodb 返回某些结果withTransaction功能 但是 我似乎无法返回除 null 之外的任何内容 官方文档中记录了应该返回承诺 https mongodb github io node mongodb native
  • 绘制一个图,其中顶点之间的距离对应于边权重

    当我给他一个加权图和边权重顶点之间的点到顶点之间的距离 就像是 public ArrayOfCoordinatesForVertices super hyper algorithm weighted graph return foo 这通常
  • Java 中的迭代字典

    我有一本java字典 protected Dictionary
  • 如何等到我的批处理文件完成

    我正在做一个程序 我需要启动 cmd 并启动一个批处理文件 问题是我正在使用MyProcess WaithForexit 我认为它不会等到批处理文件处理完成 它只是等待 cmd 关闭 到目前为止我的代码 System Diagnostics
  • 如何从我的审核表中删除条目?

    我目前正在与 Hibernate Envers 合作 如何删除审计表中与我要删除的实体相关的条目 我的实体与其他实体没有关系 我发现我必须这样做onPostDelete我的自定义监听器的方法 import org hibernate env
  • 如何动态地从对象中提取所有元素

    如何从对象中提取特定列 我有一个列数组 我希望从对象中提取这些字段 该对象将由作为项目的映射循环函数构造 现在在这里 如何动态检查我的字段 我不想要这样的 item col 0 请告诉我一个捷径 const person firstName
  • 使用 range-v3 读取以逗号分隔的数据行

    是的 因为我最近问了一个非常类似的问题 如何读取以逗号分隔的整数列表 但这次我被困在读取由逗号分隔数据组成的字符串行上 将我之前处理整数的代码转换为处理数据块字符串肯定很简单 对吧 好的 所以我从文件或标准输入中读取数据 该文件或标准输入有
  • Ruby:在 Windows 7 下安装 EventMachine 时出现问题

    我尝试通过捆绑包在 Windows 7 上安装 gem EventMachine 使用 Ruby 1 9 2 和 RubyInstaller 但出现以下错误 我还安装了 DevKit 并且它可以工作 但我仍然无法弄清楚问题出在哪里 Inst
  • JavaScript 中的 touchstart 不再返回 TouchList

    我遇到了一个非常奇怪的问题 我正在绑定touchstart事件到一个元素 并且想要检索事件的 X 和 Y 坐标 全部文档 http developer apple com library safari documentation apple
  • 如何以列格式单独显示AJAX响应值?

    我使用 AJAX 从 PHP 中仅获得 3 个用户值 并且该值必须以列格式显示 我已经尝试过下面的代码 但它没有显示 我得到的输出就像所有名字都垂直显示 然后垂直显示姓氏后 AJAX document ready function sear
  • jQuery 会在过滤选择器中的其他参数之前搜索 ID 吗?

    这个问题与性能有关 如果我使用如下选择器 myID a Does this find myID and filter by a 或者我应该这样写声明 myID find a 我不确定 jQuery 是否足够聪明 可以首先使用 ID 执行此语
  • 我的新游戏 JButton 无法运行?

    您好 我目前正在做一项作业 已完成 98 我制作了 gui 程序 其中 jtextfield 设置为 0 但当你玩游戏时它会发生变化 现在我创建了一个名为 NEW GAME 和 QUIT 的 j 按钮 单击 我的退出 按钮后效果很好 但我的
  • 在 C++ 中连接 __FILE__ 和 __LINE__ 宏

    我希望我的异常消息包含有关异常位置的信息 所以我想要这样的东西 define LOCATION FILE LINE throw std exception std string ABCD LOCATION 这个定义显然是不正确的 我怎样才能
  • 我应该选择哪个框架 - Seam、Wicket、JSF 还是 GWT? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi