移動數(shù)據(jù)庫和J2ME工具構(gòu)建應(yīng)用程序 I
2024-07-21 02:38:55
供稿:網(wǎng)友
在不可靠的無線網(wǎng)絡(luò)中應(yīng)用程序可靠性已經(jīng)成為關(guān)系移動商業(yè)成功的一個中心話題。J2ME(java 2 平臺微型版)是支持離線模式智能移動客戶端的完美平臺。整合了移動關(guān)系數(shù)據(jù)庫的企業(yè)J2ME客戶端能夠治理在設(shè)備上的復(fù)雜數(shù)據(jù)并能在需要時和后臺服務(wù)器同步。 在這篇文章中,Michael Yuan首先他討論了高可靠性移動移用應(yīng)用程序的“偶然連接”(occasionally-connected)范例。他在這個范例中解釋了移動數(shù)據(jù)庫的作用。他還用一個J2ME應(yīng)用程序闡述了移動數(shù)據(jù)庫應(yīng)用程序的要害組件。最后,他評論了主流的J2ME數(shù)據(jù)庫公司,為你在購買所需要的數(shù)據(jù)庫時提供一個指導(dǎo)。
目前的無線網(wǎng)絡(luò)是極不可靠的。不可靠的應(yīng)用程序毀壞了移動商業(yè)的核心價值,而它又許諾無論何時何地都可以訪問到信息。實際上,總是保持連接的需求正是基于無線應(yīng)用協(xié)議(WAP)的瘦客戶移動商業(yè)失敗的主要原因。移動商業(yè)需要智能的移用客戶端,它能夠操縱當(dāng)?shù)氐膽?yīng)用程序并且甚至在網(wǎng)絡(luò)出現(xiàn)臨時的不可靠時可以持續(xù)的工作(例如,離線操作)。“偶然連接”移動應(yīng)用程序需要高級的移動數(shù)據(jù)儲存和治理工具。這樣的工具在J2ME上是輕易得到的。
在這篇文章中,我首先討論了移動數(shù)據(jù)庫的一般概念和規(guī)范。我用了一個應(yīng)用程序例子來闡述J2ME移動數(shù)據(jù)庫應(yīng)用程序的重要設(shè)計和要害組件。我也對現(xiàn)在變化的市場如何正確選擇正確的移動數(shù)據(jù)庫提供了建議。
設(shè)備上的數(shù)據(jù)存儲和治理
對離線操作的首要需求是存儲和治理設(shè)備自身的應(yīng)用數(shù)據(jù)。標(biāo)準(zhǔn)的J2ME僅僅提供有限的數(shù)據(jù)存儲和治理能力。在低端的MIDP(移動信息設(shè)備描述)電話上,我們僅靠記錄治理系統(tǒng)record management system(RMS)得到線性的記錄儲存;在基礎(chǔ)描述里(或PersonalJava)我們有簡單的隨機文件。應(yīng)用程序開發(fā)者們必須用那些一般工具來組織數(shù)據(jù),這些工具會對大應(yīng)用程序?qū)е路ξ丁⒌托屎湾e誤的傾向。
在J2SE(Java2平臺標(biāo)準(zhǔn)版)和J2EE(Java2平臺企業(yè)版)的世界中,關(guān)系數(shù)據(jù)庫代表著數(shù)據(jù)治理的要害技術(shù)。大多數(shù)開發(fā)人員已經(jīng)非常熟悉通過如JDBC(Java數(shù)據(jù)庫連接)的API訪問普通數(shù)據(jù)庫。因此輕量級關(guān)系數(shù)據(jù)庫是我們對移動數(shù)據(jù)治理自然的選擇。
除了提供離線操作模式外,設(shè)備上數(shù)據(jù)庫on-device databases還有其他的重要好處:
他們能治理用戶參數(shù)。極度的個性化已經(jīng)作為移動商業(yè)的一個主要優(yōu)點被吹捧。
他們能提供一個性能高速緩存器performance cache來減少網(wǎng)絡(luò)往返回調(diào)。這樣就能大大的增強在目前低速和反應(yīng)慢的無線網(wǎng)絡(luò)中應(yīng)用程序的性能。
JDBC可選包
標(biāo)準(zhǔn)JDBC API對高端Java移動設(shè)備已經(jīng)是可以選擇利用了。PersonalJava運行時經(jīng)常和可選的JDBC1.x API捆綁在一起。PersonalJava的繼續(xù)物,J2ME 基礎(chǔ)/個性化的描述Foundation/Personal PRofile(FP/PP),它沒有委托JDBC來訪問數(shù)據(jù)庫。相反,F(xiàn)P/PP設(shè)備通過J2ME JDBC可選包(JDBC OP)使用JDBC 3.x API 的一個富子集。JSR Java Specification Request(Java 規(guī)范需求)169正在發(fā)展這個可選包的規(guī)范,它的草案已在2002年11月提交上去。JDBC OP除了以下幾個特點外支持大多數(shù)用于JDBC的公共特性:
連接池
ParameterMetaData接口
在CallableStatement interface里為已經(jīng)存儲的程序通過名稱來設(shè)置參數(shù)
SQL 99的類型(如StrUCt,Array,Ref,SQLData,SQLInput,和SQLOutput接口 )
自定義類型映射(如setTypeMap() 和getTypeMap() 方法)
數(shù)據(jù)同步
偶然連接應(yīng)用程序范例的另一個重要特性是數(shù)據(jù)同步。獨立的移動數(shù)據(jù)庫被數(shù)據(jù)包所隔開。當(dāng)我們用強大的后臺服務(wù)器連接那些“孤島”時移動應(yīng)用程序非常有用。已連接上的移動數(shù)據(jù)庫有如下優(yōu)點:
移動客戶端經(jīng)常需要訪問企業(yè)的基礎(chǔ)設(shè)施。例如,移動銷售應(yīng)用程序需要更新庫存數(shù)據(jù)。
后端應(yīng)用程序需要上卷數(shù)據(jù)和聚集數(shù)據(jù)來制定智能商業(yè)決策或生成正確的報表。例如,供給鏈應(yīng)用程序在決定它應(yīng)該從供給商那里定購多少貨物之前需要得到移動銷售人員的聚集數(shù)據(jù)。
后臺能共享每個移動終端信息
因此智能客戶端不但應(yīng)該提供離線設(shè)備數(shù)據(jù)治理,而且應(yīng)該當(dāng)網(wǎng)絡(luò)可用時提供后臺數(shù)據(jù)庫的數(shù)據(jù)同步。后臺數(shù)據(jù)庫當(dāng)作簡單移動設(shè)備治理的一個內(nèi)容儲存庫是同步解決方案的額外收益。
理論上應(yīng)用程序開發(fā)者能操縱整個同步邏輯,然而開發(fā)一個優(yōu)化的,安全的和可擴展的同步解決方案需要非常專業(yè)的技能。
移動數(shù)據(jù)庫產(chǎn)品同其附帶的同步工具和API一起趕走了開發(fā)人員的痛苦。
什么是SyncML?
SyncML是一個流行的應(yīng)用層同步協(xié)議。除了包括像J2ME這樣的通用客戶應(yīng)用平臺,移動設(shè)備通常還預(yù)裝一些智能應(yīng)用程序。例如在智能電話或PDA上包括有日歷,地址本和聯(lián)系表(個人信息治理 personal information management, 或PIM應(yīng)用程序)這些應(yīng)用程序通常能夠通過設(shè)備軟件供給商所提供的協(xié)議與桌面PC或其他中心數(shù)據(jù)儲存庫進行數(shù)據(jù)同步。協(xié)議間的不兼容造成用戶的許多問題。例如,在Pocket PC上的Mac 和linux兩平臺進行同步是非常困難的;假如一個人擁有多個移動設(shè)備,那他必須安裝多個驅(qū)動程序,而這些驅(qū)動程序是存在潛在沖突的。用戶需要一個標(biāo)準(zhǔn)的同步協(xié)議,它答應(yīng)任何設(shè)備在不需要專門驅(qū)動程序條件下與任何后端應(yīng)用程序進行同步。
SyncML是一個標(biāo)準(zhǔn)的xml數(shù)據(jù)格式,它定義語法描述簡單PIM數(shù)據(jù)例如vCard和vCalendar。SyncML能訪問數(shù)據(jù)庫驅(qū)動的企業(yè)后端信息系統(tǒng)。例如,IBM WebSphere Everyplace access提供SyncML客戶端訪問Lotus Notes和Microsoft Exchange servers。像IBM DB2和Oracle9i Database這樣重要的企業(yè)數(shù)據(jù)庫已經(jīng)建立了對SyncML的支持。由于SyncML只是在PIM類型應(yīng)用程序上發(fā)揮作用,它還沒有強大到足以和通用關(guān)系數(shù)據(jù)庫同步的地步,因此本文沒有集中在SyncML上。