Google App Engine上的Jython开发

时间:2009-05-02 13:12:38

标签: google-app-engine jython

有没有人有使用Jython和Google App Engine的直接经验(好的或坏的)?

2 个答案:

答案 0 :(得分:4)

问一个显而易见的问题:你为什么要这样做? (C)Google App Engine本身支持Python,到目前为止相当成熟且得到很好的支持。

回答原来的问题:我没有个人经验,但我可以概括一下它会是什么样的:

目前最简单的方法是使用Jython支持调用Java以使用App Engine Java SDK。这意味着虽然你将编写Python,但它看起来很像Java,你将不得不使用Java文档,而不是Python文档。

然而,理论上可以在App Engine上的Jython中使用Python SDK。 SDK是纯Python,SDK和运行时之间的所有交互都是通过RPC通过google.appengine.api.apiproxy_stub_map模块完成的。 Java在com.google.apphosting.api.ApiProxy类中有一个等效的接口 - 有关如何配置它的一些详细信息,请参阅Unit Testing in GAE上的文章。

鉴于这一切,以下是如何在Jython中使用Python API:

  1. 编写一个Python apiproxy_stub,它只需要调用所有API,然后将它们发送到com.google.apphosting.api.ApiProxy类。
  2. 将Python SDK的相关部分与您的Jython应用程序捆绑在一起(不幸的是,大部分都是这样)。
  3. 在初始化代码中,安装您编写的apiproxy_stub子类作为所有相关服务的处理程序 - datastore_v3,memcache,user,urlfetch和images。
  4. 如果您最终这样做,请记录并发布代码 - 我知道至少有一个其他用户会感兴趣。 :)

答案 1 :(得分:2)

首先,有人在速度方面声称Jython, Querces, and JRuby can Beat their Native Counterparts,利用JVM的力量。

然而,关于Jython的速度存在一些相互矛盾的信息。 Stack Overflow用户声称Jython is the slowest of many of the languages involved in a speed test he conducted

这两个性能问题都不是真正涉及App Engine,而是JVM。

this article posted by a Jython committer中,Alan Kennedy声称App Engine上的Jython将Python的快速开发特性与JVM中可用的丰富库相结合。 Jython是Python,但它可以直接访问Java类。

我对Querces PHP有一些经验。我将JQuery Form Builder插件移植到Google App Engine。它是PHP代码,但PHP能够直接访问用Java编写的DAO对象。同样,Jython也可以这样做。

Alan Kennedy也遇到了一个Challenge issued by Nick Johnson,他演示了可以在App Engine上使用Jython完成的事情,否则很难在纯Python,XSLT转换中完成。他回答了尼克答案中的罢工问题:你为什么要这样做?