陳建麗
[摘 要]Java是被廣泛接受的編程語言和執行環境,在70%的企業中使用。隨著這些應用擴展到移動性,系統架構師轉向相關的J2SE和J2ME技術。J2SE將Java的優勢帶到PC,筆記本電腦,平板電腦和PDA,而J2ME是Java的小型版本,是世界上大多數手機和智能電話的基礎軟件技術。
[關鍵詞]Java J2EE J2SE J2ME 移動應用
一、前言
在今天逐漸分散的商業環境中,眾多公司正在尋找新的方式在企業間共享信息、分散決策制定過程、對客戶反映更靈敏以及降低成本。為了達到以上目標,許多公司正在考慮采用企業移動系統。公司發現這些系統經常會帶來很高的投資回報,并取得持續的競爭優勢。通過把公司的應用擴展到這一領域,在公司就可以實現操作流水作業、增加生產力,并且進一步完善同客戶和合作伙伴的關系。
系統集成商,獨立軟件開發商和企業IT部門正在轉向這些商業產品以加速性能強大的移動應用的開發以及打開新的市場。
本篇文章主要討論了移動性對今天商業環境以及一些企業范圍的應用的影響;它也觀察了java不斷增長的影響以及使它成為移動開發領導者的能力;最后,探索了引入移動數據庫來支持關鍵性的軟件和性能。
二、當前企業移動應用的現狀和面臨的困境
根據研究機構In-Stat/MDR的數據,到2006年,3千9百萬工人將日常使用企業移動方案。“企業移動”指現場專業人士使用擴展的方式(如VPN連接)與企業信息的后臺數據庫同步交換數據的商業流程。它不同于今天的“無線”系統,因為企業移動方案依賴于無線網絡來取得可觀的商業利益?!坝肋h在線”的無線訪問給企業帶來了一些挑戰,包括高的上網成本和傳輸時延。雖然無線覆蓋范圍很廣,但是它傳輸率低,延時時間長,數據丟包現像嚴重,現場人員不可能依靠這樣的傳輸方式來管理他們的數據。因此,目前大多數企業的應用采用“偶爾上網”架構設計,在這種情況下,信息儲存在本地,并在需要或者方便聯網時周期性地和后臺數據庫同步,進而造成數據延時不同步的弊端。
然而,移動應用增長最快的領域是一些關鍵性的應用,如ERP,B2B,B2C、FSA,CRM和一些現場自動化軟件。隨著強大的同步化和本地數據管理的出現,企業正在認識到從更好的信息共享和數據收集中獲得的好處。這些好處導致了新的商業機會和長期投資回報的顯著改善,因此企業對網絡的連接質量要求越來越高。
三、Java語言的特點
Java是一種跨平臺,適合于分布式計算環境的面向對象編程語言。具體來說,它具有如下特性:簡單性、面向對象、分布式、解釋型、可靠、安全、平臺無關、可移植、高性能、多線程、動態性等。下面我們將重點介紹Java語言的面向對象、平臺無關、分布式、多線程、可靠和安全等特性。
(一)面向對象
面向對象其實是現實世界模型的自然延伸。現實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現實世界中任何實體都可歸屬于某類事物,任何對象都是某一類事物的實例。如果說傳統的過程式編程語言是以過程為中心,以算法為驅動的話,面向對象的編程語言則是以對象為中心,以消息為驅動。用公式表示,過程式編程語言為:程序=算法+數據;面向對象編程語言為:程序=對象+消息。
所有面向對象編程語言都支持三個概念:封裝、多態性和繼承,Java也不例外。現實世界中的對象均有屬性和行為,映射到計算機程序上,屬性則表示對象的數據,行為表示對象的方法(其作用是處理數據或同外界交互)。所謂封裝,就是用一個自主式框架把對象的數據和方法聯在一起形成一個整體??梢哉f,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為Java無全程變量,無主函數,在Java中絕大部分成員是對象,只有簡單的數字類型、字符類型和布爾類型除外。而對于這些類型,Java也提供了相應的對象類型以便與其他對象交互操作。
多態性就是多種表現形式,具體來說,可以用“一個對外接口,多個內在實現方法”表示。舉一個例子,計算機中的堆??梢源鎯Ω鞣N格式的數據,包括整型,浮點或字符。不管存儲的是何種數據,堆棧的算法實現是一樣的。針對不同的數據類型,編程人員不必手工選擇,只需使用統一接口名,系統可自動選擇。運算符重載(operator overload)一直被認為是一種優秀的多態機制體現,但由于考慮到它會使程序變得難以理解,所以Java最后還是把它取消了。
繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實體則是汽車的“孩子”。Java提供給用戶一系列類(class),Java的類有層次結構,子類可以繼承父類的屬性和方法。與另外一些面向對象編程語言不同,Java只支持單一繼承。
(二)平臺無關性
Java是平臺無關的語言是指用Java寫的應用程序不用修改就可在不同的軟硬件平臺上運行。平臺無關有兩種:源代碼級和目標代碼級。C和C++具有一定程度的源代碼級平臺無關,表明用C或C++寫的應用程序不用修改只需重新編譯就可以在不同平臺上運行。
Java主要靠Java虛擬機(JVM)在目標碼級實現平臺無關性。JVM是一種抽象機器,它附著在具體操作系統之上,本身具有一套虛機器指令,并有自己的棧、寄存器組等。但JVM通常是在軟件上而不是在硬件上實現。(目前,SUN系統公司已經設計實現了Java芯片,主要使用在網絡計算機NC上。另外,Java芯片的出現也會使Java更容易嵌入到家用電器中。)JVM是Java平臺無關的基礎,在JVM上,有一個Java解釋器用來解釋Java編譯器編譯后的程序。Java編程人員在編寫完軟件后,通過Java編譯器將Java源程序編譯為JVM的字節代碼。任何一臺機器只要配備了Java解釋器,就可以運行這個程序,而不管這種字節碼是在何種平臺上生成的(過程如圖1所示)。另外,Java采用的是基于IEEE標準的數據類型。通過JVM保證數據類型的一致性,也確保了Java的平臺無關性。
Java的平臺無關性具有深遠意義。首先,它使得編程人員夢寐以求的事情(開發一次軟件在任意平臺上運行)變成事實,這將大大加快和促進軟件產品的開發。其次Java的平臺無關性正好迎合了“網絡計算機”思想。如果大量常用的應用軟件(如字處理軟件等)都用Java重新編寫,并且放在某個Internet服務器上,那么具有NC的用戶將不需要占用大量空間安裝軟件,他們只需要一個Java解釋器,每當需要使用某種應用軟件時,下載該軟件的字節代碼即可,運行結果也可以發回服務器。目前,已有數家公司開始使用這種新型的計算模式構筑自己的企業信息系統。
(三)分布式
分布式包括數據分布和操作分布。數據分布是指數據可以分散在網絡的不同主機上,操作分布是指把一個計算分散在不同主機上處理。
Java支持WWW客戶機/服務器計算模式,因此,它支持這兩種分布性。對于前者,Java提供了一個叫作URL的對象,利用這個對象,你可以打開并訪問具有相同URL地址上的對象,訪問方式與訪問本地文件系統相同。對于后者,Java的applet小程序可以從服務器下載到客戶端,即部分計算在客戶端進行,提高了系統執行效率。
Java提供了一整套網絡類庫,開發人員可以利用類庫進行網絡程序設計,方便實現Java的分布式特性。
(四)可靠性和安全性
Java最初設計目的是應用于電子類消費產品,因此要求較高的可靠性。Java雖然源于C++,但它消除了許多C++不可靠因素,可以防止許多編程錯誤。首先,Java是強類型的語言,要求顯式的方法聲明,這保證了編譯器可以發現方法調用錯誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了內存的非法訪問;第三,Java的自動單元收集防止了內存丟失等動態內存分配導致的問題;第四,Java解釋器運行時實施檢查,可以發現數組和字符串訪問的越界,最后,Java提供了異常處理機制,程序員可以把一組錯誤代碼放在一個地方,這樣可以簡化錯誤處理任務,便于恢復。
由于Java主要用于網絡應用程序開發,因此對安全性有較高的要求。如果沒有安全保證,用戶從網絡下載程序執行就非常危險。Java通過自己的安全機制防止了病毒程序的產生和下載程序對本地系統的威脅破壞。當Java字節碼進入解釋器時,首先必須經過字節碼校驗器的檢查,然后,Java解釋器將決定程序中類的內存布局,隨后,類裝載器負責把來自網絡的類裝載到單獨的內存區域,避免應用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網絡上裝載的類只能訪問某些文件系統。上述幾種機制結合起來,使得Java成為安全的編程語言。
(五)多線程
線程是操作系統的一種新概念,它又被稱作輕量進程,是比傳統進程更小的可并發執行的單位。C和C++采用單線程體系結構,而Java卻提供了多線程支持。
Java在兩方面支持多線程。一方面,Java環境本身就是多線程的。若干個系統線程運行負責必要的無用單元回收,系統維護等系統級操作;另一方面,Java語言內置多線程控制,可以大大簡化多線程應用程序開發。Java提供了一個類Thread,由它負責啟動運行,終止線程,并可檢查線程狀態。Java的線程還包括一組同步原語,這些原語負責對線程實行并發控制。利用Java的多線程編程接口,開發人員可以方便得寫出支持多線程的應用程序,提高程序執行效率。必須注意地是,Java的多線程支持在一定程度上受運行時支持平臺的限制。例如,如果操作系統本身不支持多線程,Java的多線程特性可能就表現不出來。
四、Java技術在企業移動應用中的優勢及前景
Java現在已經成為了一項成熟的技術,適合于企業級的移動項目,它的優勢包括完全的跨平臺通用性,可以使得同樣的代碼在多個平臺上使用?;贘ava的網絡改進提供了移動企業需要的可靠性和可獲得性。
Java是被廣泛接受的編程語言和執行環境,在70%的企業中使用。J2EE技術是大規模電子商務方案的事實上的標準。隨著這些應用擴展到移動性,系統架構師轉向相關的J2SE和J2ME技術。J2SE將Java的優勢帶到PC,筆記本電腦,平板電腦和PDA,而J2ME是Java的小型版本,是世界上大多數手機和智能電話的基礎軟件技術。
當其他技術傾向于把開發人員固定在一個專有的硬件和軟件平臺時,Java促進了跨平臺的通用性。它還降低了集成成本,因為它可以同時支持將不同平臺的多個設備相連。這在大多數商業環境中是特別的優勢,因為移動性通常是加在現存的系統之上的。
可延展的企業移動方案應該實現本地數據庫和企業數據庫同步化信息。移動數據庫有一套獨特的要求以保證兼容性、效率和可延展性。
另外,移動數據庫應該容易和同步化技術整合,以獲得信息的雙向交流和更新。開發人員需要提供不依賴平臺的雙向的同步化數據庫方案來促進信息的流動,以及提供可延展的連接性以容納不斷增加的用戶。用戶也可以從沖突檢測和分辨率工具中獲益,這些工具在同步連接的用戶間自動協調數據沖突。
企業移動深入到了非常廣泛的商業活動。好處包括直接的金融回報和整體運營效率。例如,運輸和后勤組織使用移動應用連接前臺辦公室,裝卸碼頭和司機。這不僅完善了組織內的通訊,而且減少了被盜和丟失,從而降低成本,并改進了客戶服務;在健康護理行業,配有移動應用的醫生可以減少花在行政管理上的時間,從而得到更快的診斷和更好的病人護理。
移動應用也對公共安全產生很大影響。它們的信息共享能力可以更有效地部署醫療人員和法律實施,幫助加強社區安全。公用設備工人使用移動應用來自動分配工作人手,電子訪問技術信息,跟蹤設備和供應。
隨著我國移動行業應用的服務范圍在日益擴大,應用層次在不斷提高,隨著信息化的全面推進,行業集團用戶對高帶寬、高速率、低時延的3G移動通信網絡和業務應用的日漸普及,網絡帶寬的大幅度擴展,使得基于Java應用的業務更加豐富。除了快速的JSP頁面處理,移動支付、移動流媒體等業務,也都將在Java應用領域大顯身手。
由此可以看出,移動行業應用將成為3G時代的重要應用方向。3G網絡商用后,3G的高網絡帶寬和強大的多媒體業務支撐能力,將與各行業對移動行業應用的實際需求實現“對接”,全面提升移動行業應用的層次、質量和水平。例如,對于交通行業而言,在3G時代,交通運輸部門和物流公司不僅可以對車輛運行狀況進行更及時、更準確的定位,而且可以通過圖像監控系統隨時觀察乘客和駕駛員的狀態;對于政府部門而言,借助3G高速互聯網接入,政府工作人員可以隨時隨地登錄政務網絡,及時處理公文,收發郵件和各種信息;對于銀行、證券和商業部門來說,依托3G網絡,他們可以讓客戶享受到移動支付、手機炒股等各種更加快捷、安全的電子商務服務。
3G的到來,將極大地增強移動通信網絡服務行業信息化的能力,全面提升移動行業應用的質量,有效改善行業、大眾用戶對移動行業應用的感受和體驗,從而加速移動行業應用的普及和滲透步伐。
五、結束語
正是基于Java語言的諸多特點和3G網絡的應用,企業正在通過移動應用擴展關鍵的企業數據,以實現眾多的好處,包括工作人員生產力,更好的客戶服務,改進的操作以及成本的降低。Java的企業移動方案引入了一整套移動應用,它們可以輕松、有效地開發,以改進商業操作。隨著企業移動性的采用,公司可以在商業間共享信息,以改進服務水平,制定更多戰略決策,并改進生產力。
參考文獻
[1]Beginning Java Objects: From Concepts to Code (Java面向對象編程指南) .J. Barker編著,韓柯等譯,電子工業出版社,2001
[2]Java程序設計實驗指導,清華大學出版社,陳軼、姚曉昆編著,2006
[3]實用Java程序設計教程,機械工業出版社,宛延闿等編著,2006
[4]第3代移動通信系統設計原理與規劃,電子工業出版社,王衛東/高鵬/張英海編著,2007
[5]移動業務應用中手機地位的演進,人民郵電出版社,葉云/王慶編著,2008