Vie*_*iet 161 python java google-app-engine google-cloud-platform google-app-engine-python
目前,Google App Engine同时支持Python和Java.Java支持不太成熟.但是,Java似乎有更长的库列表,特别是对Java字节码的支持,无论用于编写该代码的语言如何.哪种语言会提供更好的性能和更强大的功能?请指教.谢谢!
修改: http ://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli = 1
编辑: 通过"权力"我的意思是更好的可扩展性和框架之外的可用库的包含.但是Python只允许纯Python库.
Ale*_*lli 123
我有偏见(作为Python专家,但在Java中相当生疏)但我认为GAE的Python运行时目前比Java运行时更先进和更好开发 - 毕竟前者还有一年的发展和成熟,毕竟.
事情将如何进展当然很难预测 - Java方面的需求可能更强(特别是因为它不仅仅是关于Java,而且其他语言也位于JVM之上,因此它是运行的方式,例如PHP或App Engine上的Ruby代码); 然而,Python App Engine团队的优势在于拥有Python的发明者Guido van Rossum和一位非常强大的工程师.
在灵活性方面,如前所述,Java引擎确实提供了运行不同语言(而不仅仅是Java)的JVM字节码的可能性 - 如果你在一个非常大的正面的多语言商店.反之亦然,如果您厌恶Javascript但必须在用户的浏览器中执行某些代码,那么Java的GWT(从Java级编码为您生成Javascript)比Python端替代方案更丰富,更先进(在实践中,如果您选择Python,你将为此目的自己编写一些JS,而如果你选择Java GWT是一个可用的替代,如果你厌恶编写JS).
就库而言,它几乎是一种洗劫 - JVM受到足够的限制(没有线程,没有自定义类加载器,没有JNI,没有关系数据库)来阻碍现有Java库的简单重用,与现有Python一样多或更多同样受到Python运行时类似限制的库也受到了阻碍.
在性能方面,我认为这是一个很好的方面,尽管你应该对自己的任务进行基准测试 - 不要依赖高度优化的基于JIT的JVM实现的性能,因为应用程序引擎可以减少它们的大启动时间和内存占用量.环境是非常不同的(启动成本将经常支付,因为您的应用程序的实例启动,停止,移动到不同的主机等等,所有这些事件对您来说都是如此 - 对于Python运行时环境而言,此类事件通常比使用JVM更便宜).
XPath/XSLT的情况(委婉的......)并不完美,无论是哪一方,叹息,虽然我认为它在JVM中可能稍微不那么糟糕(显然,撒克逊的大量子集可以运行,有些小心).我认为在其标题中使用XPath和XSLT在Appengine问题页面上打开问题是值得的- 现在只有问题要求特定库,这是近视:我真的不关心如何实现一个好的XPath/XSLT,对于Python和/或Java,只要我使用它.(特定库可以简化现有代码的迁移,但这不如能够以某种方式执行"快速应用XSLT转换"等任务重要! - ).我知道如果做得好(特别是在与语言无关的方式),我会明星这样的问题.
最后但同样重要的是:请记住,您可以拥有不同版本的应用程序(使用相同的数据存储区),其中一些是使用Python运行时实现的,有些是使用Java运行时,并且您可以访问与"default/active"不同的版本"一个有明确的URL.因此,您可以同时使用Python 和 Java代码(在应用程序的不同版本中)使用和修改相同的数据存储,从而为您提供更大的灵活性(尽管只有一个具有"好"的URL,例如foobar.appspot.com -这可能对浏览器上的交互式用户访问很重要,我想;-).
Ric*_*son 72
观看此应用程序以了解Python和Java性能的变化:
http://gaejava.appspot.com/ (编辑:道歉,链接现在已经破了.但是当我看到它最后运行时仍然应用了para)
目前,对于这个简单的测试,Python和使用Java中的低级API比Java上的JDO更快.至少如果底层引擎发生变化,该应用程序应该反映性能变化.
Jud*_*y2K 18
根据在其他平台上运行这些虚拟机的经验,我会说你可能会获得比Java更多的Java原始性能.但是,不要低估Python的卖点:Python语言在代码行方面更有效率 - 一般的协议是Python需要等效Java程序的三分之一代码,同时保持可读性或更高可读性.这种好处乘以在没有显式编译步骤的情况下立即运行代码的能力.
关于可用的库,你会发现很多广泛的Python运行时库都是开箱即用的(就像Java一样).AppEngine也支持流行的Django Web框架(http://www.djangoproject.com/).
关于"权力",很难知道你的意思,但Python被用于许多不同的领域,尤其是网络:YouTube是用Python编写的,Sourceforge也是如此(截至上周).
Bij*_*jan 15
2013年6月:这个视频是谷歌工程师非常好的答案:
http://www.youtube.com/watch?v=tLriM2krw2E
TLDR; 是:
在决定Python和Java之间需要考虑的一个重要问题是如何在每种语言中使用数据存储区(在本主题中已经很好地涵盖了原始问题的大多数其他角度).
对于Java,标准方法是使用JDO或JPA.这些非常适合移植,但不太适合数据存储.
可以使用低级API,但这对于日常使用来说太低了 - 它更适合构建第三方库.
对于Python,有一个专门设计的API,为应用程序提供对数据存储区的简单但强大的访问.它很棒,只是它不便携,所以它会锁定你进入GAE.
幸运的是,正在针对两种语言列出的弱点开发解决方案.
对于Java,低级API用于开发持久性库,这些库更适合数据存储区,然后是JDO/JPA(IMO).例子包括Siena项目和Objectify.
我最近开始使用Objectify并且发现它非常易于使用且非常适合数据存储,并且它的日益普及已经转化为良好的支持.例如,Objectify由Google的新Cloud Endpoints服务正式支持.另一方面,Objectify仅适用于数据存储区,而Siena受数据存储区的"启发",但设计用于各种SQL数据库和NoSQL数据存储区.
对于Python,正在努力允许从GAE使用Python GAE数据存储API.一个例子是Google发布用于SDK的SQLite后端,但我怀疑他们是否打算将其扩展到生产就绪的东西.该TyphoonAE项目可能有更多的潜力,但我不认为这是生产准备好了吗或者(纠正我,如果我错了).
如果任何人有任何这些替代方案的经验或知道他人,请在评论中添加它们.就个人而言,我非常喜欢GAE数据存储 - 我发现它比AWS SimpleDB有了相当大的改进 - 所以我希望这些努力能够成功地减轻使用它的一些问题.
小智 7
我强烈推荐GAE的Java,这就是为什么:
我现在正在开发中使用Java/GAE.
我对Python/Django SDK的干净,简单和无问题感到惊讶.但是我开始遇到需要开始做更多JavaScript的情况,并且我想我可能想利用GWT和其他Java实用程序.我已经完成了GAE Java教程的一半,并且遇到了一个又一个问题:Eclipse配置问题,JRE版本问题,Java令人费解的复杂性,以及令人困惑且可能破坏的教程.检查这个网站和其他链接从这里为我赢得了它.我将回到Python,我将研究睡衣以帮助解决我的JavaScript挑战.
我的谈话有点晚了,但这是我的两分钱.我真的很难在Python和Java之间进行选择,因为我精通这两种语言.众所周知,两者都有优点和缺点,您必须考虑您的要求和最适合您项目的框架.
正如我通常在这种困境中所做的那样,我寻找数字来支持我的决定.我决定使用Python有很多原因,但就我而言,有一个情节是引爆点.如果您在2014年9月在GitHub中搜索"Google App Engine" ,您会发现下图:

这些数字可能存在许多偏差,但总体而言,GAE Python存储库的数量是GAE Java存储库的三倍.不仅如此,如果按"星数"列出项目,您将看到大多数Python项目都出现在顶部(您必须考虑到Python已经存在的时间更长).对我而言,这为Python提供了强有力的理由,因为我考虑了社区采用和支持,文档以及开源项目的可用性.
| 归档时间: |
|
| 查看次数: |
70744 次 |
| 最近记录: |