首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

CVM 編譯實戰筆記:在 Linux 上建置 CDC Personal Profile 環境

     編輯:J2ME

CVM 編譯實戰:從原始碼建置 CDC Foundation 與 Personal Profile

記錄在 RedHat 9 環境下編譯 Sun J2ME CDC Foundation Profile (cdcfp) 與 Personal Profile (PP) 的完整流程、踩坑經驗與環境變數設定,供嵌入式 Java 開發者參考。

前置需求與下載清單

  • JDK 1.4.2 (必須 1.4.x,1.3.1 會編譯失敗)
  • J2ME CDC Foundation Profile 1.0.1 原始碼 (J2ME_cdcfp-1_0_1-fcs-src-b12-Linux-i686-14_May_2002)
  • Personal Profile 1.0 二進制版 (j2me_pp-1_0-bin-Linux-i686) 或原始碼
  • 相依套件:compat-egcs-6.2, compat-glibc-6.2, pdksh-5.2.14 (ksh 必須,bash 下編譯會失敗)

關鍵環境變數設定 (~/.bashrc)

JAVA_HOME=/usr/java/j2sdk1.4.2_08
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH

修改後重啟終端機生效。

編譯 CDC Foundation Profile (CVM)

  1. 解壓原始碼,進入 build/share/defs.mk,修改 CVM_GNU_TOOLS_PATH=/usr/bin (原為微軟工具路徑)。
  2. 進入 build/Linux-i686 目錄,以 ksh 執行:
# make CC=egcs CVM_JAVABIN=/usr/java/j2sdk1.4.2_08/bin CVM_DEBUG=true J2ME_CLASSLIB=foundation
  • CC=egcs:指定編譯器 (需安裝 compat-egcs)。
  • CVM_DEBUG=true:產生除錯版 CVM。
  • J2ME_CLASSLIB=foundation:建置 Foundation Profile。

編譯成功後,bin/ 目錄下產生 cvm 執行檔。

測試 CVM

cd bin
./cvm -Djava.class.path=../testclasses.zip HelloWorld

終端機顯示 Hello World 即成功。

安裝與測試 Personal Profile (PP)

  1. 解壓 j2me_pp-1_0-bin-Linux-i686 (二進制版免編譯)。
  2. 撰寫 AWT 測試程式 HelloWorldPersonal.java:
import java.awt.*;
import java.awt.event.*;
public class HelloWorldPersonal extends Frame {
    public void start() {
        Label label = new Label("HelloWorld from J2ME personal");
        add("Center", label);
        validate();
    }
    public static void main(String[] argv) {
        HelloWorldPersonal app = new HelloWorldPersonal();
        app.start();
        app.setSize(220, 200);
        app.validate();
        app.show();
    }
}
  1. 編譯 (需指定 PP 的 bootclasspath):
javac -bootclasspath /usr/java/personal/btclass.zip:/usr/java/personal/lib/personal.jar HelloWorldPersonal.java
  1. 執行:
cd personal/bin
./cvm -Djava.class.path=/usr/java/personal/ HelloWorldPersonal

彈出視窗顯示訊息即成功。

後續課題與心得

  • 下一步:將 CVM 移植至 ARM 開發板,實現 Jini 服務。
  • 需尋找更好的 IDE (命令列編譯太繁瑣)。
  • CDC 優勢:完整 Java 2 核心庫、支援 RMI/Jini、32 位元 CPU、2MB ROM + 512MB RAM 門檻,適合工控設備。

附錄:J2ME 架構簡介 (CLDC vs CDC)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性CLDC (KVM)CDC (CVM)
目標裝置資源受限消費性電子 (手機、PDA)較強嵌入式設備 (工控、機頂盒)
記憶體需求128KB 運行, 512KB ROM512KB RAM, 2MB ROM
CPU16/32 位元32 位元
網路無強制要求至少 UDP, 可擴充 TCP/IP
GUI無內建, 需 MIDP無內建, 需 PP/PBP
Java 版本對等約 JDK 1.1 (30-80% 速度)Java 2 核心子集