天天看點

J2me之一——移動開發技術基礎

 3G(4G)時代的到來為無線移動技術的發展提供了前所未有的機遇

  一 移動裝置作業系統PK  

市面上現有的手機作業系統,主要有Symbian、WindowsMobile、Linux、Palm、Balckberry和OSX六種。其中Palm資曆雖老,但是在Palm公司出售PalmSource且在Treo700w選用WindowsMobile後,Palm已經成為昨日黃花,風光不在。RIM的Blackberry和Apple為iPhone量身定做的OSX屬于專用系統,也不具備成為主流作業系統的能力。是以,手機主流作業系統,目前為 Symbian、Windows Mobile和Linux三足鼎立之勢。

  那麼這三者,誰可以成為未來的主流作業系統呢?

  Symbian是目前手機作業系統領域當之無愧的領頭羊,根據CIDC 2006年12月的統計資料,截至2006年10月,中國智能手機市場,Symbian為63.2%、Linux為30.3%、WindowsMobile為5.4%。Symbian由幾家大型移動通訊裝置商共同出資組建,其股東包括諾基亞、索愛、松下、三星等主流手機廠商,由于Symbian從誕生之初,就定位為手機專用的作業系統,是以在對GSM、GPRS、CDMA等移動通信協定的支援上具有得天獨厚的優勢,技術穩定而成熟,目前諾基亞所有智能手機和索愛大多數智能手機,都采用了Symbian系統,可謂擁有“天時”。

    而WindowsMobile作為軟體巨頭微軟的掌上版本作業系統,在與桌面PC和Office辦公的相容性方面具有諸多的優勢,得益于微軟在PC作業系統和辦公軟體領域一統天下的氣勢,WindowsMobile可謂擁有“地利”。

    至于Linux,由于具有良好的開放性,支援大多數主流處理器,具有天生的多使用者多任務特點,能夠降低手機廠商的成本,允許手機商根據實際情況,有針對性地開發适合自己的Linux作業系統,給與手機商更大的自由度,是以受到許多手機廠商的歡迎,摩托羅拉已經宣布未來手機将主要采用Linux系統,擁有越來越高人氣的Linux,可謂擁有“人和”。

  那麼在三者鼎立的市場格局下,未來誰将成為最主要的赢家,擁有最大的市場佔有率呢? 智能手機市場還屬于培育和快速發展階段,産業鍊上參與的廠商還在不斷豐富,充滿變數。要想在市場上站穩腳跟,最終還是取決于市場,取決于應用,取決于來自産業鍊上各環節包括手機廠商、軟體開發商、營運商的支援。可以預測的是,Symbian由于具有諾基亞和索愛等幾家手機巨頭的支援,憑借這些手機廠商的技術優勢和市場經驗,在未來的三年内Symbian仍然能夠保持在手機作業系統的優勢地位。但是,其市場佔有率會呈現逐漸下滑的趨勢,Linux和WindowsMobile将會逐漸不斷侵蝕Symbian現有的市場佔有率。

  三者之中,Linux發展迅速。從産業鍊角度而言,Linux最大的優勢是适合營運商整合終端的需求。在移動産業鍊領域,營運商是不容置疑的核心,在數字業務迅速發展的今天,營運商需要通過對終端的整合來更好地提供業務支援,以滿足使用者的多樣化需求。歐美日韓等已經提供3G服務的國家,3G手機大都采用了營運商定制的方式。為了對終端擁有更強的控制能力,營運商迫切需要像Linux這樣具有開放性的作業系統軟體。諾基亞和微軟對Symbian和WindowsMobile的強大影響和絕對控制力,将不可避免地與營運商的利益發生抵觸,如果任由他們做大,這可能“挾天子以令諸侯”,影響營運商對終端的控制力,是以,Linux手機作業系統将會為營運商所推崇。

  對于Linux而言,最大的威脅來自于内部,而到目前為止,還沒有形成一個統一的被多方接受的手機Linux标準,一場争奪手機Linux主導權的角力正在如火如荼地進行,遺憾的是,至今還沒有定論。   二 移動開發基礎之PK  

高通的BREW平台是一種為無線裝置提供開放式标準平台的瘦應用程式執行環境,是無線應用程式開發、裝置配置、應用程式釋出以及計費和支付的完整端到端解決方案的一部分。完整的BREW解決方案包括面向開發者的BREW SDK (tm)(軟體開發包)、面向裝置制造商的BREW應用程式平台和移植工具以及由營運商控制和管理的BREW分發系統(BDS)。利用該系統,他們可以輕松地将開發者開發的應用程式投入市場并協調計費和支付過程。利用營運商基于BREW的服務,使用者可以通過從營運商的應用程式下載下傳伺服器上無線下載下傳應用程式來自定義手持裝置。

  BREW是一種獨立于空中接口的技術,可以運作在諸多網絡中。但目前來講,由于 CDMA2000 1X的技術在現有的技術标準中是在商業運作中最為穩定和成功,并經過多次驗證。BREW在CDMA2000 1X網絡中可以充分利用其高速的資料傳輸速率,為最終使用者帶來極具沖擊力的使用者體驗。即:與晶片級電話功能的緊密內建,更高地展現聲音和動畫功能,用C/C++編寫的應用程式,運作起來速度更快,BREW擴充技術支援用Java和Flash等制作的應用程式端對端的商業模式提供透明的計費和支付紀錄,并可通達全球市場開發商,可以通過聯通博路無線技術有限公司從高通和聯通獲得支援。

  由于BREW平台是獨立于空中接口的技術,是以BREW與任何網絡的結合都非常平滑。同時,它又是一個端到端的解決方案,特别注重滿足整個價值鍊的所有要求。BREW平台包括針對營運商的BREW分發系統,針對開發商的SDK(軟體開發工具包),針對終端廠商的移植工具包,和BREW計費系統。BREW使中國聯通能夠為其使用者提供不斷豐富的應用。到目前為止,中國聯通基于BREW平台所開發的商用程式包括: Adventure(環球曆險記)、Any Flash (安凱軟體)、 City Online(都市線上)、 E4E Stock(股票)、 Hit Submarine(決戰四大洋)、 Instant Weather(天氣快報)、 Mobi Escape(莫比大逃亡)、 Suc Esc(星際生存)、Yao Ming Basketball(姚明籃球)等。

  為了應對移動資料的發展,推進無線電子商務等業務的發展,J2ME(Java 2 Micro Edition)即用于嵌入式系統的Java被引入無線領域。随着J2ME的應用,它為移動互聯引入了一種新的模型,即允許手機可以從網際網路上下載下傳各種應用程式,并在手機創造可執行環境離線運作這些程式。由于定義了可執行程式下載下傳的标準,并在手機上創立了可執行環境和程式開發語言,由此,在移動通信業第一次為軟體開發商創造了巨大的商業機會,手機使用者在得到豐富應用體驗的同時,也大大提高了營運商的網絡流量。

  J2ME的出現實際上是Java技術的回歸,作為Java 2平台的一部分,J2ME與J2SE、J2EE一道,為無線應用的用戶端和伺服器端建立了完整的開發、部署環境。由于專門針對多樣化的嵌入裝置和消費電子裝置,J2ME的結構與傳統的程式設計式語言和規範有很大的不同,它是由配置(Configuration)、概要(Profile)和可選包(Optional Package)三要素構成。J2ME技術由一個虛拟機和一組API組成,這組API适合于為消費和嵌入式電子裝置提供經過剪裁的運作環境。J2ME主要有兩種元件:配置(configuration)和概要(profile)。J2EE的一個關鍵優點是它能同時為多種連網的便攜機、桌上型電腦或其他工作站和伺服器提供服務,無論運作在這些客戶機上的軟體是Java applets 、獨立的Java程式、HTML浏覽器還是本地的應用程式,它都可以同時支援。利用J2ME,這些企業系統也可以直接與各種電子裝置進行通信。

  1999年,Sun公司将廣為普及的Java技術架構進行了重新定義,J2ME作為Java技術在行動電話等小型裝置的版本應運而生,它針對螢幕、電能和記憶體等資源有限的移動裝置進行了優化和定義,為了解決無線裝置多樣化的沖突,Sun依照各種裝置的資源特性将J2ME技術架構分為Java Virtual Machine(JVM)、配置(configuration)和說明(profile)三層,然後再進一步細分,這使J2ME能夠在每一類裝置的限制下工作,而同時提供最低限度的Java語言功能性。

  Microsoft(r) .NET 是Microsoft XML Web services平台。 XML Web services允許應用程式通過Internet進行通訊和共享資料,而不管所采用的是哪種作業系統、裝置或程式設計語言。 Microsoft.NET平台提供建立XML Web services 并将這些服務內建在一起之所需。對個人使用者的好處是無縫的、吸引人的體驗。

  .NET體驗:.NET體驗是相當個性化的,內建的最終使用者計算互動,它們通過新型智能裝置提供的連接配接的 XMLWeb 服務來實作。從技術層面上講,.NET體驗就是XML Web服務與(在适當時)本地應用程式代碼的結合。

從根本上講,Microsoft (r) .NET是關于使技術為人們所用,而不是強制個人适應其計算機的限制。利用.NET,無論何時何地,您總能連接配接到您首選裝置上的資訊。利用.NET,您可以保護您的個人資訊和企業資料,同時允許有您的授權的他人連接配接到這些資訊。

.NET架構:.NET架構是一個用于生成、部署和運作XML Web服務及其他應用程式的環境。它包含三個主要部分:公共語言運作庫、架構類和ASP.NET。.NET架構壓縮版是伴侶結構,它有一套程式設計接口,以供開發人員開發面向智能電話和PDA等移動裝置的軟體。

  .NET平台:.NET平台是一組開發工具和作業系統集,用來生成、公開和消費XML Web服務,通過智能裝置實作個性化的內建Web。它由四部分組成:.NET架構和 Visual Studio.NET ,伺服器結構,構造塊服務,智能裝置軟體.

    三 J2ME基礎  

a)         j2me是sun公司專門為開發小型的資源受限的消費型電子裝置的應用程式所提供的java版本,虛拟機大小僅僅數百KB,是以又被稱為”K-java”。

b)        j2se:實作了java開發所有的核心類庫

j2ee:除了支援标準的核心類庫外,還增加了支援企業應用開發的擴充類庫

j2me:支援标準核心類庫的子集合,還增加了支援嵌入式系統的擴充類庫

    四 J2ME技術架構

J2me之一——移動開發技術基礎
J2me之一——移動開發技術基礎

由于移動裝置具有各不相同的硬體配置,無法統一規範,是以定義了一種靈活的層次結構來規範衆多的移動裝置。

層次:主機作業系統、配置(JVM) 簡表 廠商可選包

配置:針對某一類裝置的最小的java平台,該層次定義了硬體所必須具備的能力了,定義了核心類庫和java虛拟機功能(CVM或者JVM),常用的配置有CDC和CLDC兩種。從某種程度上說,一個配置定義了Java 平台功能部件和庫的共同性,開發者可以假設這些功能部件和庫在屬于某一特定類别的所有裝置上都是可用的。使用者不太會見到這一層,但它對簡表(profile)實作者非常重要。

簡表:定義了特定系列裝置上可用的應用程式程式設計接口(API)的最小集。簡表在一個特定的配置上面實作。應用程式是針對特定的簡表編寫的,是以可以移植到支援該簡表的任何裝置上。一個裝置可以支援多個簡表。使用者和應用程式供應商看到最多的就是這一層。(MIDP就屬于這層,為移動資訊裝置簡表)

MIDP連同功能較低的CLDC配置一起為開發移動裝置應用程式提供了完整的JAVA平台。

廠商可選包 不同的裝置經常有一些特殊的功能部件,廠商可選包定義了架構在CLDC之上針對特定部件的API,個人可以認為是對MIDP的擴充和補充,通常是因為硬體具有充分的能力可以完成規格之中所制定的功能。

五 JTWI标準  

目前所有标示可以支援Java的手機,所支援的都是MIDP,幾乎所有的無線通訊廠商皆采用MIDP作為其開發程式的标準。在MIDP 1.0的時代,由于規格上本身的功能不足,使得許多廠商不得不加入自己專屬的API,例如震動、背光、聲音等擴充功能(例如:Nokia UI API),以彌補MIDP平台的不足。

到了MIDP 2.0,增加了許多衆所期盼的功能,但是,即使規格更清楚了,即使很多新功能都已經由JCP制定成标準的Optional Packages,這些問題依然無解。市面上的MIDP平台仍然處于混亂狀态。開發者必須在執行時期偵測各種專屬API和Optional Package的存在,這會增加多餘的程式代碼。平台的混亂會造成在某個裝置上可以順利安裝及執行,而到了其它裝置時,有可能無法執行,甚至有可能連安裝都有問題,是以開發者通常要開發好幾種版本的MIDP應用程式供各種廠牌、各種型号的裝置使用。

為了解決上述問題,進一步提高MIDP應用程式的可移植性,Sun Microsystems以MIDP 2.0規格為核心,設計了JTWI規格。未來的無線通訊平台,将不會隻有符合MIDP 2.0規格,而是必須要符合JTWI規格。這将是J2ME軟體在可移植性上的一大突破。JTWI(Java Technology for Wireless Industry)是一個統合性的規格,其目的是為了確定MIDP軟體的可移植性。是以JTWI規格除了規範無線通訊平台(特别是手機)所必須支援的 J2ME标準之外,也對既有規格中模糊不清的地方與以加強。是以新款的手機為了加強移植性,都會支援JTWI标準。JTWI隻是一個統合性的規範,并沒有制定任何新功能,目的隻是要統一目前平台混亂的現象,讓J2ME應用程式更具可移植性。JTWI主要分成幾個部分:

1 .規定平台必須支援的API。

2 .統一的應用程式執行環境。

3 .既有規格的理清與加強。

在規定平台必須支援的API的部分,JTWI規定至少必須支援CLDC 1.0、MIDP 2.0以及WMA 1.1:

    是以,隻要廠商宣稱支援JTWI平台,那麼代表一定支援CLDC 1.0、MIDP 2.0以及WMA 1.1規格之中的所有功能。另外,廠商可以根據裝置本身的能力,将CLDC 1.0提升成CLDC 1.1,可以加入MMAPI 1.1。是以實際上JTWI平台會有一下幾種組合方式:

其中,CLDC 1.1 + MIDP 2.0 + WMA 1.1 + MMAPI 1.1是最完整、功能最強平台。

在統一應用程式執行環境方面,過去讓J2ME應用程式開發者最為頭大的問題有以下幾項:

● 應用程式的大小可以多大?

● 執行時期的記憶體有多少可以使用?

● 有多少記憶體空間可以作為永久儲存之用?

由于規範中對于J2ME應用程式本身的大小和執行環境沒有很詳細地規範,使得每家廠商都有自己的規範,比方說Nokia限制應用程式最大隻能30 KB,Motorola則可以支援50 KB以上的應用程式。這些規範都嚴重地困擾着開發人員。這些問題在JTWI之中都獲得改善。

    JTWI 定義了應用程式的标準大小(Standard-size Application)。JTWI規定,可以執行J2ME應用程式的行動通訊裝置,至少可以容許大小為64 KB以上的程式主體(JAR檔案)、5 KB以上的應用程式描述檔案(JAD檔案)、以及30 KB以上的永續儲存空間、執行時期的記憶體(Heap Memory)為256 KB。上述大小隻是底線,廠商可以視裝置的實際能力支援更大的記憶體空間。标準應用程式大小(Standard-size Application)将成為一個計算用的機關,舉例來說,廠商會說這個裝置可以安裝20個标準應用程式,開發者所撰寫的程式可以說這個程式需要占掉3 個标準應用程式的空間。

    至于對既有規格的理清與加強的部分,我們将在往後章節一一說明。最重要的一點是,JTWI規定,該裝置所支援的任何媒體格式(例如圖檔、聲音、影像等)都應該能夠使用HTTP 1.1擷取,也就是說,存取這些媒體時所使用的URL都必須能夠接受http作為存取的通訊協定。

    六 J2ME之學習要點   (1)打好java基礎,面向對象程式設計,事件處理,線程等 這是本質       J2ME中使用到的Java基礎知識:

   1、Java文法基礎:包括基本資料類型、關鍵字、運算符等等

   2、面向對象的思想:類和對象的概念,繼承和多态等等。

   3、異常處理

   4、多線程

  J2ME中沒有用到的Java基礎知識:

   1、JDK中javac和java指令的使用

   2、Java基礎中的很多類在J2ME中沒有,或者類中的方法做了大量的精簡。是以建議在J2ME中熟悉類庫。

   3、Applet、AWT、Swing這些知識在J2ME中根本使用不到。

(2)了解WTK與廠商SDK的差別

    對于J2ME愛好者來說,基本上大家都是從SUN的WTK(J2ME Wireless Toolkit)開始的,但是對于實際應用來說,僅僅使用WTK是遠遠不夠的,是以在學習過程中,必須完成從WTK到SDK的跨越。

    廠商SDK最簡單的了解就是在WTK的基礎上增加了自己的模拟器和自己的擴充API。也就是說,你在使用廠商的SDK時,可以使用廠商的擴充類庫,例如Nokia的UI類庫,和廠商自己的模拟器而已。每個廠商的擴充API都不多,而且不盡相同。

  1、廠商SDK的下載下傳位址?

  ·Nokia

  Nokia不愧為手機行業的老大,對于j2me的支援也是一流的,有專門的網站提供SDK和各種文檔說明。

  網址是:http://forum.nokia.com.cn/sch/index.html

  ·Siemens

  Siemens對于J2ME的支援也不錯,它提供了SDK,模拟器需要獨立安裝。下載下傳位址如下:

  https://communication-market.siemens.de/portal/main.aspx?LangID=0&MainMenuID=2&LeftID=2&pid=1&cid=0&tid=3000&xid=0

  ·SonyEricsson

  SonyEricsson SDK以及自己的模拟器,下載下傳位址為:

  http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp

  http://mobilityworld.ericsson.com.cn/development/download_hit.asp

  ·Motorola

  Motorola提供了專門的SDK,内部包含模拟器,下載下傳位址為:

  http://www.motocoder.com/motorola/pcsHome.jsp

  ·SamSung

  SamSung也提供了專門的SDK和模拟器,下載下傳位址為:

  http://developer.samsungmobile.com/eng/front_zone/bbs/bbs_main.jsp?p_menu_id=1500

  ·NEC:

  NEC也提供了內建模拟器的SDK,下載下傳位址為:

  http://www.nec-mfriend.com/cn

(3)強調最後的真機測試