基于GAE平台与GWT框架的Android技术应用研究
2015-09-16马花,毕利
马 花,毕 利
基于GAE平台与GWT框架的Android技术应用研究
马花,毕利
(宁夏大学数学计算机学院,银川750021)
Google云计算作为一种新型发展起来的基于互联网的商业计算模式,其核心是Web应用,而当前值得研究的应用服务尚处在开发阶段中的雏形。运用开源手机操作系统(Google Android)和云计算服务平台(Google App Engine,GAE)提出研究论题,同时编程实现基于GWT框架的简单应用,即手机通讯录同步云服务应用系统,实现了海量数据的备份。实验结果表明,相比于传统的Web展示层框架开发,GWT作为一种新的技术发展趋势,凭借其诸多的优势而得到大量使用,有着广泛的应用前景。
Google App Engine(GAE);GWT框架;Android
国家自然科学基金资助项目(No.61440046)、国家科技支撑计划项目(No.2013BAF02B05)
0 引言
Google作为当今最大的云计算使用者,它的云计算平台GAE(Google App Engine)无疑是引领云计算开发平台技术潮流的生力军之一[1];作为Google研发的AJAX应用框架[2]GWT(Google Web Toolkit)主要用于Web应用程序的开发,Java-to-JavaScript编译器是GWT提供的最明显的特征。这个编译器可以将Java语言开发应用程序的Web接口转换成JavaScript。另外,Java 1.4版本库中的一个子集被GWT使用,因此任何Web服务器(例如Apache)都可以支持GWT应用程序而不需要服务器端直接处理。而据统计,Android平台手机的全世界市场份额在2013年的第四季度已达到78.1%;在2014第一季度,Android平台已占所有移动广告流量来源的42.8%,首度超越iOS[3]。本文利用了Google公司的云计算平台GAE,GWT框架,在Android环境下实现了手机通讯录同步云服务应用系统,分析了此应用系统的架构,从而进一步说明GWT框架在应用开发中的优势。
1 系统的总体架构
云计算平台层使用现有软硬件基础设施构建云环境,从而为上一级的Browser层提供云计算相关的基础服务,其中包括分布式数据存储、海量数据处理服务、分布式数据库技术等。Browser层不仅提供了与云计算平台层的通信接口,同时保证接口的高度可移植性,以便能够适用于不同的云计算环境,最后处理来自手机端的请求并反馈结果。
手机通讯录同步云服务应用系统主要包括三个部分,分别为Server、Browser、Phone;其中Phone手机端基于Android操作系统,Browser浏览器端基于GWT和GAE,界面使用GWT编写,代码由GAE托管;Server端的数据库,接口等功能都是在GAE上实现的。整个应用系统完全按照TCP/IP协议进行通信。此应用系统的总体架构为(如图1所示)。
在该平台的架构中,利用了云计算环境的快速数据处理和存储能力,Browser端应用模块被构建在其中,以此降低对手机端的依赖。同时,云计算平台层中存储了通讯录中的所有信息,而为了保证数据的可恢复性使用了云安全机制将数据备份。Phone手机端并不执行实际的计算操作处理,主要用于查看下载由Browser层存储到服务器中的信息,为用户呈现数据及服务界面。
图1 手机通讯录同步云服务应用系统总体架构
2 应用系统平台关键技术
2.1云端平台技术
GAE目前主要支持Java和Python两种语言,为我们提供了分布式软件开发、测试和部署环境等功能。开发人员在无需考虑网络带宽、主机和存储空间等因素的基础之上,使用其API实现互联网应用。GAE平台的特点:①资源动态可扩展、提供Sandbox应用程序安全保证机制、充足的API、SDK、GQL数据库查询语言等;②免费帐户无需承担任何费用和责任,能够使用500MB的存储空间和每月500万次的页面浏览流量;③GAE可以绑定任意顶级域名,同时为用户的每个应用提供基于appspot.com上的域名。
GAE的基本架构[4]主要由前端、Datastore和服务群这几个部分组成。(1)前端分别为Front End,Static Files, App Server,App Master;(2)Datastore作为GAE中的核心模块,是基于BigTable技术的分布式数据库;(3)服务群中Memcache、Graphics、users、URL snatch和Task Queues等众多服务供App Server调用。
图2 GAE的基本架构
2.2GWT技术
首先GWT[5](Google Web Toolkit)为Java语言编写AJAX前端提供了平台,其次GWT内部会交叉编译到优化的JavaScript中使得源程序可以在浏览器上运行。也就是说,GWT使得程序员无需研究Java到JavaScript和HTML的转换过程,从而降低了开发过程中的难度,同时程序员有更多的时间用于项目的界面以及交互上,尤其是与Eclipse Google插件结合使用时,优势更明显。
GWT,一种胖客户端UI技术。随着并行操作用户数目不断增多,胖客户端技术使服务器端具有较少的加载量。GWT的这一优点特别适合于应用程序简单且数据存储相对有限的场所。
GWT的技术特点:第一,GWT编译器。作为Java到JavaScript的编译器能够翻译Java语言的大部分特性。GWT的这种优势为开发者提供了诸多好处,例如增强了代码的可读性,程序开发过程使用传统方法及时调试和检查代码,减少了软件开发周期等。第二,UI组件与跨平台。GWT中的组件库可以开发出漂亮的UI,允许开发者反复调用;同时经过GWT编译的AJAX代码支持大部分的浏览器和操作系统,为跨平台提供了可能。第三,异步RPC调用。GWT通过使用RPC风格异步调用可以方便实现客户端和服务器端的通信,同时GWT将参数传递过程中的Java对象进行序列化与反序列化。第四,稳定的系统界面。GWT提供的管理浏览器历史的编程接口防止了编程过程中后退行为的功能导致的系统界面混乱的可能,为软件的稳定运行提供了保证。
2.3应用系统与云端的数据存储接口
一个PaaS[6](Platform-as-a-Service)最重要的就是数据存储处理与传输功能。在存取业务数据或执行业务过程中,服务端Servlet被GWT用户接口在浏览器端发出远程过程调用(RPC)。因此,GWT提供了一种机制可以使开发者很容易地发出RPC调用,从而允许开发者使用普通Java对象(POJO)构建应用程序。而提供RPC的应用程序都是分布式应用程序—即使RPC对于开发者而言是透明实现的。所以,商业和企业中的分布式应用程序通常会考虑安全方面的因素,同理,服务于GWT客户端的远程对象的设计也必须考虑安全因素以防止来自于模仿性或敌对客户端应用程序的攻击。
从存储的角度来看,GAE使用Datastore存储服务对数据进行持久化并实现查询和事务功能,并基于Google著名的BigTable技术。GAE数据存储区有别于我们常见的关系型数据库;数据存储区实体“没有架构”;数据存储区保持高度一致并使用开放式并发性控制;数据存储区在其分布式网络中使用“实体组”实现事务。同时,GAE提供了JPA&JDO访问接口,但是值得注意的是它不支持关系型数据库部分的功能,JPA&JDO的对象建模与持久化实现是构建在数据存储区的低级API上。本研究采用了JDO数据访问接口,数据访问过程如下:①拷贝appengine-java-sdk的JAR包;②配置文件设置;③设置数据库读取策略和database调用期限。App Engine提供两种策略:strong consistency和eventual consistency,其默认策略是strong consistency;④增强数据类。JDO使用一种后置编译处理的增强步骤来实现数据类与JDO之间的关联;⑤由PersistenceManagerFactory加载JDO配置文件得到实体管理工厂实例;⑥由实体管理工厂实例构建PersistenceManager实例;⑦使用实体管理器实例的方法处理数据对象以及执行事务,其中包括添加删查等操作;⑧关闭实体管理器。上述过程可用图3表示。
2.4实体设计与实现
数据保存到App Engine中,基本的操作有:定义数据类型,获得交互接口,最后调用交互接口把数据类型的实例保存到数据库中。JDO在Java类上使用批注说明类实例怎样作为实体存储在数据存储服务区中以及在数据存储区中的索引方式。。以下是App Engine标准数据类型定义的一个示例:其中有Long类型的id作为该数据类型的主键,而主要的数据类型有通讯人的Email和password,以及通讯人列表List〈Contact〉。
图3 JDO实现数据访问的步骤
@PersistenceCa pable(identityType=IdentityType.APPLICATION)
public class User{
@PrimaryKey
@Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String email;
@Persistent
private String password;
@Persistent
private List〈Contact〉contacts;
public User(String phonenumber,String password){
this.password=password;
this.email=phonenumber;
this.contacts=new ArrayList〈Contact〉();
}
public Long getID(){
return this.id;
}
public String getEmail(){
return this.email;
}
public String getPassword(){
return this.password;
}
public void setPassword(String password){
this.password=password;
}
public List〈Contact〉getContactst(){
return contacts;
}
public void addContact(Contact c){
contacts.add(c);
}}
App Engine数据存储区中的实体都是经过JDO保存的对象。类的简单名称派生出实体的类型。如果我们要成功地声明一个类,字段批注是必须的,而实体的属性则由类的持久字段决定(属性的名称与字段的名称相同)。其中,使用@PersistenceCapable批注声明Java类能够通过JDO在数据存储区中存储或检索;@PrimaryKey批注声明主键key;@Persistent批注声明要存储到数据存储区中的数据类的字段。
3 应用系统的开发与实现
3.1Swever端的实现技术
为了提供一个唯一的操作接口,首先创建App Engine数据库,其次创建一个静态使用方法以保证操作接口的唯一性。这里我们创建的静态方法为server包里的PMF类,代码如下所示:
public class PMF{
private static final PersistenceManagerFactory pmfIn stance= JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF(){
}
public static PersistenceManagerFactory getInstance(){
return pmfInstance;
}
}
作为App Engine数据库的调用接口,静态方法PMF是GAE的标准格式。为了能够提供唯一的数据库接口,PMF使用了单一设计模式。
然后是实现主要功能类Provider。步骤为:在server包里创建一个与数据库交互的封装类,基本功能就是实现Server端所有的数据功能,其中包括添加删除用户信息、用户登录注册、修改用户使用密码。
最后一个类就是与Servlet进行交互的类,通过协议的方式实现,由doGet和doPost构成,主要功能是服务端将处理后的结果返回给请求端。
3.2Browser端的实现
相比于传统的HTML,CSS创建网页的方法,此应用系统使用GWT框架编写了Browser端。在本系统中它的优势主要有:①使用面向对象的Java代替JavaScript,大幅度提高了开发效率;②GWT提供的友好界面减少了Web应用程序的美化工作;③易于上手和掌握。Browser端运行效果图如图4所示。
图4 Browser端实现效果图
3.3Phone端的实现
手机通讯录同步云服务系统手机端的开发平台为Android 2.2。为了提高系统的可维护性与代码的可重用性,本应用系统采用了MVC设计模式.手机端运行效果图如图5所示。
图5 Phone端实现效果图
4 结语
本文提出了基于GAE平台与GWT框架的An-droid移动应用,并在本研究中实现应用系统。通过本研究凸显了GWT框架与Eclipse Google插件结合使用编码时的高效快捷的优势,同时研究了其广泛的应用价值,为Google各种应用平台的推广提供了有力的保障。
[1]沈琦,汤艳.Google云计算平台服务框架研究[J].电子商务,2013(6):54-55+63
[2]石洪超.基于GWT的网上商店的设计与实现[D].吉林:吉林大学,2010
[3]Android_百度百科.2014-07-12.http://baike.baidu.com/subview/1241829/9322617.htm?fr=aladdin.
[4]Google App Engine技术架构资料大盘点.2012-6-19.http://www.uml.org.cn/zjjs/201206193.asp.
[5]用GWT实现基于Ajax的Web开发.2012-09-26.http://itindex.net/detail/39870-gwt-ajax-web.
[6]宋伟杰.Web2.0与云计算技术支持的协作学习研究[D].南京:南京邮电大学,2013
[7]冀汶莉,李向军,陈夏玉.基于云计算SaaS应用软件开发模式研究[J].微电子学与计算机,2014(7):137-141+146
[8]陶大鹏.基于云计算的电子商务交易平台架构研究[D].安徽:合肥工业大学,2012
[9]Jun Han,Huibin Yin,Jing Liu,et al.Design and Research of Android Mobile Learning System With the Support of GAE[A].Proceedings of 2010 2nd International Conference on Information and Multimedia Technology(ICIMT 2010)[C].2010:6
Google App Engine(GAE);GWT Framework;Android
Research on Android Technology Based on GAE Platform and GWT Framework
MA Hua,BI Li
(Department of Mathematics and Computer Science,Ningxia University,Yinchuan 750021)
Google cloud computing as a new type of developed commercial calculation model based on Internet,its core is the Web application,and the current worth research prototype of application service is still in development stage.Uses the open source mobile operating system (Google Android)and cloud computing service platform(Google App Engine,GAE)to put forward the research topic,at the same time programming realized simple application based on GWT framework,the mobile phone address book synchronization cloud service application system,realizes the huge amounts of data backup.Experimental results show that compared to the traditional Web display layer framework development,as a technology development trend,GWT are widely used with its advantages.It has broad application prospects.
1007-1423(2015)12-0071-05
10.3969/j.issn.1007-1423.2015.12.016
马花(1989-),女,硕士研究生,研究方向为信息系统、移动云计算应用
毕利(1968-),女,教授,研究方向为信息工程、数据挖掘
2015-03-10
2015-04-07