问题描述
我正在尝试决定使用GWT还是手动编写的JavaScript。 如果我使用常规JavaScript,则Java应用程序的工作方式如下:
- 客户端访问URL,而服务器执行servlet。
- Servlet查询数据库并将数据转发到JSP。
- JSP中的JavaScript在表中显示数据。
根据我的 ,当您使用GWT时,过程会发生变化:
- 客户端访问URL,服务器提供带有GWT生成的JavaScript的页面。
- 生成的JavaScript创建一个表,并使用GWT-RPC告诉Servlet提供数据。
- Servlet查询数据库并将数据返回给JavaScript,JavaScript在表中显示数据。
在第二个过程中,客户端两次访问服务器:一次访问URL,一次告诉servlet提供数据。 我知道第二部分是异步执行的,但效率似乎仍然很低。 我确定我缺少基本的东西,希望有人能使我挺直。
1楼
好,让我们从效率的角度来看一下。
是的,对于您描述的简单情况,客户端可能需要稍等一会。
但是,就开发有用的网站而言,您很可能会进行身份验证,并希望从页面的中间进行ajax调用。 您也可能希望基于用户输入来进行布局更改,而在jsp页面中这样做是不切实际且麻烦的。
手动编写的javascript过去在不同的浏览器中也可以以完全不同的方式运行,这对于GWT为特定的浏览器编译不同的版本来说是一件好事。 今天可能并非如此,但如果您需要定位多个目标,则应考虑使用浏览器。
因此,就效率而言,我的回答是,在最简单的情况下,没有GWT并不是最有效的,但是如果您需要制作更复杂的Web应用程序并希望避免浏览器问题,那么使用Java进行开发更容易维护。
我实际上是在第一次调用时返回一个.jsp页面,然后从那里引导GWT javascript(而不是使用html页面)。 没有任何真正的原因不能在jsp页面中包含所需的任何数据,只是如果您的要求如此简单,请以这种方式进行操作,以确保引导GWT代码会产生一定的成本。 在我的情况下,我需要先进行身份验证,然后返回的数据取决于其凭据,然后取决于用户所需的信息来加载ajax调用。 用javascript手工开发将是一场噩梦。
2楼
GWT编译器生成的Java脚本在客户端缓存,因此,当您首次访问应用程序时,您会发现与纯Java脚本相比,它花费了一些时间。 但是,如果您尝试再次访问它,则在加载页面时将不会看到性能问题。
在这两种情况下,您都两次访问服务器。 第一个请求是加载视图,第二个请求是从服务器获取数据。
GWT不适合简单的应用程序。 它主要用于企业应用程序。
GWT编译器生成的Java脚本处理了大多数浏览器的复杂性,而这些复杂性很难用普通的Java脚本代码维护。