• 沒有找到結果。

系統設計:

在文檔中 風格化使用者介面 (頁 13-27)

第二章 背景知識

2-1 概述

近幾年來手機巿場的蓬勃發展,使得這塊領域已成為各家兵爭之地。Nokia, Motorola, Samsung 及國內各家手機廠商推陳出新的展出各種新型手機,莫不希 望提高巿場佔有率。TI,Qualcomm 等通訊晶片設計大廠不斷提出新的平台架構,

希望能夠提昇手機的效能。Symbian, Palm, 甚至 Microsoft 等研發各種手機平 台作業系統及應用,讓手機結合各式功能以達到最佳的使用效果。在各方的努力 之下,許多手機相關的技術及應用日漸成熟, Smart Phone、 Java Phone 等已 成為日常所見的名詞。而 Sun Microsystems Inc.所推的 Java 功能,甚至已成 為中、高階手機的基本配備。

Sun 於 1991 為了在消費性電子產品上的應用及因應網路的興起,發展出了 一套完全物件導向,不受平台限制的 Java 語言。Java 基本上由應用程式介面 (API) 及虛擬機器 (Virtual Machine) 兩部份所組成。 Java API 是各個軟體 元件的集合,提供各式類別給人使用。 Java Virtual Machine 是一個定義好的

2-2 Java 2 Platform, Micro Edition (J2ME)

由於嵌入式系統的發展逐漸大量的成長,於是 Sun 於 2000 年推出 Java 在嵌入式系統上的發展平台,Java 2 Platform, Micro Edition (J2ME)。嵌入 式系統在設計上原本就受限於硬體資源的有限,因此在設計的過程中,對於資源

圖 5:J2ME 軟體架構 (來源:java.sun.com)

J2ME 定義了在嵌入式及消費性電子產品上發展所需的相關規格,如 Java Virtual Machine (JVM) 及相關的程式庫和 API 等等。主要的應用可以分為兩 類,一類為 Connected Device Configuration (CDC),如 數位電視、settop-box 等;另一類為 Connected Limited Device Configuration (CLDC),如行動電話、

PDA 等。

在 J2ME 的軟體架構中, Configuration 定義了一群類似的裝罝中所 需要的最小平台需求,如記憶體的容量或運算能量等。其包含了 Java 語言、開 發裝置所需的最小類別程式庫及虛擬機器的特性。目前 J2ME 定義了兩種 Configuration: Connected Device Configuration (CDC) 及 Connected Limited Device Configuration (CLDC)。CDC 主要應用在固定、可分享資訊的 可連結裝置上,而 CLDC 主要應用在個人化、可移動性的可連結裝置上。

而 J2ME 中 Profile 定義了與各領域相關的類別程式庫和 API,與使用者息 息相關。Profile 是架構在 Configuration 之上,其主要目的是保證各個裝置 在某個 Configuration 之間的相容性。目前 J2ME 定義了一個架構在 CLDC 上 的 Mobile Information Device Profile (MIDP),應用在行動電話上開發環境 中。而在 MIDP 環境上開發的應用程式稱為 MIDlet。基本上, J2ME 在行動電 話上的開發平台架構如圖 6。

圖 6:J2ME 在行動電話上的開發平台架構 (來源:java.sun.com)

2-3 Symbian Java Phone 架構

根據巿調機構 IDC 的資料顯示,2003 年 Symbian 平台智慧型手機的出貨量 在巿場上的占有率有六成多 (Nokia 占 56.9%,Sony-Ericsson 占 8.5%)。

Symbian 是一家來自歐洲的嵌入式系統軟體廠商,其 Java Phone 的環境是架構 在 Sun 所規範的 PersonalJava Application Environment 版本,並提供 Java Phone API 的實作。整個平台環境最底層為 EPOC,是 Symbian 專門針對行動資 訊設備所設計的嵌入式作業系統,其上為 Java 虛擬機器及類別,再上一層是 Java Phone 的應用介面類別群組,最上層則是應用程式。

圖 7:Symbian Java Phone 架構 (來源:www.symbian.com)

圖 7 顯示出 Symbian Java Phone 的架構。架構最底層的 EPOC 是一個 32 位元多工的嵌入式作業系統,最主要全部以物件導向的概念來設計並以 C++的語 法來實作,其核心採用主從式架構 (client-server architecture),系統執行 時所有資源的分配都需要向 kernel server 來要求。另外,Symbian 還實作了 Java Phone 的 API,將手機相關應用所需要用到的功能,提供給上層應用程式 開發者容易使用。

2-4 Java Virtual Machine (JVM)

Java Virtual Machine (JVM) 是一個定義好的規格標準,擁有自己定義的 指令集及對記憶體的操控等等。因此只要任何符合這項規格,不論是以硬體或是 用軟體來實作,皆視為 JVM。目前較為常見的有 Sun 的 JVM,Microsoft 的 VM,

或是其它廠商自己開發的 VM,如 IBM 等。另外,也由於這是一個開放的規格標 準,所以有許多開放原始碼的 JVM 實作計劃,例如:Kaffe、Latte、SableVM 等 等。

2-5 Kaffe

Kaffe 是一個以 C 語言來實作 JVM 規格的開放原始碼計劃,其版權為 Gnu

Public License (GPL),任何人都可以修改原始碼並加以發佈,目前已經被 移植到相當多的硬體平台上,包括 x86、ARM、M68K、PowerPC、Alpha、Sparc、

MIPS 等等。Kaffe 在設計上將各個相關的功能設計成模組,包括 driver module 負責 kaffe 執行時控制整個流程的主要部份,class management modules 負責載入類別的 bytecode、查詢和更新各類別、物件、方法及例 外、並驗証類別在內部使用的一致性,class path management module 負 責管理對 Java 執行的相關類別路徑,class execution modules 負責連結 driver module 和 Java 解譯器 (interpreter) 或是 Java Just-In-Time (JIT) 並做 bytecode 的驗証和執行,data area management modules 負責 管理 kaffe 在執行時的資料,memory management modules 負責管理所有 kaffe 所使用的記憶體,native support module 主要是實作 Java Native Interface (JNI),helping modules 負責處理跟系統相關執行緒 (thread) 的工作。圖 8 是 kaffe 的架構。

圖 8:Kaffe 架構 (來源:kaffe.org)

第三章 系統設計:

3-1 概述

本篇所提出的目的是希望在支援 JVM 手機功能的平台上,以一個介面描述 檔作為使用者操作環境的呈現,更進一步的運用這種介面描述的方式,形成一種 風格式的使用者操作環境。

目前手機在設計的流程上,通常將底層機制和使用者介面視為一體,因此任 何使用者介面的更動都必需修改原始碼,使得手機在設計上極為不便。另外,這 樣的設計方式也由於是和底層的軟、硬體息息相關,所以若要重新開發新的手 機,等於要重新整個設計流程。針對這些設計上的不便,本篇提出一種以介面描 述語的方式,將使用者的操作環境以風格化的方式呈現出來。

3-2 目前手機設計架構

圖 9 是目前支援 Java 手機功能的平台架構:

圖 9:支援 Java 手機平台架構

在硬體平台上執行一個即時作業系統,目前較為常見的可能包括 SymbianOS、

Windows Mobile、PalmOS 以及 Linux 等。在作業系統上層為應用程式,原生的 應用程式 (Native AP:例如以 C 語言寫的程式) 直接利用作業系統提供的相關 API 來執行;而 JVM 亦被視為應用程式的一種, Java 的應用程式在執行時,

則執行在已經移植好的 JVM 上。

系統運作時,原生應用程式和 Java 應用程式基本上是獨立分開,當原生應 用程式在執行時,程式的執行結果即直接顯示在螢幕上;同樣地,當 Java 應用 程式在執行時,執行的結果也會透過 JVM 顯示在螢幕上。這樣的系統架構,畫 面的呈現各自由各個應用程式負責,顯示出執行的結果。因此,這樣的架構並無 法形成一個風格一致的畫面呈現方式。

3-3 本篇架構

本篇提出以介面描述語法來呈現使用者操作環境,因此對於任何希望顯示在 螢幕上的畫面,都要能夠適當的呈現出來。所以我們的設計考量在於,如何將畫 面的呈現以一種一致的方式呈現出來,因此我們將原來支援 Java 功能的平台修 改成圖 10 的架構:

圖 10:本篇提出的系統平台運作架構

和原來平台架構有所不同的差異在於所有有關畫面的處理,都是以 JVM 為主。

原生應用程式在執行時,其原本欲顯示在螢幕畫面上的輸出結果,在更改的架構 下現在則透過 Java 所定義的 Java Native Interface (JNI) 經由 JVM 來呈 現。另外在 JVM 的上層,設計一個介面管理程式 (User Interface Manager),

將使用者介面相關的動作統一藉由使用者管理員來處理。使用者管理員負責提供

變,只是在執行結果的畫面輸出上,藉由介面管理員來呈現。這樣的架構,可達 到本篇提出以介面描述語來呈現使用者操作環境的一致效果,又無需過多的修改 而可執行現存的應用程式。

這樣的運作模式類似在 Linux 上執行 X-Window 的圖形介面環境。

X-Window 運用主從式架構 (client-server) 的方式,提供相關的圖形程式庫給 程式開發者使用,讓應用程式的外觀顯示呈現出同一種樣式。目前在 Linux 上

方式,而且各個畫面之間相連結關係,是依據上一層的選項往下一層選取,類似 父-子 (parent-child) 的關係,所以我們採用樹狀的階層式架構來表示這種相 連結的結構。在各個畫面的設計上,仿效樹狀結構的節點,依照各種不同畫面的 類別,記錄著父節點 (parent node) 或是子節點 (child node) 相關的連結資 料,讓各個畫面即依照這樣的連結方式,因使用者不同選取的選項而呈現出相關 的畫面。

UIM 在整個設計上利用 XML 的標籤 (tag) 方式,將每個畫面依據上、下階 層不同的選項關係相互連結,形成樹狀結構。透過這樣的運作方式,再將畫面設 計成風格一致性的顯示效果,即可讓手機的整個操作環境呈現出風格化樣式的感 覺。

3-5 介面描述語法設計

在本篇提出的系統平台運作架構中,使用者介面管理員 (UIM) 依據介面描 述的方式而呈現出相關的畫面。在介面描述語法的設計上,我們定義了 menu,

icon,listItem,fnComponent 等 4 種標籤,然後因為不同畫面的型態而需要不 同的參數。以下就各個不同畫面的作用一一加以敘述:

1. menu:呈現出包含有選項的畫面。主要的參數有 name,type,previous,

及 next。額外的選項參數有 leftSoftkey,middleSoftkey,

rightSoftkey,topLabel。

表 1:menu 畫面的主要參數

IMAGE_CONTAINER 包含一個以上圖片的畫面 ICON_CONTAINER 包含各種 icon 選項的畫面

LIST 包含各種條列式選項的畫面 表 3:menu 畫面的型態

而不同型態所需的額外參數有所差別:

menu 的型態 所需的相關參數

IMAGE_CONTAINER image:指定相關的圖片 ICON_CONTAINER icons:畫面包含的 icon 數目

LIST lisTems:條列式選項的數目 表 4:menu 畫面不同型態所需的額外參數

name 定義此畫面的名字 type 畫面的種類 previous 連結前一個相關的畫面

next 連結下一個相關的畫面

舉例而言:

<menu name="ISP" type="IMAGE_CONTAINER_PANEL" image="idle.gif"

previous = "ISP" next="MainMenu">

表示這是名為 ISP 的包含多個圖片 的畫面,其圖片為 idle.gif,上一個畫面為自己,下一個畫面指到名 為 MainMenu 的畫面。

2. icon:呈現在 ICON_CONTAINER 的 menu 畫面中的 icon 選項。參數包 含 name,image,posX,posY,parent,link。

name 定義此 icon 的名字

4. fnComponent :呈現應用程式執行後所需的畫面。主要參數包含 name,

type,previous。基本上,應用程式執行的結果所顯示出的畫面有兩種 可能,文字相關訊息或是圖片相關的顯示。因此我們定義了 TEXT 及 IMAGE 兩種型態作為應用程式執行所需的畫面結果。

name 定義應用程式執行所需畫面的名字

name 定義應用程式執行所需畫面的名字

在文檔中 風格化使用者介面 (頁 13-27)

相關文件