【问题标题】:Why does GWT use code generators rather than annotation processors?为什么 GWT 使用代码生成器而不是注释处理器?
【发布时间】:2015-03-13 11:45:48
【问题描述】:

GWT 使用带有 GWT.create() 命令的代码生成器来生成实现。这提供了一种在 GWT 中做事的声明性方式,但我不明白为什么不像大多数 java.this article 那样使用注释处理器完成它是最初让我想到它的原因。看起来它会简化构建,让您看到编译时错误,并且与常规 java.util.java 更兼容。这是一个附带问题,但我是唯一一个认为 GWT 应该支持反射的人。我听说这会使代码变慢但仍然如此。在某些情况下不值得吗?

【问题讨论】:

    标签: java gwt code-generation annotation-processing


    【解决方案1】:

    GWT 是在 Java 语言/平台 (Java 1.4) 中甚至存在注释之前创建的,这就是原因。

    不过,新的开发往往倾向于注解处理,它最终将作为 SuperDevMode 重新编译的一部分得到支持(您当前必须运行注解处理器并让 SDM 选择 –modified– 生成的源);一个例子是Dagger 2。
    然而,我认为这种方法并不适用于当前在 GWT 中使用生成器的所有情况。

    至于GWT.create(),对于替换为 延迟绑定的情况,它仍然是需要/有用的。


    至于反射,它不是关于“缓慢”,而是关于需要嵌入到生成的 JS 代码中以支持运行时反射的元数据。鉴于所有内容在编译时都是已知的,因此几乎不需要在运行时进行反射;您通常可以使用编译时生成的代码来替代运行时反射。所以不,这不值得。

    【讨论】:

    • 自 2004 年 Java 1.5 开始支持注解,第一个 GWT RC 于 2006 年发布。我在项目实际启动时找不到任何信息。但即使当时存在注释,我怀疑它们无论如何都会被使用。缺乏工具支持,新技术可能无法成功采用和广泛使用。
    • 啊,是的,尽管 GWT 直到 2008 年发布的 1.5 版本才支持 Java 5 源代码。
    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多