GWT与JDK 7新特性的兼容性

21
例如,JDK 7 能够使用 switch(String) 而不仅仅是 switch(Number/Enum)。
如果我编写了一个 GWT 客户端,并且在其代码中使用了 switch(String),是否会有任何问题?
switch(String) 是我能想到的问题之一。除了 switch(String) 以外,是否存在兼容性问题?

2
@OliverWeiler:即使你可以自己找到答案,询问也没有错。这个问题/答案为我节省了很多时间。 - Janus Troelsen
你可以随时使用JDK7进行编译,但不使用其功能也是一种选择。 - Engineer2021
4个回答

11

GWT只正式支持Java 5,但它确实支持一些Java 6的语法特性,例如在实现接口方法时允许@Overrides,以及String.isEmpty(尽管这个与语法和编译器无关,而是关于运行时仿真)。

顺便提一下,GWT使用Eclipse JDT进行解析,而该解析器还没有针对Java 7进行支持(不过应该很快就会有了really soon)。一旦支持Java 7,GWT必须更新以考虑Java 7添加的新的“语法糖”。当这个时间到来时(恐怕不会很快到来),我相信switch-on-strings将成为其中最先支持的功能之一,因为JavaScript也支持它(因此从Java到JS的转换应该像在整数上的switch一样容易)。

另见https://groups.google.com/d/topic/google-web-toolkit/dM8D9imIvAI/discussion


1
我相信Java 6得到了官方支持。 - anjanb
Java 7的一些功能可能会在未来得到支持。请参见 https://gwt-review.googlesource.com/#/c/2650/ 和 https://gwt-review.googlesource.com/#/c/2681/)。 - Gewthen

11

由于上一个回答是在2011年8月,这里提供GWT 2.5的最新信息: 仍不支持Java 7,请参见GWT 2.5 RC2版本发布说明(从RC2到2.5正式版没有变化)。


看起来是这样。我想尝试使用java.util.Objects而不是Guava的,但是GWT却无法处理它,尽管该类在官方白名单中。除非我在配置中漏掉了什么... - PhiLho
2
这里有一个更新:开发已经在进行中,详见问题#7999。几天前,所有Java 7功能都已提交并通过了审核。运行时仿真仍需要一些工作。请参阅:http://code.google.com/p/google-web-toolkit/issues/detail?id=7999 - snorbi
1
另一个更新,根据@snorbi提供的链接:https://code.google.com/p/google-web-toolkit/issues/detail?id=8044#c10,从9月11日开始,似乎将Java 7支持标记为“FixedNotReleased”用于“Milestone-2_6”。 - jfrantzius

2
从GWT 2.6开始,支持Java 7并且成为默认版本。(可以使用-sourceLevel 6来覆盖此设置)。更多详情请见2.6 release notes

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接