Google App Engine背后的逻辑(如果有),不包括标准的JDK 1.6 API

时间:2009-04-14 18:26:03

标签: java google-app-engine jdk1.6 stax

看起来GAE选择了JDK 1.6类的子集,按照:

Google App Engine JDK white list

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

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

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

更新

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

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

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

discussion on whitelisting Stax API

所以这里希望能够迅速解决这个问题和类似问题。

3 个答案:

答案 0 :(得分:7)

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

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

如果安全问题得到解决(并且根据需求),当更多课程进入白名单时,我一点都不会感到惊讶。

但我甚至不希望获得线程工具,例如。

答案 1 :(得分:2)

这些事情被任意删除是非常值得怀疑的。 GAE在一个极其安全敏感的环境中运行,并且对类库的内部审计发现Google不愿意承担一些风险的可能性很大。

答案 2 :(得分:0)

对于您的高性能流式XML解析器,您可以尝试查找适当的库(jar文件)。除非它依赖于线程或文件访问(或黑名单API),否则它应该与JDK中的那个一样好。

有很多(相当复杂的)libraries that work on GAE