小摸的趕羚羊世界-SUN分部

« 世界上最短又最長的距離 – 讓我們更了解... | Main | 千頭萬緒 : 學習多執行緒程式設計的好書 »

20050908 Thursday September 08, 2005

基本Java手機程式學會了,接下來看什麼書? 三本強化J2ME設計功力的好書

2000SUN推出KJava至今,Java手機程式的發展,已經邁向第五個年頭了。您一定會發現,現在市面上的手機,不管高階或低階,支援Java就像手機一定要支援收發簡訊一樣理所當然。Java隨著手機普及率的增加,理所當然地成為最廣泛的目的平臺。可是,相較於其他技術,教導開發人員如何開發Java手機程式的書,並沒有因為這個平臺越來越廣泛而變多。目前市面上講述Java手機程式設計的書,十之八九講述基本概念。『我已經有了基本的Java手機開發能力,接下來我要看哪些書,讓我這方面的能力更進一步呢?』這是許多開發人員最常在公開論壇詢問的問題。

要回答這個問題,可以從兩個方面來思考,首先是手機應用程式發展趨勢這個面向,另一個面向則是手機平臺的不一致性。我們先就手機應用程式的發展趨勢來看。

即 使目前手機內建的處理器運算能力已經高於幾年前的個人電腦,連線速度也比過去還要快,但是手機永遠是手機,在目前的手機設計無法突破之前,手機永遠只能有 一個無法滿足人類視覺需求的小螢幕,鍵盤上的按鈕永遠比需求少一個,更無法使用滑鼠來操控。這一點大大地限制了手機上所能開發的應用程式類型,因此,即使 理論上可以開發各式各樣的應用程式,礙於手機先天的特性,導致Java遊戲幾乎就是Java手機應用程式的代名詞。

大部分的人不喜歡拿手機辦公事,但是肯定不會拒絕在無聊的時候,拿起手機玩玩輕鬆的小遊戲,這也是商機的所在。明白了這個發展趨勢,身為一個開發人員,要讓自己的技術能力更進一步,充實遊戲設計的知識肯定是重點。可是市面上講述遊戲設計的書籍,多半是以DirectXOpenGL為主角,配合C/C++講述。縱使有幾本講解Java遊戲設計的書,也是以AWT/Java 2D/Java 3D為基礎,這些API都是手機程式開發人員無法存取的功能。雖然說遊戲設計的概念大同小異,但是上述書籍總是有隔了一層的感覺。

Martin J. Wells所撰寫的《J2ME Game Programming》,正是一本可以滿足Java手機開發人員需求,又沒有上述書籍缺點的好書。這本書以MIDP內建的LCDUI為基礎,說明如何應用標準LCDUI API之中的低階模式來設計遊戲,本書也提到如何擅用Game API,減輕遊戲開發的負擔。

本書最有特色的部分,在於說明『如何讓您的Java手機程式賺大錢』,不像典型技術書籍只教導我們如何發揮某種技術的最大功能(當然,技術好與賣的好,本身還是有某種程度的關聯)。因此這本書有特別的章節介紹移植(porting相關議題,因為程式能夠在越多手機上執行,目標市場才會越大,才會有越多人購買。本書亦有章節特別介紹本地化(Localization,我們所開發的程式如果能用越多國家的語言呈現,您的客戶就不會僅侷限於中文使用者,使用日文、俄文等其他國家的人,一樣會讓您賺進更多鈔票。

身為一個技術人員,有時候很難了解,一個產品要賣的好,除了技術之外,行銷和販售佔了更大的比重,有了好的行銷包裝,可以把60分的爛產品講成100分的好產品,有了好的銷售管道,除了可以把東西賣給原本只有一點購買意願的人,甚至可以賣給本來不需要的人。作者了解行銷和販售的重要,所以書中有兩個章節,分別講解如何讓我們的程式賣相更好,以及如何擅用通路(Sale Channel讓我們的程式賣的更多。

在諸多遊戲類型中,可以讓人隨時開始享受樂趣,又可以充分娛樂的遊戲類型,莫過於動作遊戲,動作遊戲中,最吸引人的,大概就是射擊類遊戲了,筆者想起學生時代,總會被射擊遊戲的華麗聲光效果吸引,無論是家裡的遊戲卡帶,或是貢獻給外面遊樂場的硬幣,都以射擊遊戲最多。

要如何設計好的射擊遊戲,如何完成裡頭超炫的武器及特殊技,都可以在松浦健一郎所撰寫的《射擊遊戲演算法與程式原理(Shooting Game Algorithm Maniax)》書中,得到很好的答案。絕大多數的人都可以同意,日本人對於射擊遊戲的設計,已經到了爐火純青的地步,這本書原文以日文撰寫成,本來就是一本開發射擊遊戲的必備寶典,加上林世榮、黃政凱先生優質的翻譯,讓中文讀者可以享受到和原文一樣的品質。

本書雖然以C/C++為開法語言來實做演算法,但是幾乎沒有用到C/C++的特性(例如:函式庫、指標),這些程式碼大部分可以在不經修改的情況下,全數通過Java編譯器的編譯,這對Java語言的使用者是一個福利。

這本書還有個非常貼心的地方,就是作者明白,在目前大部分的Java手機執行環境或是使用較老舊處理器的裝置,沒辦法使用浮點數,所以作者也針對這些無法使用浮點數運算的情形,提供整數的解法,這是目前手機遊戲開發人員最需要的資訊,也是本書最有價值的地方。

最後,我們講到手機平臺的不一致性。許多人會問,Java不是號稱跨平臺嗎? 為什麼還會有不一致的情形發生呢? 這是因為手機先天上的多樣性,比方說螢幕的大小,按鈕的配置,解析度,色深等,處於百家爭鳴的情形,這是一個很難改變的現實(如果所有的手機都跑Windows,外觀都大同小異,這個世界肯定無趣許多)。因此,即使Java有再好的架構,也無法讓程式完全的跨平臺(可以執行,但是會怪怪的),這也是為什麼《J2ME Game Programming》這本書需要花許多篇幅討論移植問題的原因。

再者,每家手機廠商都會為自己的Java執行環境增添特殊的功能,一來綁住開發人員和使用者,一來可以讓Java程式更能夠發揮手機的特性(例如:照相機、藍芽、多媒體等),貼近手機的特色。因此,如果只想開發一般的Java手機程式,上述的書籍就已經足夠,但是要發揮各廠牌手機的特色,就必須多閱讀官方釋出的技術文件,Nokia的手機就到Forum Nokia尋找技術文件、SonyEricsson的手機就到SonyEricsson官方開發網站、Motorola的手機就到MotoCoder網站。

但是,藉由技術文件取得的資訊畢竟是離散的,要學習完整的知識,還是需要一本專門介紹的書才可以。市面上唯一一本專注特定廠商的Java開發專書《Developing Scalable Series 40 Applications : A Guide for Java Developers》,以Nokia Series 40手機的特性為基礎,說明如何開發Java應用程式。

Nokia Series 40是目前Nokia最低階的手機,顯示螢幕最小,操作方式受限較大,要利用這種手機來開發令人滿意的應用程式,需要不同於一般的使用者介面設計與操作邏輯,這本書雖然只專注於Nokia手機,而且還僅僅只是專注於Nokia某一個系列的手機,但是裡頭所呈現的手機程式設計觀,測試與除錯方法,都是一個手機程式開發人員值得去深入探索的。
(2005-09-08 21:05:28.0) Permalink Comments [0]

Trackback URL: http://blogs.sun.com/moli/entry/%E5%9F%BA%E6%9C%ACjava%E6%89%8B%E6%A9%9F%E7%A8%8B%E5%BC%8F%E5%AD%B8%E6%9C%83%E4%BA%86_%E6%8E%A5%E4%B8%8B%E4%BE%86%E7%9C%8B%E4%BB%80%E9%BA%BC%E6%9B%B8
Comments:

Post a Comment:

Name:
E-Mail:
URL:

Your Comment:

HTML Syntax: NOT allowed