Sun ONE Studio 4 Mobile Edition开发MIDlet入门
Sun ONE Studio 4 Mobile Edition——结合Java 2 Platform, Micro Edition (J2ME)——提供了完整的Mobile Information Device Profile (MIDP)开发环境,包括完整的Java Platform Debugger Architecture (JPDA),用来在移动设备模拟器上调试执行Universal Emulator Interface (UEI).这篇文章介绍了Mobile版本的特点,并提供了创建和调试一个简单MIDlet suite的指导。
aawolf的话:这是我第一次翻译关于J2ME的文章,因为项目的关系拖拖拉拉一直翻译了半个多月,终于在入夏来最热的一天完成了。其实觊觎J2ME已经很久了,但是苦于没有下手的时间和切入点,下载了Sun One Studio后,虽说其慢无比,但还是有其独到之处的。好了废话说这么多,最近微软又推出了Pocket PC 2003,我会尽快翻译一些相关资料,希望大家能多去我的专栏看看:http://www.csdn.net/develop/author/netauthor/aawolf/
Quick Tour of Mobile Edition's Features
Introduction
介绍
Sun ONE Studio 4, Mobile Edition封装了创建无线应用程序的基本模块,附加模块用于特定的J2ME开发——为更多的目标设备创建更小的应用。IDE的高级模块化体系可以更容易的添加删除功能,并插入第三方工具。扩展模块可以容易地添加到Mobile版本中——不需要付费——可以从Sun ONE Studio Update Center(或者NetBeans Update Center)下载他们。Mobile版本提供普通JAVA开发的基本工具,加两个支持J2ME的模块。
J2ME Wireless module – supports MIDP development with templates, a wizard, emulation integration, and Connected Limited Device Configuration (CLDC) compilation
J2ME Wireless module – 支持MIDP开发,包括模板、向导、综合模拟器和Connected Limited Device Configuration (CLDC)编辑
J2ME Wireless Toolkit – the WTK wrapped as a NetBeans technology module for integration with Sun ONE Studio
J2ME Wireless Toolkit – WTK作为一个NetBeans技术模块被封装到Sun ONE Studio中
Installing Mobile Edition
安装Mobile版本
Mobile版本的JDK和系统需求描述如下,接下来是下载和安装介绍。
JDK Requirements
安装Java 2 SDK是安装Mobile版本的先决条件,因为IDE本身运行在Java 2的JVM上。Java 2 Platform, Standard Edition (J2SE), version 1.4.0被强烈推荐,但是1.3.1也工作得很好。更早的J2SE版本不能用来运行IDE,但是如果需要支持老版本的Java代码,可以被作为附加的编译器配置。
J2SE可以在下面的地址下载:
System Requirements
系统需求
Mobile Edition Release Notes提供了系统需求的详细资料。Mobile版本需要至少350 MHz Pentium II 或者 333 MHz Sparc Ultra 10,128M RAM和100M有效硬盘空间。
虽然只有正式支持的平台(Solaris 8, Windows NT/2K, and RedHat Linux 6.2 and 7.1)经过了广泛的质量保证测试,IDE仍然可以很好的运行在大多数类UNIX操作系统上——包括Mac OS/X. Mobile版本和Community版本,在Windows 98/ME上也可以很好运行。
Download
下载
Sun ONE Studio 4, Mobile Edition可以在下面的地址下载:
» http://forte.sun.com/ffj/downloads.html.
或者,你也可以下载并安装Sun ONE Studio 4, Community Edition,然后从Sun ONE Studio Update Center上安装Mobile版本模块。
Installation Instructions
安装说明
安装Sun ONE Studio Mobile Edition请依照Getting Started Guide的方法进行。Mobile版本在安装完成后就配置好了。事实上,如果你更愿意在Community 或者 Enterprise版本上安装Mobile版本模块的话,依照下面的方法去做。(这些介绍也适用于将Community版本功能添加到Mobile版本中)。
1.打开IDE,在IDE的主菜单中选择Tools > Update Center打开Update Center向导。
2.选中radio button "Check the Web for Available Updates and New Modules"并选择位置"Forte for Java Update Center",然后点击Next(Java Update Center将在不久后被更名为Sun ONE Studio Update Center)。
3.在适当的位置输入你的开发资源用户名和密码,然后点击Next。
4.在"Available Updates and New Modules"中选择所有Mobile版本模块,和另外一些你想安装的模块。点击最上面的按钮,将这些模块选入"Include in Install"中,然后点击Next(见图一)。
5.一旦你同意许可协议,模块安装将会自动完成。
Figure 1: Selecting modules to install using the Update Center Wizard.
Installing the J2ME Wireless Toolkit – Standalone Version
安装J2ME Wireless Toolkit – Standalone Version
包括在Sun ONE Studio 4 Mobile Edition中的J2ME Wireless Toolkit模块是J2ME Wireless Toolkit (J2MEWTK) 1.0.3。所有的Sun ONE Studio 4 editions也可以被配置使用一个单独版本的J2ME Wireless Toolkit作为替换或者新增的模块。
最新版本的J2MEWTK可以在下面的网址下载:
» http://java.sun.com/products/j2mewtoolkit.
注意:安装过程会询问你安装Integrated或者Standalone的版本。选择Standalone选项——Integrated选项会尝试将J2MEWTK安装到一个存在的Sun ONE Studio中去。
注意:这些模块将包括兼容Sun ONE Studio 3.0的J2MEWTK 1.0.3下载,但是不支持Sun ONE Studio 4。也会包括一些未来的J2MEWTK版本地址。
Emulator Installation
模拟器安装
Figure 2: Selecting an emulator installation directory.
在Sun ONE Studio的安装完成之后,你应该检验J2MEWTK的模拟器是否被正确安装了。你也会使用这个过程来安装另外的模拟器,或者如果你将J2MEWTK作为一个单独的产品来安装。
1.启动IDE,并在Explorer窗口的底部,点击Runtime tab。
2.打开下面的节点Device Emulator Registry > Installed Emulators > J2ME Wireless Toolkit 1.0.3.
J2MEWTK模拟器应该被列出在J2ME Wireless Toolkit节点下。如果你希望所有的模拟器都被列出来,你必须保证他们被正确安装并可以跳过下面的步骤。
事实上,在一些配置中,版本兼容性问题会影响自动安装的J2MEWTK模拟器,需要手动安装他们。如果符合下列任何一个条件,你需要完成下面的步骤。
一些或全部J2MEWTK模拟器丢失
J2ME Wireless Toolkit 1.0.3丢失
你将J2MEWTK作为一个standalone产品安装
你需要安装另外的模拟器
3.右击Installed Emulators节点,并从上下文菜单中选择Add Emulator。
4.在Select emulator installation directory对话框中,选定你希望安装的模拟器的所在路径。
TIP
在Windows平台上,例如,J2MEWTK的默认安装路径为C:\j2mewtk.。
如果你使用Mobile Edition模块(包含J2MEWTK),路径则为<IDE_installation_directory>/emulator.
Forte模块中的J2MEWTK组件的默认路径为C:\forte4j\emulator\j2mewtk-1_0_3-win.
Quick Tour of Mobile Edition's Features
现在我们将大略看一下Sun ONE Studio Mobile Edition IDE的全部功能。这是为了提供足够多的基础知识,使您能明白创建MIDlet的示范。
Startup
启动Mobile Edition IDE,编辑workspace被激活,下列三个窗口被打开:
主窗口——由用于编辑、运行、调试的菜单、工具栏和workspace tabs组成
浏览窗口——包含选择文件系统、工程、Javadoc和Runtime等视图(默认打开文件视图)
属性窗口——在浏览窗口中显示当前被选中的对象的属性。
Object-Based Views
Figure 3: Explorer window, Filesystems view, showing objects and properties belonging to the UIDemo example.
每个浏览视图显示一个对象节点的树,每个都包含一些能被打开的子对象节点。例如,在文件系统视图中在顶级节点下显示源代码数——代表本地文件系统中的目录,或者包含目录结构的JAR文件。打开一个上级节点,会显示出包含的节点,比如子目录、 Java对象、或者其他文件。例如,打开一个Java对象节点,则显示出所包含的field节点、constructor节点、method节点和bean pattern节点等。图3为UIDemo例子中的对象和属性。
Options and Properties
整个IDE通过一个巨大的相互连接的对象树,包含了惊人数量的用户配置属性。IDE对象可以被容易的动态添加、删除和操作。
例如,为了示范IDE结构,下列步骤说明了如何在Explorer窗口中设置显示扩展名。
1.从主菜单中,选择Tools > Options打开Options窗口。
2.通过节点访问,IDE Configuration > System
3.点击System Settings节点,并注意Options右边打开的属性页。
4.设置Show File Extensions为True
立刻,文件对象的扩展名出现在Explorer窗口中。
Code Samples
Sun ONE Studio 4, Mobile Edition带有一套分类的MIDlets和MIDlet Suites例子,用户可以用来做一些开发的准备工作。这些例子在sampledir文件夹中,可以直接在Explorer窗口的Filesystem页中被访问到。Sampledir文件夹被显示在图2中,直接在Filesystems节点下面。
Sampledir节点自己包含不同的子节点。Example和midp节点包含被MIDlet suites讨论过的MIDlet源代码。Icons节点包含imagined和图标。底部的四个节点——UIDemo, demos, games, 和photoalbum——是MIDlet suites,可以直接被运行。运行这些MIDlet suites,需要右击它们,然后在上下文菜单中选择Execute。IDE将编译类,并build成JAR文件,配置在默认的模拟器中,并切换到Running workspace中,并运行模拟器。我们可以看到在IDE中测试MIDlet suite是个非常简单的过程,编译、build为JAR都是自动完成的。
Creating and Testing a MIDlet
这里的任务是关于创建和测试一个MIDlet。
»Creating a Practice Package
创建一个练习用的包
第一个任务是创建一个用来保存MIDlet suite demo的Java包:
1.在你的本地环境中,创建(或者选择)一个练习用的工作空间——就是说,在IDE之外。例如,你可以在Windows环境中创建C:\practice_j2me.
2.在IDE浏览窗口,Filesystems视图中,右击顶层Filesystems节点,从上下文菜单中选择Mount > Local Directory.
3.通过New Wizard选择你的练习工作空间(step #1),然后点击完成。
你选择的工作空间会立即在filesystem中出现。
4.右击刚配置好的联系工作空间,从上下文菜单中选择New > Java Package.
5.New Wizard此时会提示新Java包的名称,命名这个demo,然后选Finish
»Creating MIDlet Suite with an Initial MIDlet
Figure 4: Using the New Wizard to create a MIDletSuite.
下面的任务是从Sun ONE Studio的模板中创建一个新的MIDlet suite,有一个选项用来创建一个单独的MIDlet,以后也许会有另外的MIDlets被添加进来。
1.在浏览窗口中,右击在上面创建的demo包,从上下文菜单中选择New > MIDP > MIDletSuite.
2.在New Wizard中,将新的MIDlet Suite命名为demoSuite,然后点击Next
3. New Wizard接下来的界面中(见图4),选择"Create New MIDlet"选项。选择HelloMIDlet模板,命名新的MIDlet为demoHello,然后点击完成。
或者,你也可以选择Next来添加一个图标,或者正好去探索一下New Wizard后面的步骤。
4.在Source Editor(代码编辑器)中打开demoHello MIDlet,并定位到startApp()方法(大概在代码中间的位置)。将"Test string"改成你喜欢的问候语——例如"G'day, Mate!"如果你喜欢澳大利亚。见图6
5.右击代码的任何位置,并在上下文菜单中选择Compile。
6.在Explorer窗口中右击demoSuite并从上下文菜单中选择Update JAR.这个命令必须在你没有修改JAR内容后执行。
7.再次右击demoSuite,这次从上下文菜单中选择Execute。
默认模拟器将被启动,demoHello MIDlet将被运行。
8.下载demoHello MIDlet,检查你的问候是不是出现。然后关闭模拟器,并返回编辑空间。模拟器的图象类似于图5,除了System Props MIDlet没有被添加。
»Adding an Existing MIDlet to a MIDlet Suite
添加一个存在的MIDlet到一个MIDlet Suite
多个MIDlets也许可以被添加到一个可以适合目标设备的MIDlet suite中。
1. 在Explorer窗口中,右击demoSuite节点,并在上下文菜单中选择Edit Suite。
Edit Suite专门编辑器将被打开,并包括MIDlets 和Jar Contents标签。在MIDlets标签中,你可以添加,删除,重新排列一个suite 中的MIDlets。在Jar Contents标签中,你可以添加或者删除MIDlet suite's JAR中的其他资源。
2.选择MIDlets标签,并点击Add按钮。
一行新的默认值将被加到MIDlets的列表中。
Figure 5: Running the default emulator.
3.根据下面的解释,定义新行的属性,然后点击OK。
MIDlet Name –用户在MIDlet suite菜单中看到的名字,改为"System Props".
MIDlet Class –被添加到suite中的存在的MIDlet,通过sampledir > example节点浏览,并选择PropExample.
注意:这仅仅是在菜单中添加了一个引用——compiled 和 preverified类文件必须被添加到MIDlet中。
Icon –在菜单中显示在MIDlet名称后的图标。这里可以忽略。
4.现在选择Jar Contents标签,再次浏览sampledir > example节点,选择PropExample并点击Add。
MIDlet将被添加到Selected Content pane中.
5.点击OK关闭Edit Suite窗口。
6.再次右击demoSuite节点,并从上下文菜单中选择Update JAR(记住在每次修改JAR的内容后需要更新)
7.再次右击demoSuite节点,并在上下文菜单中选择Execute。
默认模拟器将被再次启动。检查菜单,看demoHello 和 PropExample是否被正确运行(见图5)。
Importing an Existing MIDlet
引入一个存在的MIDlet
Sun ONE Studio对在其他地方完成的Java代码的执行是非常好的。为了使用存在的Java代码,可以简单的拷贝代码到一个存在的filesystem中,或者设置包含代码的目录。事实上,引入MIDlets时有一个缺陷。默认编译器指定引入Java代码为External Compilation,虽然MIDlets必须指定为Preverify Compiler。而且,如果你使用了错误的编译器,MIDlet将不会编译出错,但是在模拟器中报错,因为preverify步骤被省略了。
使用下面步骤确保引入的MIDlet被正确的编译,执行和调试,或者被正确设置,如果必要的话。这个例子使用在sampledir下的一个MIDlet,替代一个新引入的MIDlet。所有在sampledir中的对象都已经被正确设置,因此这个示例将演示如何检验正确设置,替代示范和修改错误。
1. 在Explorer中,选择sampledir > example节点,右击PropExample,从上下文菜单中选择Properties,并点击Execution标签。
2.点击Compiler属性值,使可用编译器列表可见。
注意,调试器(Debugger)也需要设置成Emulator Debugger, 并且Executor被设置成Emulator Executor.他们对引入代码的默认设置也是错误的,需要改正过来。
Debugging a MIDlet
Sun ONE Studio的调试器开始全部使用JPDA。有几个不同的调试器类型建筑在基本调试器的基础上,以支持不同的技术,例如Emulator Debugger, Applet Debugger和J2EE Server Debugger。MIDlets需要Emulator Debugger.
Setting Breakpoints
设置断点
简单起见,我们只在demoHello MIDlet里设置一个断点:
1.在Explorer窗口中双击demoHello,打开代码编辑器(Source Editor)。
2.将光标放置到startApp()方法中第一行可执行声明处:
TextBox t = new TextBox("Hello MIDlet", "G'day, Mate!", 256, 0);
3.在IDE主窗体中打开Debug菜单。在这一行建立一个断点的快速方法是选择Toggle Breakpoint菜单项。但是这次我们选择Add Breakpoint来打开Add Breakpoint对话框。
4.在Add Breakpoint对话框中打开Breakpoint Type列表。我们可以看到,
Line –断点类型,当执行到指定的行数则阻断。
Method –执行到某一指定事件时中断。
Exception –当指定异常抛出时中断。
Variable –当指定值被访问时中断。
Thread –在线程开始或结束时中断。
Class –当指定类被loaded或者unloaded时中断。
Figure 6: Setting a breakpoint.
5.选择Line为中断类型,然后点击OK。
注意你可以在中断发生前指定条件以达到满意效果。事实上,这超过了我们现在的讨论范围。一旦断点被设置,则这行以粉红色高亮显示,见图6。
Running the Debugger
运行Debugger
所有的准备工作都已经就绪,下面来说如何运行debugger:
1.在Explorer窗口中选择demoSuite。
2.从IDE的主菜单中选择Debug > Start.
IDE将转换到Debugging workspace并且启动模拟器。Debugger窗口将出现在view panels中,你可以用窗口顶部的按钮打开或者关闭。
Sessions –监控多个同时发生的debugging sessions.
Breakpoints –断点操作。
Threads –监控多个同时执行的线程。
Call Stack –动态堆的追踪信息。
Watches –在执行期间查看变量的改变情况。
Variables –检查或者设置变量值。
Classes –检查在执行过程中类是否可用。
3.在断点查看窗口(Breakpoints view panel)中右击被设置的断点,然后从上下文菜单中选择Go to Source。Source Editor窗口将打开正在调试的类中的断点行。
4.在模拟器中执行demoHello。如果执行终止在KVM中的某处(Sun's K virtual machine),从IDE主菜单中选择Debug > Continue。当执行到设置的断点时,执行将被中止。你可以检查在这一点的Call Stack,修改变量值,或者激活一些其他的调试。Debugger窗口见图7。
Figure 7: The Debugger Window.