49

这似乎是一个非常基本的问题,但我搜索了高低,发现几乎没有任何地方提到它。所以,我会在这里问它。

在 GWT 中支持 Java 8 的新语言结构的当前计划是什么?

此外,提议的 Java 8 库的哪个子集计划用于客户端仿真?流 API?新的日期/时间 API?

最后,关于这个重要话题的讨论在哪里进行?我敢肯定,我们当中有很多人愿意参与并可能为这项工作做出贡献。

Java 8 beta 已经存在了一段时间,并且有很多文章讨论了提议的 API。它应该会在今年晚些时候推出,因此至少应该讨论一下非常需要的语言功能如何以及何时进入 GWT 似乎已经过去了。

如果这个问题在其他地方得到回答,或者我错过了一些与之相关的重要信息,我深表歉意。这将是一个链接到此类信息的好地方,即使它已被回答。谢谢!

4

2 回答 2

50

EDIT GWT 2.8.0 于 2016 年 10 月 20 日发布,支持 Java 8 语言构造(lambdas、方法引用)和一些 Java 8 API 的仿真(主要是流)

编辑截至 2014 年 4 月,GWT 2.6 支持 Java 7,并且正在努力在 GWT 2.7 中支持 Java 8,将于 2014 年夏季发布。GWT 2.7 可能只支持 Java 8 语言结构,而不模拟任何新的语言结构API(流、javax.time 等)


计划首先支持 Java 7:https ://github.com/gwtproject/gwt/labels/java7

这涉及更新 JDT,并且正在处理中(或者,完全切换到其他东西;JetBrains 建议使用他们已经支持 Java 8 的解析器,但 GWT 还需要一个编译器,我不知道它们究竟提供了什么)。接下来的步骤是将新的语言结构映射到 JavaScript(想到转换中的字符串,因为它们可以直接映射到 JavaScript,而无需hashCodeJava 编译器会做的基于 - 的脱糖)。

只要 GWT 使用 JDT 进行 Java 解析/编译/编译,Java 8 就只能在 JDT 支持它的情况下得到支持(在可接受的水平上,AFAICT 还不是这种情况)。

于 2013-03-28T22:49:26.057 回答
20

是时候更新答案了。

更新(2020 年 5 月 13 日)

GWT 2.9.0 终于来了发行说明

  • 能够使用 jsinterop-base 1.0.0、elemental2 1.0.0 和 jsinterop-annotations 2.0.0 编译项目。除了@JsAsync 和@JsEnum 之外,这使GWT2 在这些工具中与J2CL 兼容。
  • 添加了对 Java 语言级别 9、10 和 11 的支持。
  • 正式地,不再支持在 Java 7 上运行 GWT 编译器或服务器端工具。GWT 发行版仍然编译为在此版本的 Java 7 上运行,但不保证这是否会起作用。未来的版本将为 Java 8+ 编译字节码。该版本经过测试,发现在使用 Java 8、11 和 14 运行时可以跨平台工作。

更新(2017 年 10 月)

GWT 2.8.2 可在此处获得发行说明

更新(2017 年 6 月)

官方GWT 2.8.1 下载位置。

2.8.1 发行说明

更新(2016 年 10 月)

GWT 2.8.0 终于来了!

GWT 团队在Github上发布了 2.8.0 标签。GWT 官方网站尚未更新,但 GWT 网站上更改的拉取请求已准备好并正在审核过程中所以很快编译后的版本就可以下载了!

可供下载

更新(2016 年 9 月)

同时,GWT 团队在 GitHub 镜像上标记了GWT 2.8.0 RC3 。

GWT 团队 (Daniel Kurka) 在此处发布了 GWT 2.8.0 (RC2) 版本。

发行说明适用于 2.8.0 (RC2):

Bug修复

  • 修复不正确的 unusable-by-js 警告。
  • 修复了有关 DevMode 服务器(码头)重启的问题。
  • 修复了超级开发模式下更改编译器选项不会触发完全重新编译的问题。
  • 向 DevMode 入口点添加了缺少的命令行参数
  • 修复了字符串中的性能回归。

RC1 的发行说明可在官方网站上找到。以下是即将推出的 GWT 2.8.0 中有关 Java 8 支持的最重要更改:

强调

  • 部分支持 Java 8 标准库 API(完整列表见下文)。
  • 使用 Java 8 编译修复内存泄漏。
  • 源级别设置为 Java 8。
  • 接口中的静态和默认方法对生成器不可见。如果您想利用这些 Java-8isms,我们鼓励您切换到注解处理器。如果更改接口以将非默认方法转换为默认方法,这可能会破坏现有构建。

JDK 8 仿真支持

  • 模拟 java.io.UncheckedIOException。
  • 模拟 Optional 及其 int、long、double 变体。
  • 使用消息供应商模拟 Objects.requireNonNull()。
  • 修复 Math.min/max(float/double) 仿真行为。
  • 模拟 Character.isBmpCodePoint()。
  • 模拟 CharSequence.chars()。
  • 模拟 java.lang.SecurityException。
  • 模拟 Java 8 API
    • java.util.Arrays,
    • java.util.ArrayDeque,
    • java.math.BigInteger,
    • java.util.BitSet,
    • java.util.Comparator,
    • java.util.function,
    • java.util.Iterator,
    • java.lang.Iterable,
    • java.util.IntSummaryStatistics/LongSummaryStatistics/DoubleSummaryStatistics
    • java.util.Collection/Lists/Queues,
    • java.util.Map,
    • java.util.logging.Logger,
    • java.util.PrimitiveIterator,
    • java.util.Spliterator,
    • java.util.stream,
    • java.util.StringJoiner

GWT 2.8.0 RC2 仍然存在一些问题,预计 GWT 团队将很快解决这些问题。最终版本应该很快就会发布(“一旦准备好”)。

于 2016-09-10T19:48:01.263 回答