Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在googleappengine上选择Java与Python_Java_Python_Google App Engine_Google Cloud Platform_Google App Engine Python - Fatal编程技术网

在googleappengine上选择Java与Python

在googleappengine上选择Java与Python,java,python,google-app-engine,google-cloud-platform,google-app-engine-python,Java,Python,Google App Engine,Google Cloud Platform,Google App Engine Python,目前Google应用程序引擎支持Python和Java。Java支持还不够成熟。然而,Java似乎有一个较长的库列表,尤其是对Java字节码的支持,而不管编写代码所使用的语言是什么。哪种语言将提供更好的性能和更强大的功能?请告知。谢谢大家! 编辑: 编辑: 我所说的“强大”是指更好的可扩展性和框架外可用库的包含。Python只允许使用纯Python库。正如您所指出的,使用JVM并不限制您使用Java语言。可以找到JVM语言和链接的列表。然而,googleappengine确实限制了您可以从普通

目前Google应用程序引擎支持Python和Java。Java支持还不够成熟。然而,Java似乎有一个较长的库列表,尤其是对Java字节码的支持,而不管编写代码所使用的语言是什么。哪种语言将提供更好的性能和更强大的功能?请告知。谢谢大家!

编辑:

编辑:
我所说的“强大”是指更好的可扩展性和框架外可用库的包含。Python只允许使用纯Python库。

正如您所指出的,使用JVM并不限制您使用Java语言。可以找到JVM语言和链接的列表。然而,googleappengine确实限制了您可以从普通javase集合中使用的类集合,并且您需要调查这些实现是否可以在appengine上使用

编辑:我看你找到了这样一份清单

我不能评论Python的性能。然而,鉴于JVM能够在运行时动态编译和优化代码,它是非常强大的平台性能


最终,性能将取决于应用程序的功能和编码方式。由于没有进一步的信息,我认为不可能在这方面给出更多的指针。

根据在其他平台上运行这些虚拟机的经验,我认为Java可能比Python获得更多的原始性能。但是,不要低估Python的卖点:Python语言在代码行方面要高效得多——普遍认为Python需要相当于Java程序三分之一的代码,同时保持可读性。这一好处与无需显式编译步骤即可立即运行代码的能力相乘

关于可用的库,您会发现许多扩展的Python运行库都是开箱即用的(Java也是如此)。AppEngine上也支持流行的Django Web框架()

关于“power”,很难理解你的意思,但是Python在许多不同的领域都有使用,特别是在Web上:YouTube和Sourceforge(截至上周)都是用Python编写的。

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

事情将如何发展当然很难预测——Java方面的需求可能更大(特别是因为它不仅与Java有关,还与JVM之上的其他语言有关,因此这是在App Engine上运行PHP或Ruby代码的方式);然而,Python应用程序引擎团队有一个优势,即拥有Python的发明者、令人惊讶的强大工程师Guido van Rossum

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

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

就性能而言,我认为这是一个挑战,尽管您应该以自己的任务为基准——不要依赖高度优化的基于JIT的JVM实现的性能,因为应用程序引擎环境是非常不同的(启动成本将经常支付,因为您的应用程序实例会启动、停止、移动到不同的主机,等等,所有这些对您来说都是免费的——Python运行时环境中的此类事件通常比JVM便宜得多)

XPath/XSLT的情况(委婉地说…)在任何一方都不是完全完美的,唉,尽管我认为JVM中的情况可能不那么糟糕(显然,在JVM中,可以运行大量的Saxon子集,但要小心一些).我认为在页面上用XPath和XSLT作为标题是值得的--现在只有一些问题需要特定的库,这是短视的:我并不关心如何为Python和/或Java实现一个好的XPath/XSLT,只要我能使用它。(特定的库可能会简化现有代码的迁移,但这并没有能够以某种方式执行诸如“快速应用XSLT转换”之类的任务那么重要!-)。我知道如果措辞得当(特别是以独立于语言的方式),我会提出这样的问题


最后但并非最不重要的一点:请记住,您可以拥有不同版本的应用程序(使用相同的数据存储),其中一些是通过Python运行时实现的,一些是通过Java运行时实现的,您可以通过显式URL访问与“默认/活动”版本不同的版本。因此,您可以同时拥有Python和Java代码(在不同版本的应用程序中)使用和修改同一个数据存储,给您带来更大的灵活性(尽管只有一个会有“漂亮”的URL,如foobar.appspot.com,我想这可能只对浏览器上的交互用户访问重要;-)。

我强烈建议GAE使用Java,原因如下:

  • 性能:Java可能比Python更快
  • Python开发面临着缺乏t语言的压力