馬 花,畢 利
基于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)
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框架在應用開發中的優勢。
云計算平臺層使用現有軟硬件基礎設施構建云環境,從而為上一級的Browser層提供云計算相關的基礎服務,其中包括分布式數據存儲、海量數據處理服務、分布式數據庫技術等。Browser層不僅提供了與云計算平臺層的通信接口,同時保證接口的高度可移植性,以便能夠適用于不同的云計算環境,最后處理來自手機端的請求并反饋結果。
手機通訊錄同步云服務應用系統主要包括三個部分,分別為Server、Browser、Phone;其中Phone手機端基于Android操作系統,Browser瀏覽器端基于GWT和GAE,界面使用GWT編寫,代碼由GAE托管;Server端的數據庫,接口等功能都是在GAE上實現的。整個應用系統完全按照TCP/IP協議進行通信。此應用系統的總體架構為(如圖1所示)。
在該平臺的架構中,利用了云計算環境的快速數據處理和存儲能力,Browser端應用模塊被構建在其中,以此降低對手機端的依賴。同時,云計算平臺層中存儲了通訊錄中的所有信息,而為了保證數據的可恢復性使用了云安全機制將數據備份。Phone手機端并不執行實際的計算操作處理,主要用于查看下載由Browser層存儲到服務器中的信息,為用戶呈現數據及服務界面。

圖1 手機通訊錄同步云服務應用系統總體架構
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.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端實現效果圖
本文提出了基于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