phoneMe는 Sun이 자사의 Java ME 소스를 Open Source로 공개한 공개 프로젝트입니다.
phoneMe는 크게 feature와 advanced의 두가지 분류로 나뉘는데요 feature는 CLDC, advanced는 CDC 기반의 프로젝트입니다.
이해하기 쉽게 말하자면 여러분이 사용하시는 대부분의 휴대폰에 들어간 Java 기술을 CLDC, DTV의 셋탑박스나 고성능 프린터와 같은 고성능 기기에 사용되는 Java 기술이 CDC라고 생각하시면 됩니다.
거두절미하고 위 사이트에서 phoneMe feature MR2 버전을 다운로드 받으면 Windows 환경에서 직접 컴파일하여 에뮬레이션 환경을 실행시켜 볼 수 있습니다. Java의 Virtual Machine 동작, Java ME의 각종 JSR 구현등에 대한 관심이 있으신 분들에게는 아주 좋은 자료라고 생각됩니다.
Build를 하기 위해서는 약간 고통(?)스러운 과정이 따르는데요. 일단, 필요한 개발환경을 설치해야합니다.
1) Cyg4ME - phoneMe 사이트에서 다운받으실 수 있습니다.
2) Visual C++ 6.0 w/ SP5 w/ Performance Pack 혹은 Visual C++ 2003
3) JDK 1.4.2
위와 같이 개발 환경을 설정하신 후에는 각종 환경 변수 들을 설정하여 JavaCall, PCSL, CLDC, MIDP 등의 모듈을 컴파일/빌드해야 합니다.
이 과정을 쉽게 한번에 수행할 수 있도록 간단한 shell script를 작성해보았는데요 파일로 첨부하였으니 참고하시기 바랍니다.
앞으로 개인적으로 phoneMe를 가지고 몇몇 실험을 해볼 생각이고요 흥미로운 내용이 있으면 여러분들과 공유하도록 하겠습니다.
참고로 제 PC에서 빌드하여 실행하고 있는 화면 snapshot을 하나 올립니다.
아래 link도 참고하시면 좋을 것 같군요.
http://wiki.java.net/bin/view/Mobileandembedded/PhoneMEBuilding
------------------------------------------------------------------------------
#!/bin/sh
################ JAVACALL #####################
# set your phonemeFeature home dir here
export MEHOME=/project-sun/phoneme_feature
# set your output folder here
export BUILD_OUTPUT_DIR=${MEHOME}/output
# set your javacall dir here
export JAVACALL_DIR=${MEHOME}/javacall
# set your javacall-com dir here
export JAVACALL_PROJECT_DIR=${MEHOME}/javacall-com
# set your javacall output dir here
export JAVACALL_OUTPUT_DIR=${BUILD_OUTPUT_DIR}/javacall
# build JavaCall
make -C ${JAVACALL_PROJECT_DIR}/configuration/phoneMEFeature/win32_x86
################ PCSL #####################
export PCSL_PLATFORM=javacall_i386_vc
export PCSL_OUTPUT_DIR=${BUILD_OUTPUT_DIR}/pcsl
# build PCSL
make -C ${MEHOME}/pcsl
################ CLDC #####################
export JVMWorkSpace=${MEHOME}/cldc
export JVMBuildSpace=${BUILD_OUTPUT_DIR}/cldc
export ENABLE_PCSL=true
# enable MVM?
export ENABLE_ISOLATES=true
# build CLDC
make -C ${JVMWorkSpace}/build/javacall_i386_vc
################ MIDP #####################
export MIDP_OUTPUT_DIR=${BUILD_OUTPUT_DIR}/midp
export CLDC_DIST_DIR=${BUILD_OUTPUT_DIR}/cldc/javacall_i386_vc/dist
export TOOLS_DIR=${MEHOME}/tools
export USE_MULTIPLE_ISOLATES=${ENABLE_ISOLATES}
export JAVACALL_PLATFORM=win32_i386_vc
make -C ${MEHOME}/midp/build/javacall