• 沒有找到結果。

二、 相關研究

2.1 手機應用程式開發之相關研究

2.1.1 為什麼要選用 Java

我們知道Java 的一個重要特性就是跨平台,也就是說工程師只要撰寫一次 程式碼,便可以在各種不同的平台上執行,亦即「Write Once, Run

Everywhere」[5],這個特性對手機上應用程式的開發更是重要,為什麼這麼 說呢?因為現在手機進步越來越快,使用量也越來越大,所以有越來越多的廠商 投入手機的開發及生產,但每一家廠商的手機可能有自己的作業平台,若想要在 手機上開發應用程式,就必須針對每一種作業平台來開發在上面可以執行的應用 程式,這個工程將十分浩大,此外若有一種新的作業平台的手機再推出,則必須 再修改或重新開發新的應用程式,這樣的作法就變得不切實際。我們希望開發應 用程式主要花時間和精力在應用程式的功能及可用性,而不是在平台的研究,因 此選用Java 來作為手機上的開發程式,如此,只要手機廠商在其作業平台上提 供符合規格的Java 虛擬機器(Java Virtual Machine)即可執行我們所開發 的應用程式。

Java 的函式庫是被分類過的,也就是說所有的函式是被分門別類地放在不 同的類別下,因此稱為類別函式庫。在Java 規格中有一組核心類別函式庫(Core Class, 即 java.*)以及擴充類別函式庫(Extended Class, 即 javax.*),根 據這兩種類別所支援的程度,Sun MicroSystems 區分出三種不同的 Java 版 本,如下圖所示:

圖三 Java 2 版本函式庫關係

圖三說明了越往同心圓外面,支援的類別函式庫越完整,反之,越往同心圓 內部則支援的類別函式庫越少。而J2ME 便只有標準類別函式庫的子集合,但另 外再加了一些支援嵌入式系統的擴充函式庫,如javax.microedition.io.*類別 函式庫,主要是用來提供嵌入式系統、掌上型系統等較小型的作業平台的開發套 件。

本研究所使用的Java 版本便是 J2ME。

2.1.2 J2ME 介紹

在J2ME(Java 2 Platform, Micro Edition)中為了達到更有彈性的架構,

提出了Configuration 和 Profile 兩種概念。所謂 Configuration 是針對某一 個範圍內的裝置所定義的一些基本且通用的類別函式庫,例如有線裝置和無線裝 置是使用不同的Configuration,而 Profile 則是對於特定類型的裝置定義一組 通用的函式庫,因此每一種不同類型的裝置架構即使架構在同一個

Configuration 上也可能擁有不同的 Profile,例如手機和 PDA 兩者架構在同樣 為行動裝置的Configuration 上,但 Profile 並不相同。

圖四 J2ME 架構圖

上圖即為J2ME的架構圖,J2ME在設計規格時,導循著「對於各種不同裝 置而造出一個單一的開發系統是沒有意義的事」這個基本原則[12][5],因此 將嵌入式裝置大致分成兩種,一種是運算功能有限、電力供應也有限的裝置,如 手機、PDA等,針對此類裝置,J2ME定義了CLDC(Connected Limited Device

Configuration);另一種是運算功能相對起來比較好、電力供應上相對也比較充

足的裝置,如冷氣機、電冰箱等等,針對此類裝置,J2ME定義了CDC(Connected Device Configuration)。

表一 CLDC及CDC最少配備需求

本研究是利用MIDP(Mobile Information Device Profile)這個 Profile 來開發手機上的應用程式,由圖四我們可以知道MIDP 是架構在 CLDC 之上,

因此所有CLDC 中的函式庫都可以在撰寫 MIDP 程式時呼叫使用,下一節將會 更詳細介紹MIDP。

2.1.3 MIDP 介紹

MIDP(Mobile Information Device Profile)主要是針對小型且資源受限 制的行動裝置而發展的Profile,可供廠商發展應用的類別函式庫[5][10]。

在MIDP 內最基本的執行單位是 MIDlet,即一個可以執行的手機應用程式之基 本單位,包含了程式執行時所需要的類別檔(.class)及資源檔(如圖片、文字檔 等),而多個 MIDlet 就組成了 MIDlet suite。

在手機上執行的MIDlet 應用程式是被包裝成 Jar 檔,且每個 Jar 檔會有一 個相對應的描述檔(Description File, *.jad),用來描述該 Jar 檔的基本資料 以及內含的MIDlet 之相關資訊(類別名稱、圖示、程式名),Jad 檔是一個外部 檔案,亦即不包含在JAR 檔內部;除了 Jad 檔這個外部檔案以外,在 Jar 檔內 也有一個內部的描述檔,稱為清單檔(Manifest File),也是用來描述這個 Jar 檔的基本資料,以及內含的MIDlet 之相關資訊 (類別名稱、圖示、程式名)。

接著我們來看一個MIDlet 的開發流程,如下圖所示:

圖五 MIDLet 開發流程圖

與一般開發Java 應用程式一樣,需要經過撰寫程式碼、編輯、包裝成 Jar 檔等過程,但開發手機上的Java 應用程式還需要經過「預先審核」這個步驟,

以下說明一下這個步驟的用意。首先我們先來看傳統的Java 執行程序:

圖六 傳統Java 程式執行程序

基於安全的考量,任何要被執行的類別檔都要經過Byte Code 審核器(Byte Code Verifier)的驗證,以防止程式被惡意更改,導致傷害到系統,因此要經 過審核過程,確定安全後才能被執行,但這個過程如果要放到手機裝置上,可能 會浪費許多資源,且執行速度也會減慢許多,因此在開發手機應用程式的過程中 加入預先審核的動作,讓審核這個動作可以在PC 上進行,不僅可以加速程式在

手機上的開啟時間及執行時間,更能減少裝置電量的耗費,以下即為J2ME 程式 的執行程序圖。

圖七 J2ME 執行程序

相關文件