我有偏见(作为 Python 专家,但在 Java 方面相当生疏),但我认为 GAE 的 Python 运行时目前比 Java 运行时更先进,开发得更好——毕竟前者还有一年的时间来开发和成熟.
事情将如何发展当然很难预测——Java 方面的需求可能会更强(尤其是因为它不仅与 Java 有关,而且其他语言也位于 JVM 之上,因此它是运行例如 PHP 的方式或 App Engine 上的 Ruby 代码);然而,Python App Engine 团队确实具有加入 Python 的发明者和非常强大的工程师 Guido van Rossum 的优势。
在灵活性方面,如前所述,Java 引擎确实提供了运行由不同语言生成的 JVM 字节码的可能性,而不仅仅是 Java ——如果您在一家多语言商店,这是一个很大的积极因素。反之亦然,如果您讨厌 Javascript 但必须在用户的浏览器中执行一些代码,那么 Java 的 GWT(从您的 Java 级编码为您生成 Javascript)比 Python 端的替代方案(实际上,如果您选择Python,您将为此目的自己编写一些 JS,而如果您选择 Java,如果您讨厌编写 JS,GWT 是一个可用的替代方案)。
就库而言,这几乎是一种清洗——JVM 受到足够的限制(没有线程、没有自定义类加载器、没有 JNI、没有关系数据库),与现有的 Python 相比,它阻碍了现有 Java 库的简单重用。库同样受到 Python 运行时的类似限制的阻碍。
在性能方面,我认为这是一种洗牌,尽管您应该对自己的任务进行基准测试——不要依赖高度优化的基于 JIT 的 JVM 实现的性能,因为应用程序引擎会忽略它们的大量启动时间和内存占用。环境非常不同(启动成本将经常支付,因为您的应用程序的实例被启动、停止、移动到不同的主机等,所有这些对您来说都是透明的——这些事件在 Python 运行时环境中通常比使用 JVM 便宜得多)。
XPath/XSLT 情况(委婉点......)在任何一方都不是完美的,叹息,虽然我认为它在 JVM 中可能没有那么糟糕(显然,可以让 Saxon 的大量子集运行, 小心点)。我认为值得在标题中包含 XPath 和 XSLT 的Appengine 问题页面上打开问题——现在只有要求特定库的问题,这是短视的:我并不关心如何实现一个好的 XPath/XSLT,对于 Python 和/或 Java,只要我能够使用它。(特定的库可能会简化现有代码的迁移,但这比能够以某种方式执行诸如“快速应用 XSLT 转换”之类的任务更重要!-)。我知道如果措辞得当(尤其是在与语言无关的方式),我会为这样的问题加注星标。
最后但同样重要的是:请记住,您可以拥有不同版本的应用程序(使用相同的数据存储),其中一些使用 Python 运行时实现,一些使用 Java 运行时实现,并且您可以访问不同于“默认/活动”的版本" 一个带有明确的 URL。因此,您可以让 Python和Java 代码(在您的应用程序的不同版本中)使用和修改相同的数据存储,从而为您提供更大的灵活性(尽管只有一个具有“不错”的 URL,例如 foobar.appspot.com——我想,这可能仅对浏览器上的交互式用户访问很重要;-)。