除了 Wicket 的简单性(即 Wicket 是一个更简单的系统恕我直言)和 GWT 在客户端的响应能力(GWT 的客户端状态和 JavaScript - 潜在的复杂客户端代码)以及 GWT 更大的扩展潜力的论点之外,还有什么论据在 Wicket 上使用 GWT?
就我个人而言,我做过很多 Wicket 开发,但很久以前才快速浏览过 GWT。
除了 Wicket 的简单性(即 Wicket 是一个更简单的系统恕我直言)和 GWT 在客户端的响应能力(GWT 的客户端状态和 JavaScript - 潜在的复杂客户端代码)以及 GWT 更大的扩展潜力的论点之外,还有什么论据在 Wicket 上使用 GWT?
就我个人而言,我做过很多 Wicket 开发,但很久以前才快速浏览过 GWT。
优点基本上是,GWT 是构建基于 javascript 客户端的工具,因此,如果您想要基于 javascript 的客户端,它最适合。
Wicket 以服务器为中心,虽然它可以很容易地将 javascript 嵌入到无状态页面中,但服务器端状态处理是更自然的方法。
必须注意,架构是非常不同的。
使用 GWT,您的架构变成客户端-服务器,即浏览器上的胖客户端,向服务器调用“过程”(服务),发送和接收数据。
使用 Wicket(以及其他以服务器端为中心的组件框架,如 JSF 和 Tapestry),架构是更“传统”的 3 层架构,发送和接收的是页面或页面的片段,而不是纯数据。
虽然您当然可以将两者混合以适应其他架构,但这并不是很自然。
人们倾向于关注“哪个更易于使用”(这完全是主观的,取决于您的背景),或者“哪个更漂亮,组件更多”,但不应低估架构差异,这会影响您的方法必须处理安全性和可扩展性等方面。
在过去的几个月里,我参与了一个基于 GWT 的项目。多年来,我一直是 Wicket 开发团队的一员,期待着改变,并对 GWT(我一直吹捧为另一个伟大的 Java 框架)寄予厚望。
老实说,当谈到与 GWT 合作时,我感到很失望。我觉得——实际上是我的整个团队——生产力受到了很大的打击。从理论上讲,GWT 很棒。但是当你考虑到框架的怪癖和限制、平庸的错误报告(特别是在涉及序列化错误时)、编译时间长(在 3 到 10 分钟之间,我们的项目还没有那么大)时,事实上,当一切都说完了,你仍然需要测试所有浏览器并找到调整和解决方法,它会产生巨大的初始下载(几乎一个 MB,我们正在逐渐减少,但有很多努力)等,等等,我觉得 Wicket 更容易和更快地使用。
我不讨厌与 GWT 合作。它仍然比大多数 Java 框架好很多。只是我对使用它的期望更高。我什至预计它可能比 Wicket 更好。但最后,这不是恕我直言。希望 GWT 2.0 能改进很多东西,也希望 Eclipse 插件的一些怪癖也能很快得到解决。
与 GWT 相比,Wicket 的一个优势是 Wicket 可以处理您希望为未启用 Javascript 的客户端提供回退的情况。GWT 完全适用于 Javascript,Wicket 允许您优雅地降级。
将 GWT 与 wicket(或类似的)进行比较有点不公平,因为它们确实来自 2 个不同的阵营。前者是构建 JavaScript 前端应用程序的框架,而后者是经典的 Java Web 应用程序框架。
因此,以下几点并不像 GWT 与 wicket 那样多,而是当我们决定将 GWT 用于高级 JavaScript/AJAX Web 应用程序时编译的一般列表:
在我看来,GWT 的最大好处是允许您使用一种编程语言 - Java,并拥有它带来的所有优点。
与 CSS 一起,它们形成了强大的一对。
换句话说,您几乎可以忘记 Javascript 和 HTML。
这是否是优势主要取决于您的技能和要求。我们在内部也有过同样的争论,最后一个团队选择了 Wicket 和另一个 GWT。
对于典型的商业 Web 应用程序,我可以想到 GWT 比 Wicket 更好的选择的几个原因:
我是 GWT 的新手,但经过一些研究后,我发现 GWT “适合”我的新 Web 应用程序项目,因为它以客户为中心,让我感觉像编写桌面应用程序一样。今天我们有高性能的客户端准备在客户端运行应用程序。我的应用程序可以仅用 Java 完成,而 OOP Java 类使我们有机会为我们的团队构建我们自己的即用型框架。
GWT 背后的天才在于您只使用 java。他们在 RPC 方面做得很好,使得它对程序员几乎是透明的。很多时候,您觉得自己编写的代码更像是桌面应用程序,而不是具有真正定义的客户端和服务器端的应用程序。
我发现与 GWT 相比,wicket 几乎没有其他优势。