GWT面试题

1 Apr 2025 | 5 分钟阅读

1) 什么是GWT?

Google Web Toolkit (GWT) 是一个用于使用 Java 构建 AJAX 应用程序的开发工具包。GWT 强调对常见 Web 应用任务的可重用方法,例如书签、UI 抽象、跨浏览器兼容性等。

GWT 提供两种模式

  1. 开发模式:它允许通过标准的 Java 调试器直接调试应用程序的 Java 代码。
  2. Web 模式:在此模式下,应用程序被翻译成 HTML 和 JavaScript 代码。它可以部署到 Web 服务器。

2) GWT 的组成部分有哪些?

  • GWT Java-to-JavaScript 编译器:它将所有编写的 Java 代码转换为 JavaScript。
  • GWT 开发模式:它允许开发人员在开发模式下运行应用程序,即应用程序在 Java 中运行而不编译 JavaScript。开发模式允许名为 Google Web Toolkit Developer Plug-in 的原生模式插件。
  • JRE 模拟库:GWT 包含一个遵循 Java 运行时库的库,即 java.lang、java.lang.annotation、java.math、java.io、java.sql、java.util 等。
  • GWT Web UI 类库:GWT 包含一组用于创建控件的接口和类。

3) 什么是 GWT 模块描述符?

模块描述符是用于设置 GWT 应用程序的配置文件。其文件扩展名为 *.gwt.xml,其中 * 是应用程序的名称,该文件应位于项目的根目录。


4) 什么是 GWT 模块?

GWT 模块就是功能的封装。它与 Java 包有一些相似之处,但并不完全相同。


5) 如何启用断言?

GWT 编译器识别 -ea 标志以在编译的 JavaScript 中生成断言代码。仅将断言用于调试目的,而不是生产逻辑,因为断言仅在 GWT 的开发模式下有效。


6) 任何 GWT 控件的默认样式名称是什么?

默认情况下,每个组件的类名是 **gwt-**。例如,Button 控件的默认样式是 gwt-Button,TextBox 控件的默认样式是 gwt-TextBox。


7) 什么是国际化?

国际化是根据区域设置更改文本的语言。例如,对于坐在印度的用户,浏览器应显示印地语的网站内容,而对于从法国访问网站的用户,应显示法语内容。


8) Host Page 的作用是什么?

最重要的公共资源是 Host Page,用于调用实际的 GWT 应用程序。应用程序的典型 HTML Host Page 可能根本不包含任何可见的 HTML body 内容,但总是期望通过 <script.../> 标签包含 GWT 应用程序。


9) 什么是 RPC?

RPC(远程过程调用)有助于客户端与服务器通信。RPC 是**调用**类中方法的**一个过程**,**在此过程中**,唯一的区别是该类位于服务器上,而不是客户端程序的一部分。


10) 什么是 GWT ClientBundle?

ClientBundle 接口将条目从“其他所有”类别移动到“永久缓存”类别。


11) GWT 中有哪些类型的 Panel?

  • Root Panel:它是所有其他控件附加到的最顶层的 Panel。
  • Flow Panel:它是最简单的 Panel,提供基本的 HTML 布局。
  • HTML Panel:它包含指定的 HTML 内容。
  • Form Panel:它指定在此声明的任何控件都将包装在 HTML form 元素中。
  • Scroll Panel:它将所有内容放入可滚动区域。
  • Grid:它有助于创建 HTML 表格。
  • Flex Table:它像 GRID 一样扩展 HTML 表格,但在这里我们可以按需创建表格。

12) 什么是布局 Panel?

Layout Panels 可以包含其他控件。这些 Panel 控制控件在用户界面上的显示方式。每个 Panel 控件都继承 Panel 类的属性,Panel 类又继承 Widget 类的属性,Widget 类再继承 UIObject 类的属性。


13) 定义 GWT JSON?

JSON(JavaScript Object Notation)是一种与语言无关的数据格式。它与 XML 类似,XML 使用标签,JSON 使用 JavaScript 的对象字面量表示法。


14) 定义 GWT XML 中的解析?

要解析 XML,我们必须首先将原始 XML 文本解析为 XML DOM 结构。DOM 结构有助于导航数据。XML 解析器位于 **XMLParser 类**下。XMLParser 类包含 parse(String) 静态方法,该方法用于解析 XML 并返回 Document 对象。


15) 列出 XML 解析创建的节点。

  • Element - 代表 DOM 元素,它们在 **XML 中由标签指定: <someElement></someElement>。
  • Text - 代表**元素**的开始和结束标签之间的文本:<someElement>这里有一些文本。</someElement>。
  • Comment - 代表 XML 注释:<!-- 此数据注释 -->。
  • Attr - 代表元素的属性:<someElement myAttribute="123" />。

16) 列出 GWT 数据库所需的依赖项

通用:hsqldb, Common-lang , log4j 。

JDO:datanucleus, showfiles, jdo。

Hibernate:hibernate。

MyBatis:mybatis。


17) 定义 GWT History Mechanism(历史机制)。

历史机制类似于 AJAX 历史实现,例如 RSH(非常简单的历史)。基本思想是在 URL 片段标识符中跟踪内部应用程序状态。该机制的主要优点是

  • 它提供了可靠的浏览器历史记录。
  • 它为用户提供了有用的反馈。
  • 它是可书签的,即用户可以创建当前状态的书签并保存它,或者可以将其通过电子邮件发送等。

18) 定义 GWT History Tokens(历史令牌)。

令牌只是一个字符串,应用程序可以解析该字符串以返回到特定状态。该令牌将作为 URL 片段(在地址栏中,在“#”之后)保存在浏览器历史记录中,当用户在历史记录中前进或后退或单击链接时,该片段会传回给应用程序。


19) 如何创建自定义控件?

Google Web Toolkit 提供了多种创建自定义控件的方法。最简单的方法是通过组合现有的基本控件并添加一些交互逻辑来开发复合控件。

创建自定义控件有三个普遍概念,如下所示

  1. 构建复合控件。
  2. 为新控件创建 Java 代码。
  3. 使用 JSNI 方法包装 JavaScript。

20) 什么是 JSNI?

JSNI(JavaScript Native Interface)用于解决诸如需要将 GWT 与现有手动编写的 JavaScript 或第三方 JavaScript 库集成等问题。有时我们需要访问 GWT 类 API 未暴露的低级浏览器功能。


21) JSNI 的不同用途是什么?

JSNI 是内联汇编代码的 Web 等价物,可用于多种方式,例如

  • 直接在 JavaScript 中实现 Java 方法。
  • 围绕现有的 JavaScript 包装类型安全的 Java 方法签名。
  • 从 JavaScript 代码调用 Java 代码,反之亦然。
  • 跨 Java/JavaScript 边界抛出异常。
  • 从 JavaScript 读取和写入 Java 字段。
  • 使用开发模式调试 Java 源代码(使用 Java 调试器)和 JavaScript(使用脚本调试器)。