目前谷歌应用程序的动机支持Python&Java。Java支持是不成熟。然而,Java似乎有一个较长清单的图书馆和特别是支持Java字节不论使用的语言编写代码。其中的语言将得到更好的性能和权力?请提供意见。谢谢你!

编辑: http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1

编辑: 通过"权力",我的意思是更好的可扩展性和包容性的可用的图书馆以外的框架。蟒蛇只允许纯粹的蟒蛇图书馆,虽然。

有帮助吗?

解决方案

我有偏见(作为一名 Python 专家,但对 Java 相当生疏),但我认为 GAE 的 Python 运行时目前比 Java 运行时更先进、开发得更好——毕竟,前者多了一年的时间来开发和成熟。

当然,事情将如何发展很难预测——Java 方面的需求可能更强烈(特别是因为它不仅涉及 Java,还涉及基于 JVM 的其他语言,因此它是运行例如 Java 等语言的方式)。App Engine 上的 PHP 或 Ruby 代码);然而,Python App Engine 团队确实有一个优势,那就是拥有 Python 的发明者 Guido van Rossum 和一位非常强大的工程师。

在灵活性方面,正如已经提到的,Java 引擎确实提供了运行由不同语言(而不仅仅是 Java)编写的 JVM 字节码的可能性——如果您在一家多语言商店中,这是一个相当大的积极因素。反之亦然,如果您讨厌 Javascript,但必须在用户浏览器中执行一些代码,Java 的 GWT(从 Java 级编码为您生成 Javascript)比 Python 端替代方案更丰富、更先进(实际上,如果您选择Python,您将为此目的自己编写一些 JS,而如果您选择 Java GWT,那么如果您讨厌编写 JS,那么 GWT 是一个可用的替代方案)。

就库而言,这几乎是一种洗礼——JVM 受到足够的限制(没有线程、没有自定义类加载器、没有 JNI、没有关系数据库),与现有的 Python 相比,它阻碍了现有 Java 库的简单重用,甚至更多。库同样受到 Python 运行时的类似限制的阻碍。

就性能而言,我认为这是一种洗礼,尽管您应该对自己的任务进行基准测试 - 不要依赖高度优化的基于 JIT 的 JVM 实现的性能,而不考虑它们的大量启动时间和内存占用,因为应用程序引擎环境非常不同(启动成本通常会被支付,因为应用程序的实例被启动、停止、移动到不同的主机等,所有这些对您来说都是透明的 - Python 运行时环境通常比 JVM 便宜得多)。

XPath/XSLT 情况(委婉地说...)双方都不是完全完美,叹息,尽管我认为在 JVM 中可能没那么糟糕(显然,Saxon 的大量子集可以在 JVM 中运行) ,需要小心)。我认为值得在以下问题上提出问题 应用引擎问题 标题中包含 XPath 和 XSLT 的页面 —— 现在只有要求特定库的问题,这是短视的:我并不真正关心如何为 Python 和/或 Java 实现一个好的 XPath/XSLT,只要我能够使用它即可。(特定的库可能会简化现有代码的迁移,但这并不比能够以某种方式执行“快速应用 XSLT 转换”等任务重要!-)。我知道如果措辞得当(尤其是以与语言无关的方式),我会为这样的问题加注星标。

最后但并非最不重要的:请记住,您可以拥有不同版本的应用程序(使用相同的数据存储),其中一些是使用 Python 运行时实现的,一些是使用 Java 运行时实现的,并且您可以使用显式 URL 访问与“默认/活动”版本不同的版本。所以你可以同时拥有Python Java 代码(在应用程序的不同版本中)使用和修改相同的数据存储,从而为您提供更大的灵活性(尽管只有一个代码具有“好的”URL,例如 foobar.appspot.com ——这可能只对访问很重要我想是由浏览器上的交互式用户实现的;-)。

其他提示

关注此应用程式在Python和Java性能的变化:

http://gaejava.appspot.com/ (编辑:道歉,链接现在分成但是,当我看到它运行的最后段之后仍然适用。)

目前,Python和在Java中使用低级别的API比JDO上Java快,作为这个简单的测试即可。至少如果底层引擎的变化,该应用应该反映的性能变化。

根据与运行在其他平台上这些虚拟机的经验,我会说,你可能会得到更多的原材料表现出来的Java的Python比。不要低估Python的卖点,但是:Python语言中的代码行方面更富有成效 - 一般约定了Python需要一个相应的Java程序代码的三分之一,而其余的或更具有可读性。这样做的好处是通过向没有明确的编译步骤立即运行代码的能力成倍增加。

至于可用库,你会发现许多丰富的Python运行时库工程开箱即用(一样Java的)。流行Django的Web框架( http://www.djangoproject.com/ )也支持AppEngine上。

至于“权力”,这是很难知道你的意思,但是Python在许多不同的领域,尤其是在网络中使用:YouTube正在用Python写的,因为是在Sourceforge(截至上周)

2013年六月: 这个视频是谷歌工程师的一个非常好的回答:

http://www.youtube.com/watch?v=tLriM2krw2E

太长了;是:

  • 选择您和您的团队最有生产力的语言
  • 如果你想构建一些用于生产的东西:Java 或 Python(不是 Go)
  • 如果您有一个庞大的团队和复杂的代码库:Java(因为静态代码分析和重构)
  • 快速迭代的小团队:Python(虽然Java也可以)

一个重要的问题要考虑,在决定之间的Python和Java 你将如何使用的数据存储在每一种语言 (与其他大多数的角度到原来的问题已经相当复盖以及在这个主题).

Java, 标准方法是使用被创建或访问用户.这些都是伟大的可携带性,但不是非常适合的数据存储库。

一个低级别的API是有的,但这是太低级为每天使用它更适合于建立3缔约方图书馆。

为蟒蛇 有一个API专门设计用于提供应用程序很容易,但是强大的访问的数据存储库。这是伟大的,但它不是便携式的,所以它锁定你再.

幸运的是,也有解决方案正在开发的弱点列出这两种语言。

Java, 低级API正在被用来发展的持久性图书馆,是从更适合的数据存储库,然后被创建/访问用户(国际海事组织).例子包括 锡耶纳项目, , 物化.

我最近开始使用物化和我找到它可以非常容易使用和很适合的数据存储,及其越来越受欢迎已经翻译成了很好的支持。例如,物化是正式支持通过Google的新的云端点的服务。另一方面,物化只适用于数据存储库,同时锡耶纳'启发的数据库,但是设计工作,与各种各样的两个,SQL数据库和非sql数据存储。

为蟒蛇, 有正在作出努力,以允许使用Python再数据存储库API的再.一个例子是源码后端,谷歌公布用于与SDK,但我怀疑他们打算这一增长成一些生产做好准备。的 TyphoonAE 项目可能有更多潜在的,但我不认为它是生产准备好了没有任(正确的我,如果我错了).

如果任何人有体验任何这些替代品或知道其他人,请他们在发表评论。就个人而言,我真的很喜欢再数据存储-我觉得这是一个相当大的改进过AWS SimpleDB-所以我希望这些努力的成功,以减轻的一些问题中利用它。

我强烈推荐在 GAE 中使用 Java,原因如下:

  1. 表现:Java 可能比 Python 更快。
  2. Python开发面临着缺乏第三方库的压力。例如,Python/GAE 根本没有 XSLT。几乎所有 Python 库都是 C 绑定(GAE 不支持这些库)。
  3. 内存缓存 API:Java SDK比Python SDK有更多有趣的能力。
  4. 数据存储API:JDO 非常慢,但本机 Java 数据存储 API 非常快速且简单。

我现在正在使用 Java/GAE 进行开发。

当你已经确定,使用的JVM不限制你使用Java语言。 JVM语言和链接的列表,可以发现这里然而的,谷歌应用程序引擎不限制集合,你可以从普通的Java SE集使用类,你会要调查,如果这些实现可以在应用程序引擎使用。

编辑:我看你已经找到了这样一份名单

我不能关于Python的性能评价。然而,JVM是一个非常强大的平台性能的角度来看,考虑到其动态地编译和在运行时间期间优化代码的能力。

最终表现将取决于你的应用程序做什么,以及如何编写它。在没有进一步的信息,我认为这是不可能给任何更多的指针在这个领域。

我一直惊讶于如何清洁,简单,并且免费的问题了Python / Django的SDK是。不过我开始运行到哪里,我需要开始做更多的JavaScript,我想我可能想利用GWT和其他Java工具的情况。我已经得到了刚刚一半通过GAE的Java教程,并陆续有一个问题:Eclipse配置的问题,JRE versionitis,爪哇的头脑麻木的复杂性和混乱,并可能破教程。检查出这个网站和其他人从这里链接夺得对我来说。我要回到Python,我会考虑的睡衣,以帮助我的JavaScript的挑战。

我有点晚了交谈,但这里是我的两分钱。我真的很难Python和Java之间的选择,因为我在两种语言精通。我们都知道,有两个优点和缺点,你必须要在你的账户要求和工作最适合你的项目的框架。

由于我通常在这种类型的困境做的,我找的数字来支持我的决定。我决定与Python去的原因有很多,但对我来说,有一个情节,这是引爆点。如果您在GitHub上搜索“谷歌应用程序引擎”为 2014年9月后,你会发现如下图:

“GAE语言统计”

有可能是这些数字很多偏见,但总体而言,有三倍以上的Python GAE比库GAE的Java库。不仅如此,但如果你用“数星星”列出的项目,你会看到,大多数Python项目的出现在顶部(你必须采取帐户了Python已经有更长的时间)。对我来说,这使得一个强大的情况下,Python的,因为我需要在考虑社会收养和支持,文档和开源项目的可用性。

这是一个很好的问题,我想很多的答复给在两侧护栏优劣的好观点。我试着Python和基于JVM的AppEngine上(在我的情况,我使用 Gaelyk 这是一个Groovy应用服务引擎构建的应用程序框架)。当涉及到平台上的表现,有一件事我没有考虑,直到它正盯着我的脸是在栅栏的Java方面出现的“加载请求”的含义。当使用Groovy这些装载请求是一个杀手。

我把一个柱一起在话题( HTTP ://distractable.net/coding/google-appengine-java-vs-python-performance-comparison/ ),我希望能找到解决问题的一种工作方式,但如果不是我想我会被追溯到一个Python + Django的组合,直到冷启动Java请求具有更小的影响。

基于Java的有多少人,我听到抱怨的AppEngine相比,Python用户,我会说Python是更紧张的使用。

还有突出空载燕子时,这显然是Google-资金如果没有谷歌拥有的。他们试图实现的Python 2.6.1字节码基于LLVM-后端,这样他们就可以使用JIT和各种漂亮的本地代码/ GC /多核心的优化。 (尼斯名言:“我们渴望做任何原创作品,而不是使用尽可能多的近30年来的研究成为可能。”),他们正在寻找一个5倍速度高达CPython的

当然,这并不能回答你的眼前问题,但对在未来(如果有的话)“的差距收”点(希望)。

如今,Python 的美妙之处在于它与其他语言的沟通能力。例如,您可以将 python 和 java 与 Jython 放在同一个表中。当然,jython 尽管完全支持 java 库,但它并不完全支持 python 库。但如果您想搞乱 Java 库,它是一个理想的解决方案。它甚至允许您将其与 Java 代码混合,而无需额外编码。

但就连Python本身也做出了一些改变。例如,参见 ctypes,接近 C 速度,直接访问 C 库,所有这些都无需离开 Python 编码的舒适感。Cython 更进一步,允许轻松地将 C 代码与 Python 代码混合在一起,或者即使您不想混淆 C 或 C++,您仍然可以使用 Python 进行编码,但使用静态类型变量,使您的 Python 程序与 C 应用程序一样快。顺便说一句,Cython 被谷歌使用和支持。

昨天我什至找到了 python 内联 C 甚至汇编的工具(参见 CorePy),你找不到比这更强大的工具了。

Python无疑是一种非常成熟的语言,不仅能够独立存在,而且能够轻松地与任何其他语言协作。我认为这使得 Python 成为理想的解决方案,即使在非常先进和要求很高的场景中也是如此。

使用 python,您可以访问 C/C++、Java、.NET 和许多其他库,几乎零额外编码,为您提供了一种最小化、简化和美化编码的语言。这是一种非常诱人的语言。

与Python飘即使GWT似乎是那种应用程序我开发的完美匹配。 JPA是相当弄乱了上GAE(例如没有@Embeddable等晦涩非记录限制)。在花了一个星期,我可以告诉大家,Java的只是不上GAE觉得不对劲的时刻。

一想到要考虑到你是打算哟使用的框架。不是在Java方面的所有框架非常适合在App Engine上,这比传统的Java应用服务器有所不同运行的应用程序。

有一点要考虑的是应用程序的启动时间。与传统的Java web应用程序,你并不真的需要考虑这一点。在应用程序启动,然后它只是运行。其实并不重要,如果启动需要5秒钟或几分钟。使用App Engine时,你可能会在情况最终在那里,当请求应用程序后,才能启动,这意味着用户在等待,而你的应用程序启动起来。 GAE的新功能,如保留的情况下派上用场,但是首先检查。

另一件事是不同的限制上的Java GAE psoes。并非所有的框架都乐意与您可以使用的类或限制该线程不允许或您无法访问本地文件系统的事实。这些问题可能是由简单的谷歌搜索只是约GAE兼容性找出来。

我也看到有人抱怨现代的UI框架(检票,即)与会话大小的问题。一般来说,这些框架往往做一些取舍,为了使发展的乐趣,快速和容易。有时,这可能会导致与App Engine的局限性冲突。

我最初开始开发GAE上从事Java,但随后转向Python的,因为这些原因。我的个人感觉的是,Python是App Engine开发一个更好的选择。我认为Java是更多的“家”,例如在亚马逊弹性魔豆。

<强> BUT 用应用程序引擎事情非常迅速改变。 GAE正在改变自己,当它变得越来越流行,框架也正在改变,以解决其局限性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top