一、JavaME CDC小簡介
從JavaME CDC的全名"Java Micro Edition Connected Device Configuration",可以大致看出他的特性。更進一步的介紹可以參考Sun官方網站,以及wikipedia的介紹。遠祖可以追朔到Personal Java(1999)。
JavaME CDC歷代版本(2001-2007):
- CDC1.0 (based on JavaSE1.3)
- CDC1.0.1 (based on JavaSE1.3.1)
- CDC1.1 (based on JavaSE1.4)
此後設立open source專案,名為phoneME Advanced,基於JavaME CDC1.1,相關資訊可以參考phoneME官方網站(CDC是"phoneME Advanced",不是"phoneME Feature",不要搞錯啦!)。
目前Sun官方的JavaME CDC source code已無法自由取得,網路尚能取得最新的版本為CDC1.0.1,相關資訊及編譯筆記可以參考這篇。如果沒有特殊需求還是從phoneME Advanced入門是比較好的選擇。
二、編譯 phoneME advanced (Linux/x86)
如果是在Linux/x86環境,參考phoneME Advanced MR2 Getting Started Guide中的文章:Build Recipe: Linux/x86 Host Environment 應該可以順利完成。如果發生問題通常是相關工具程式沒有裝好設好。
第一個常碰到的問題是phoneME advanced MR2基於JavaME CDC1.1,意思是說要用JDK1.4才行!在編CDC1.0.1時我試過用JDK1.5/1.6在編譯時指定為1.4相容,但還是過不了。結論就是請用"Sun" JDK "1.4"。
第二問題繼承第一個問題。目前大部分GNU/Linux distribution內建的JRE/JDK為IceTea之類的,要設定換成Sun JDK 1.4才行。一般用update-alternates就能完成,但是常常只有設定java和javac,忘記"javah"!這個會用到。
第三個問題是phoneme advanced的Makefile寫的不太好,如果不是放在根目錄處理(e.g. /phoneme_advanced_mr2)可能會發生問題。(phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip有這個狀況。)
三、編譯 phoneME advanced (Win32/x86)
phoneME沒有提供Win32-x86的bundle release,要自己到 code repository抓。
編譯環境從無到有,過程簡單列表如下:
- 裝jdk1.4; 設定path(check java, javac, javah)
- 裝cywin and packages(binutils, bison ,diffutils ,flex ,gcc-g++ ,make ,perl ,subversion ,zip)
- 裝VC2005(VC8) express版 + win2003R2 platformSDK,或VC2005標準版(內建platformSDK) ;記得用windows update更新
編譯過程和Linux/x86差不多,值得注意的是win32-x86的Makefile好像有bug,在改某些Makefile flag時要先make clean,不能像Linux可以直接改。

5 意見:
很有帮助,我参考了您的文章,在ubuntu下编译成功了。
貌似编译pp不需要把目录建立在根目录。
phoneME advanced 编译还需要在Redhat 7.1 环境下吗?
lan:
不需要,根據網站的訊息,phoneME advanced主要是在ubuntu上開發測試的。
Hi, Petertc:
Thanks. 在PC上已经能编译并运行了.现在我想把他porting 到mips 的一块板子上, 不知道你有没有相关的经验. 目前我只把CVM_TARGET_TOOLS_PREFEX 设定成交叉编译环境的路径, 看上去还是问题多多.
cindy lan
lan:
我沒有porting到MIPS的經驗,愛莫能助。可以參考官方論壇或porting guide的資料看看:
http://forums.java.net/jive/category.jspa?categoryID=56
http://wiki.java.net/bin/view/Mobileandembedded/PhoneMEAdvancedGSGTarget
good luck, 成功後也歡迎回饋網友們吧!
張貼意見