1

从下面的链接中,我了解到 GWT 仅支持客户端以下包中的类或方法的子集。

java.lang
java.lang.annotation
java.util
java.io
java.sql

https://developers.google.com/web-toolkit/doc/1.6/RefJreEmulation#Package_java_lang

为什么会这样?我认为这在开发中会带来更多问题,因为我只使用 GWT 客户端并使用 REST Web 服务而不是服务器。

是否有任何新版本的 jar,如gwtx(支持持久性、注释等的新版本)用于使用上述包中的所有类和方法。我的主要疑问是为什么他们不支持所有人?

4

1 回答 1

9

为了支持将 Java 转换为 JavaScript,必须模拟每个标准类,即以 GWT 编译器知道如何将其转换为 JavaScript 的方式重新创建。例如基于 JavaScript ,方法必须在 JavaScript 之上模拟,等等。ArrayListArrayStringString

而且有些东西是根本无法模拟的(文件、套接字)。其他一些东西不是有意模拟的,因为模拟版本虽然在技术上是可行的,但性能要比浏览器 API 的更直接映射低得多,而且 GWT 力求性能(第三方库,例如 GWTx,如果需要,可以提供这样的模拟)而不是兼容性(选择 Java 作为语言主要是为了利用工具,而不是提供兼容层来允许重用现有库)。

最后,不支持反射,因为它会使编译器无法修剪死代码并进行所有优化:它如何知道反射而不是直接调用实际上没有使用特定的类、字段或方法?

于 2013-02-05T12:29:56.257 回答