当前位置: 首页 > 面试题库 >

在Google App Engine上选择Java vs Python

东郭勇
2023-03-14
问题内容

目前,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库。


问题答案:

我有偏见(是一名Python专家,但对Java却很生疏),但我认为GAE的Python运行时目前比Java运行时更先进和更好地开发-
毕竟前者还有一年的开发和成熟时间。

事情的进展当然很难预测-Java方面的需求可能会更强(尤其是因为它不仅与Java有关,而且其他语言也位于JVM之上,因此这是运行方式,例如PHP或App
Engine上的Ruby代码);但是,Python App Engine团队的确拥有加入Python的发明者,非常强大的工程师Guido van
Rossum的优势。

在灵活性方面,如前所述,Java引擎确实提供了运行由不同语言(不仅仅是Java)制作的JVM字节码的可能性-
如果您在一家多语言商店中,那肯定是很大的。反之亦然,如果您讨厌Java脚本,但必须在用户浏览器中执行一些代码,则Java的GWT(通过Java级别的编码为您生成Java脚本)比Python端的替代方法(实际上,如果您选择)更丰富,更先进Python,您将为此自己编写一些JS,而如果您选择Java
GWT,则如果您讨厌编写JS,则可以使用它。

就库而言,这几乎是一种洗礼-
JVM受到足够的限制(没有线程,没有自定义类加载器,没有JNI,没有关系数据库),以至于妨碍了现有Java库的简单重用,甚至超过了现有Python。类似地,Python运行时的类似限制也限制了库。

在性能方面,尽管您应该以自己的任务为基准,但我认为这是一种洗礼-
不要依赖高度优化的基于JIT的JVM实现的性能,因为它们降低了启动时间和内存占用,因为应用引擎环境是非常不同的(启动成本将经常支付,因为应用html" target="_blank">程序的实例被启动,停止,移动到其他主机等)对您来说都是透明的-
Python运行时环境通常比JVM便宜得多。

叹为观止,XPath /
XSLT的情况(要委婉地说…)并不是两边都完美无缺,尽管我认为这在JVM中可能不那么糟糕(显然,可以使Saxon的实质子集运行)
,但要小心)。我认为值得在Appengine问题页面上打开标题,标题中包含XPath和XSLT
-现在只有问题需要特定的库,这是近视的:我真的不在乎如何实现良好的XPath /
XSLT,只要适用于Python和/或Java。(特定的库可能会简化现有代码的迁移,但是这比能够以某种方式执行“快速应用XSLT转换”这样的任务要重要!)。我知道如果措辞得当(尤其是以与语言无关的方式),我会盯上这样的问题。

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



 类似资料:
  • 问题内容: 目前,我正在使用此: 它将我重定向到选项值内的位置。但这不能按预期工作。..这意味着如果我单击select的第一个选项,则onChange操作不会运行。我正在考虑使用javascript,但我想您会收到一些更好的建议。因此,如果我单击每个选项将其重定向到它的值,该如何使其起作用? 问题答案: 因为已经选择了第一个选项,所以永远不会触发change事件。添加一个空值作为第一个值,并检查位

  • 问题内容: 我知道您无法在中初始化对象。我一直在互联网上搜索,但只找到了一个可能的答案,可以使用但在实现方面没有太多细节。我要问他们是成功实施它还是有实现它的想法的人,可以通过以外的其他方式来确定。 目前,我仅使用以下内容: 我正在寻找实现的东西是这样的。 PS。我是selenium的新手,也是回来的Java开发人员,所以请好好对待我:) 问题答案: 由于没有人分享某些东西,因此我将分享我的做法。

  • 问题内容: 我想用HQL做这样的事情: 但这给出了一个错误: 有什么办法可以使用HQL和Hibernate做到这一点? 问题答案: 尝试使用 本机SQL 解决方案方法: 需要首先导入以下内容: 然后在代码中的某处: 有关此链接的更多信息,请点击 此处(加入Hibernate查询语言)

  • 问题内容: 以下帖子具有令人信服的理由,通常避免在SQL中使用 。 为什么SELECT *被认为有害? 在讨论中给出了何时使用或不可接受使用的示例。 但是,我没有看到有关公用表表达式(CTE)的讨论。在CTE中使用是否有任何弊端? 例子: 问题答案: 既然你已经正确地列出了列名,我看不出在使用任何伤害从。 实际上,这可能是使用的正确位置,因为没有必要列出两次列。 除非 您不需要使用所返回的所有列。

  • 我在这个问题上遇到了几个问题。我正在尝试选择运行Chrome的Android设备上的后置摄像头。 因此,在阅读之后: 然后,因为我用了三个。在这个应用程序中,我将这个ID绑定到Jerome Etienne三分机网络摄像头抓取(https://github.com/jeromeetienne/threex.webar): 然后我不得不修改3X。网络摄像头抓取以这种方式分类(我删除了不相关的部分):

  • 问题内容: 我试图在选择元素中选择一个值。我正在使用Selenium RC(Java)运行测试用例。我了解选择值的代码由以下代码给出: 我无法使用上面的代码选择所需的值。我认为这可能与选择源代码中的optgroup有关。我没有任何异常,该命令执行得很好,但是在页面上未选择所需的值。另外,我不能使用ID(而不是值),因为那里没有任何ID。这是选择器的源代码: 有什么方法可以使用Selenium选择所

  • 我使用的是一个具有多个属性的select元素。这只适用于Firefox和Chrome,但不适用于IE9/IE10或IE11。有什么建议让它也适用于IE浏览器吗?看起来IE不接受字符=>

  • 我正在使用JavaFx,我有一个用sceneBuilder创建的表视图,它包含3列,其中一列用于复选框,还有一个名为print\u tab的按钮,我想在单击此按钮时使用复选框选择行- 我读了许多关于回调复选框的表列的示例,但不知道如何做到这一点。 这是控制器: 在模型类上,我有以下代码: } fxml代码: 任何想法? 编辑: 我试过这样做,但即使我勾选了一些复选框,我总是得到错误的结果,不是真的