2013-03-28 104 views
45

这似乎是一个非常基本的问题,但我搜索高低,几乎没有发现任何地方。所以,我会在这里问一下。GWT中的Java 8支持

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

此外,拟议的Java 8库的哪个子集将用于客户端仿真? Stream API?新的日期/时间API?

最后,关于这个重要议题的讨论在哪里进行?我确信有很多人愿意参与这项工作并为此做出贡献。

Java 8测试版已经出现一段时间了,并且有许多文章讨论了所提议的API。它应该在今年晚些时候有关,所以过去似乎至少在讨论如何以及何时将期望的语言特征引入GWT。

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

回答

10

更新答案的时间。

更新(2017年10月)

GWT 2.8.2 available hereRelease notes

UPDATE(六月2017)

官方GWT 2.8.1download位置。

Release Notes for 2.8.1

UPDATE(十月2016)

GWT 2.8.0终于来了!

GWT的团队已经发布了Github的2.8.0标签。官方的GWT网站尚未更新,但GWT网站上的更改请求是ready and in review process所以非常快,编译后的版本将可供下载!

Available for download

更新(2016年9月)

同时,团队GWT已经在GitHub上镜标记GWT 2.8.0 RC3

的GWT团队(丹尼尔Kurka)发布了GWT 2.8.0(RC2)here版本。

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

Bug修复

  • 修正不正确无法使用逐JS警告。
  • 修复周围DevMode的服务器(码头)重启的问题。
  • 解决不断变化的不触发全面重新编译编译器选项超级开发模式的问题。
  • 添加缺少的命令行参数DEVMODE切入点
  • 固定在一个字符串性能回归。

RC1的发行说明可在official website上找到。下面是关于即将到来的GWT 2.8.0的Java 8支持的最重要的变化:

亮点的Java 8标准库API

  • 部分支持(参见下面的完整列表)。
  • 修复Java 8编译中的内存泄漏问题。设置为Java 8.在接口
  • 静态路由和默认方法
  • 源代码级别是不可见的发电机。如果您想要利用这些Java-8isms,建议您切换到注释处理器。如果更改接口以将非默认方法变为默认方法,这可能会破坏现有的构建。

JDK 8仿真支持

  • 效仿java.io.UncheckedIOException。
  • 仿真可选和它的int,long,double变体。
  • 仿真Objects.requireNonNull()与消息供应商。
  • 修复Math.min/max(float/double)仿真行为。
  • 仿真Character.isBmpCodePoint()。
  • Emulate CharSequence.chars()。
  • Emulate java.lang.SecurityException。
  • 效仿的Java API 8的
    • 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中/列表/队列,
    • 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团队很快就会解决问题。最终版本应该即将推出(“一旦准备就绪”)。

46

编辑 GWT 2.8.0发布于2016年10月20日与8的Java语言结构(lambda表达式,方法引用)和仿真一些Java 8的API支持(主要是流)

编辑为2014年4月,GWT 2.6支持Java 7,目前正在开发支持GWT 2.7中的Java 8的工作,并将于2014年夏季发布.GTT 2.7很可能仅支持Java 8语言构造,并且不会模拟任何新API(流,javax.time等)


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

这涉及到更新JDT,这是worked on(或者,也可以完全切换到其他的东西; JetBrains proposed使用他们已经支持Java 8的解析器,但GWT也需要一个编译器,我不知道他们准确提供了什么)。接下来的步骤是将新的语言结构映射到JavaScript(字符串在开关中,因为他们可以直接映射到JavaScript,而不需要基于Java编译器进行的基于hashCode的解析)。

只要GWT使用JDT进行Java解析/自动/编译,Java 8只能在JDT支持时支持(在可接受的级别上,这还不是AFAICT的情况)。

+0

有趣! GWT 2.7会使用JetBrains解析器还是更新版本的JDT? –

+1

JDT。如果您想开始使用它,可以预览下载:https://github.com/WeTheInternet/gwt-sandbox/tree/java8 –

+0

现在的支持情况如何?我发现如果使用lambda表达式来实现事件处理程序的功能接口并且编译widgetset,那么widget不能正确创建(至少使用GWT和Vaadin 7.3.10一起使用) – tonix