谷歌App Engine上应用Java尚不成熟

日期: 2010-03-10 作者:Rob Barry翻译:张培颖 来源:TechTarget中国 英文

长期以来应用开发最通用的语言之一,Java已经开始获得云计算平台的支撑。但是由于新的和分布式架构平台,像Google App Engine,用Java工作开发者可能需要不同的方法。未来,云Java的关键也许是Java虚拟机(JVM),ThoughtWorks 首席技术架构师Paul Hammant如是说。   Java对于云计算的支撑正在增长。

App Engine平台在2008年初次登台,仅支持Python编程语言,谷歌对其喜爱远远超过大多数企业。2009年四月,App Engine增加了对Java的支持。随后,微软完全不是Java的狂热者,扩大其Azure云平台支持Java。但是,Java最……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

长期以来应用开发最通用的语言之一,Java已经开始获得云计算平台的支撑。但是由于新的和分布式架构平台,像Google App Engine,用Java工作开发者可能需要不同的方法。未来,云Java的关键也许是Java虚拟机(JVM),ThoughtWorks 首席技术架构师Paul Hammant如是说。

  Java对于云计算的支撑正在增长。App Engine平台在2008年初次登台,仅支持Python编程语言,谷歌对其喜爱远远超过大多数企业。2009年四月,App Engine增加了对Java的支持。随后,微软完全不是Java的狂热者,扩大其Azure云平台支持Java。但是,Java最终在云上如何运营还不十分清晰。

  在App Engine和云计算的大多数领域,越来越多地使用JVM。完全成熟的Java EE组件部分,尽管经常被视为过度。由于他们添加的复杂性,App Engine不支持许多组件。其中一个组件就是EJB ,Java EE服务器端的组件架构。此外,谷歌的BigTable,用谷歌App Engine构建的非关系型数据架构,避开了通用数据组件与J EE的关联。

  云计算中JVM的未来,虽然对Hammant来说看起来是乐观的。他表示JVM应该成为Java在云端的主要方式。

  Hammant 说道:“我特别希望的是WAR文件部署尽可能的小,也就是说,VM中10Mb的RAM共享多重虚拟主机。如果谷歌和类似的可以敏锐地反对资源使用定价,那么这些东西就可能让漂移在 [亚马逊] EC2风格厂商之下的与之进行竞争。”

  虽然亚马逊的EC2实例伴随指派基础架构组件而生,像谷歌的费用仅仅是带宽、存储和执行时间的模型一样。亚马逊已经“有能力”支持Java,Hammant说,EC2的大量实例足迹已经过度地杀伤了轻量型应用。

  JVM超越了Java EE

  人们在云端上演的Java应用趋向于降低CPU和内存需求,Hammant说道。通过减少的技术参数,它是较为常见的比完全成熟的Java EE更加轻量、独立的JVM应用。在App Engine中接近Java是很重要的,因为应用必须为沙盒环境而写,这个沙盒环境是数据最终位于的谷歌的非关系型BigTable的顶端。

  围绕BigTable的工作是有限的,Hammant说,他去年开始在App Engine上试用Java。

  Hammant讲到:“所有应用必须重新编码,对很多人来说,这并不受欢迎,的确它很强大,但是人们希望比实际范围的BigTable有更多简易操作。”

  自从这个平台存储数据的方式,根本上地不同于适用于传统Java应用的标准关系方法,许多开发人员已经发现需要赶上工作区。其中一个开发者的例子就是Amsterdam开源Java部门JTeam 的Tom van Zummeren。Zummeren最近在App Engine上试运行了Spring框架。

  Zummeren 表示:“由于服务器局限性,确实不能像传统Java Web应用那样写应用程序,也确实你不得不坚持用JPA、JDO或者原始的SQL来存储数据。”

  大多数Java开发者至少应该熟悉Java Persistence API (JPA),一种管理关系型数据的Java框架。然而,JPA 的App Engine实施伴随着一些局限性。在这个系统中,在同一个交易中,你不能接触多于一个的实体。Zummeren讲到这意味着它几乎不可能通过一个交易指派大量数据集。

  对于Hammant来说,使用App Engine的主要缺点是在servlet-compliant的方式下处理会话数据。基本上,如果你试图在运行的会话中存储信息,就存在潮湿的风险。

  Hammant 说:“用Web应用在浏览器和服务器端之间创建大量Ajax的用户可能受到影响。这是因为许多Ajax可能在服务器端修复状态时,需要在同一时间内修复多个状态。”

  这对于无状态应用不是个问题。或者适用于Ajax需求再分开的时间间隔中发出。

  App Engine目前对于小型的应用是免费的。如果你保持存储数据在500MB以下并且PV低于每月500万。

  Windows Azure上的Java

  令人惊奇的,也许,微软Windows Azure云平台在一月份正式开始,支持.NET、 C++、 PHP、 Ruby、 Python和Java。Azure中,Java应用也必须运行在沙盒环境中。

  微软已经提供一些协作项目指导,致力于更好的Java互操作性。其中之一就是WindowsAzure4J,在二月15号发布了新的为Java创建的Azure SDK 。

  Persistent Systems 架构师Satish Nikamv表示对已开发人员来说一个缺点就是可能缺乏Windows注册管理访问。这意味着应用不得不独立和拷贝扩展。

  Nikam表示开发者在Azure上应该可以部署更广阔各种传统Java应用。不像App Engine在Azure中的应用不能链接集成关系数据库(SQL Azure),除了非结构化的数据存储(Azure Storage)。

作者

Rob Barry
Rob Barry

新闻作者

翻译

张培颖
张培颖

云计算网站编辑

相关推荐