3

看起来 GAE 选择了 JDK 1.6 类的一个子集,如下所示:

Google App Engine JDK 白名单

这是非常不幸的,因为处理数据绑定、反射、类加载和注释的最常见的 Java 库到处都有类链接错误。尽管有些遗漏可能是针对已弃用或遗留的东西,但也有其他遗漏。我特别关心的是流式拉解析器 (javax.xml.stream.*),它在长时间延迟后才添加到 JDK 1.6(API 与 JDK 1.4 大约同时完成)。忽略这一点会使进行可扩展的高性能 xml 处理变得更加困难。

据我了解,问题不仅是缺少类,而且由于安全限制,它们甚至无法添加。

所以:这是一个开放式的哲学问题,可能只有 GAE 开发人员可以肯定地回答,但是......为什么有些 API 从标准 JDK 1.6 中删除,似乎是武断的?

更新

快速说明:感谢您的回答。对于它的价值,我真的看不出安全性与不包括 javax.xml.stream 有什么关系。安全方面与许多其他事情相关(例如,我不需要线程,并且可以看到它们为什么会出现),所以这是可以理解的样板答案;只是不适用于这个。

Stax API 只是一组用于大声喊叫的接口和抽象。但更重要的是,它具有与包括 SAX、DOM 和 JAXP 接口完全相同的分支——这些接口已经包含在内!

但看起来这个问题已经引起了谷歌开发者的注意:

关于将 Stax API 列入白名单的讨论

所以这里希望这个和类似的问题可以迅速得到解决。

4

3 回答 3

7

GAE 在托管环境中运行,其中包含不受信任的(并且可能是恶意的)客户端,这些客户端通常可以免费访问。

在这种类型的环境中,安全性是一个非常重要的问题,具有文件系统访问权限的 API 会受到非常严格的审查。我认为这就是为什么他们选择在他们允许的范围内相当保守地开始。

不过,如果随着安全问题得到解决(并根据需求),如果更多的课程进入白名单,我一点也不感到惊讶。

但我什至不希望获得可用的线程工具,例如。

于 2009-04-14T18:37:40.443 回答
2

这些东西是随意丢弃的,非常值得怀疑。GAE 运行在对安全极为敏感的环境中,对类库的内部审计很可能会发现 Google 不愿意承担的一些风险。

于 2009-04-14T18:37:19.180 回答
0

至于您的高性能流式 XML 解析器,您可以尝试找到合适的库(jar 文件)。除非它依赖于线程或文件访问(或列入黑名单的 API),否则它应该与 JDK 中的一样工作。

有很多(相当复杂的)库可以在 GAE 上运行

于 2009-04-15T05:19:46.110 回答