J2ME中的通用聯網框架簡介_JSP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:J2ME平臺簡介
      做J2ME應用開發的程序員也許經常會被一些名詞或者概念所迷惑,比如Personal Basic Profile和Personal Profile有什么關系?基于CLDC的應用程序能夠無修改的移植到基于CDC的設備上嘛?要

      通用聯網框架在J2ME平臺中扮演著十分重要的角色,如果沒有它,我們寫的應用程序對外人來說只能說“神秘”,而應用了通用聯網框架進行聯網的程序就顯得“神奇”了。本文將對通用聯網框架進行整體的分析,具體的應用會在后續的文章詳細講述。

      Generic Connection Framework(以下簡稱GCF)是在CLDC中定義的,由于移動信息設備的資源受限特性,所以java.net和java.io包不適合在這里使用。現實世界中使用著各種各樣的網絡通信協議,這使得設計好這個框架非常不容易,至少我是這么認為的。然而當我們分析GCF的時候可以清楚地發現它有如下幾個特性:基于接口設計,便于擴展、提供創建連接的工廠方法、使用標準URL簡化了程序員的工作。

      當我們察看CLDC1.1的api的時候我們可以發現其中定義了8個接口、一個Connector類和一個ConnectionNotFoundException異常。在MIDP2.0中進行了擴展,提供了HttpConnection、HttpsConnection接口,這樣使得MIDlet具備了通過Http或者Https協議與server通信的能力,提供了SocketConnection、ServerSocketConnection、UDPDatagramConnection接口,使得MIDlet能夠在TCP/IP層通過socket進行通信或者使用數據報進行通信的能力。至于CommConnection以及PUSH技術在這里不講述。

      結合GCF的接口層次圖來了解通用聯網框架是最好的辦法,下面我們看看它的層次結構。

      <J2ME中的通用聯網框架簡介(圖一)

      最上層的接口是Connection,其他的接口都從他那里繼承。在Connection中只定義了一個方法close()。在我們的現實世界中通常使用的是分組數據交換和電路交換,因此在聯網框架中相應的定義了DatagramConnection和StreamConnection。由于在基于流傳輸中我們需要對輸入流和輸出流通是具有操作的能力,因此StreamConnection擴展了InputConnection和OutputConneciton,我們經常使用的Conn.openInputStream(),conn.openOutputStream()方法都是在這兩個重要的接口中定義的。StreamConnectionNotifier接口定義了連接監聽器應該具備的能力,它的方法acceptAndOpen()方法返回一個StreamConnection類型的連接,ServerSocketConnection繼承了StreamConnectionNotifier接口,這樣如果你做socket server的時候就可以通過使用這樣的URL,socket://:port在你的設備上建立監聽端口等待連接。SocketConnection繼承了StreamConnection正好可以和ServerSocketConnection交相輝映。UDPDatagramConnection則是為了在分組數據交換中使用,他繼承了DatagramConnection接口。ContentConnection接口中只定義了三個方法getEncoding(),getLength()和getType(),我們非常熟悉的HttpConnection就是他的子類,在HttpConnection中定義了大量的操作,Http聯網功能也是MIDP規范中要求廠商必須支持的連接方式。現在你應該對層次比較清楚了吧,繼續往下看如何使用GCF。

      GCF的是使用非常簡單,主要集中在Connector的open()方法上。我們要做的就是提供一個標準的URL參數傳遞給open方法,例如為了得到一個HttpConnection我們應該寫類似下面的代碼,

      String url = “http://myip:myport/myservlet”;

      HttpConnection httpConn = (HttpConnection)Connector.open(url);

      我們應該清楚這個URL的格式如何定義的,有興趣的話你可以參考RFC2396,我這里只列入他的基本格式:{scheme}:[{target}][{parms}] ,針對不同的網絡通信方式,你要做的就是寫出不同的URL,并通過強制轉換得到你需要的連接類型。這篇文章不提供如何進行數據傳輸的操作,你可以參考MIDP API文檔中HttpConnection接口中的詳細說明,也可以參考下面這篇文章http://blog.csdn.net/mingjava/archive/2004/07/07/36528.aspx

      在數據傳輸結束后不要忘記關閉連接,這時候你就應該使用Connection中定義的close()方法了。

      try {

      // Here close any open streams

      conn.close();

      } catch (IOException ioe) {

      // Handle the exception.

      // Throw the exception, ignore it, or return an error.

      }

      至此,關于GCF的整體介紹就結束了。我們應該清楚GCF的接口層次關系、掌握如何使用GCF。同時不要忘記把這個框架的設計銘記于心,事實上我覺得CLDC和MIDP中很多設計都值得我們去多多的思考。

        

      分享:J2ME Timer 使用指南
      J2SE 1.3 里有一項新的改進,那就是提供了一個可以更簡單的實現多任務調度執行的定時器類,調度由一個后臺線程完成。MIDP 同樣也包含了這一改進,使得 J2ME 開發人員從中受益。 J2M

      來源:模板無憂//所屬分類:JSP教程/更新時間:2008-08-22
      相關JSP教程