2006年3月份,netbeans.org发布了mobility pack 5.0 for cdc,这样使用netbeans的开发者可以很容易地开发基于cdc的java me应用程序了,唯一要做的就是安装mobility pack 5.0 for cdc插件。本文介绍如何搭建cdc的开发环境,编写一个简单的入门程序。相比基于cldc的java me开发,cdc的相关技术方兴未艾,还有待我们去挖掘和探索。
目前只有sonyericsson和nokia提供了对cdc开发的支持,sonyericsson推出的sonyericsson cdc扩展平台可以很好地与netbeans集成到一起,并且sonyericsson的m600和p990都支持cdc。本文以sonyericsson cdc扩展平台为例搭建开发环境,另外nokia 的s80同样提供了对cdc的支持。
首先我们需要安装以下软件:
1)j2sdk 1.4.2 or jdk 5.0
2)netbeans ide 5.0
3)mobility pack 5.0 for cdc
4)uiq sdk 3.0 beta
5)sonyericsson cdc扩展平台1.0 beta
6)sonyericsson m600 cdc 扩展包
7)sonyericsson p990 cdc 扩展包
这些软件在j2me开发网的下载中心都能找到,请登录http://www.j2medev.com/soft/index.asp下载。
首先安装jdk,其次是netbeans ide 5.0,然后是mobility pack 5.0 for cdc和相关的扩展软件。然后我们需要把cdc平台集成到netbeans之中,从菜单选择工具――java 平台管理器,然后选择java me平台cdc模拟器,如下图所示:
然后找到uiq sdk 3的安装目录,将其添加到netbeans ide中。
mobility pack 5.0 for cdc可以很好地支持cdc开发,包括:
- 支持cdc开发,包括sonyericsson cdc扩展平台和nokia s80平台
- 项目向导,一步步地指导你编写一个cdc项目
- 可视化ui设计器,继承自matisse项目,允许使用拖拽的方式开发awt的界面。
- 创建symbian 程序安装包
- 提供了一个symbian mbm编辑器
- 支持junit单元测试框架
下面通过一个范例说明如何使用netbeans ide开发cdc相关的项目。新建一个cdc项目,命名为cdcapp如下图所示:
由于我们让netbeans自动创建main类,所以新建项目完成后,在源文件中会出现cdcapp.main。cdc的项目结构如下所示,与cldc项目不同的是,项目结构增加了junit单元测试,我们可以在cdc的项目中编写单元测试程序。

相比midp,cdc的上层简表提供了awt图形库(不包括swing),因此我们可以开发出界面更加丰富的ui程序,mobility pack 5.0 for cdc整合了matisse,可以借助它用拖拽的方式开发ui程序,这里我们不介绍详细的细节。使用ui设计器可以很快生成一个ui程序,代码如下所示:
/*
* main.java
*
* created on 2006年4月19日, 下午3:08
*/
package cdcapp;
/**
*
* @author ming
*/
public class main extends java.awt.frame {
/** creates new form main */
public main() {
initcomponents();
}
/** this method is called from within the constructor to
* initialize the form.
* warning: do not modify this code. the content of this method is
* always regenerated by the form editor.
*/
//
private void initcomponents() {
label1 = new java.awt.label();
textfield1 = new java.awt.textfield();
label2 = new java.awt.label();
textfield2 = new java.awt.textfield();
label3 = new java.awt.label();
textarea1 = new java.awt.textarea();
addwindowlistener(new java.awt.event.windowadapter() {
public void windowclosing(java.awt.event.windowevent evt) {
exitform(evt);
}
});
label1.settext("username");
label2.settext("password");
label3.settext("description");
org.jdesktop.layout.grouplayout layout = new org.jdesktop.layout.grouplayout(this);
this.setlayout(layout);
layout.sethorizontalgroup(
layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
.add(layout.createsequentialgroup()
.addcontainergap()
.add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.trailing)
.add(org.jdesktop.layout.grouplayout.leading, textarea1, org.jdesktop.layout.grouplayout.default_size, 196, short.max_value)
.add(org.jdesktop.layout.grouplayout.leading, layout.createsequentialgroup()
.add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.trailing, false)
.add(org.jdesktop.layout.grouplayout.leading, label2, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
.add(org.jdesktop.layout.grouplayout.leading, label1, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
.add(org.jdesktop.layout.grouplayout.leading, label3, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value))
.add(16, 16, 16)
.add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading, false)
.add(textfield2, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
.add(textfield1, org.jdesktop.layout.grouplayout.default_size, 115, short.max_value))))
.addcontainergap(47, short.max_value))
);
layout.setverticalgroup(
layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
.add(layout.createsequentialgroup()
.addcontainergap()
.add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
.add(label1, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
.add(textfield1, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size))
.addpreferredgap(org.jdesktop.layout.layoutstyle.related)
.add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
.add(label2, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size)
.add(textfield2, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size))
.addpreferredgap(org.jdesktop.layout.layoutstyle.related)
.add(label3, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size)
.addpreferredgap(org.jdesktop.layout.layoutstyle.related)
.add(textarea1, org.jdesktop.layout.grouplayout.preferred_size, 141, org.jdesktop.layout.grouplayout.preferred_size)
.add(53, 53, 53))
);
pack();
}// //gen-end:initcomponents
/** exit the application */
private void exitform(java.awt.event.windowevent evt) {//gen-first:event_exitform
system.exit(0);
}//gen-last:event_exitform
/**
* @param args the command line arguments
*/
public static void main(string args[]) {
java.awt.eventqueue.invokelater(new runnable() {
public void run() {
new main().setvisible(true);
}
});
}
// variables declaration - do not modify//gen-begin:variables
private java.awt.label label1;
private java.awt.label label2;
private java.awt.label label3;
private java.awt.textarea textarea1;
private java.awt.textfield textfield1;
private java.awt.textfield textfield2;
// end of variables declaration//gen-end:variables
}
以上代码均由netbeans ide自动生成。运行项目,可以看到如下的界面:

这样我们的第一个cdc程序已经成功了,mobility pack 5.0 for cdc还提供了很多功能,这里不一一介绍了。有兴趣可以登录netbeans.org了解更多内容。
闽公网安备 35060202000074号