




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java嵌入式开发讲座 第三讲 Java中文站 使用J2ME进行开发一个简单的KJava应用程序示例 无论学习什么新事物,都讲究循序渐进。学习J2ME也不例外,在此我想先介绍一下使用J2ME 开发Palm上的一个小的应用程序,再深入探讨开发更加复杂的应用程序,好,那我么就开始吧。 第一节 获得 J2ME 你可以从Sun网站上下载到 J2ME CLDC文件。第一个文件是 j2me_cldc_-1_0- src.winsol.zip,它包括所有开发 CLDC应用程序时需要的类库。除了包括类库以外,它还包括源 代码以及 Windows和 UNIX下的可执行代码,用于 MIDP规定的 Java虚拟机引用实现。看了前几篇 文章的读者肯定都知道,这里提到的Java虚拟机就是 K虚拟机 ( KVM ),有了这个文件,在开发 过程中,你就可以在个人电脑上调试程序,而不用把这些程序下载到你的手持设备上。 第二个文件是 j2me_cldc-1_0-src-palm_overlay.zip,它包括一个用于运行 Palm操作系统 的设备的 KVM的实现,以及把.class文件通过一个 Java编译程序生成可执行 Palm文件的工具。 注意,这是一个用于 Palm操作系统的 CLDC个别实现。如果使用针对其它的设备的实现的话,你 的 Java应用程序也可以在其他设备上运行。 为了开发用于 Palm OS设备的应用程序,你必需在你的计算机上安装这两个Zip文件。在本文 中,我假设你已经在 C盘中安装了 CLDC文件夹。注意,为了开发 CLDC应用程序,你并不需要一 个特定的 Java编译程序。你可以使用 J2SE带有的编译程序,唯一的差别就是,你必须在编译的 时候更换成J2ME类库所在的路径。你还要使用下载到的 CLDC中带有的特定软件来处理生成 的 .class文件。 第二节 运行文档附带的应用程序示例 你从Sun网站上下载的文件中包含了许多示例应用程序的源程序以及编译好的版本,你可以在 你的台式机上,使用 KVM来运行这些示例应用程序。运行这些应用程序可以使你对一个 CLDC应用 程序有一个感性认识。在运行这些程序之前,你必要启动一个命令行界面,然后输入下列命令: set cldc_classpath = c:;. set bin = %bin%;c: cd 好,现在你已经设置了环境变量并进入了保存示例应用程序的目录,你就可以开始运行它们 了。比如说,为了运行 UITest程序,输入:kvm -classpath %cldc_classpath% UITest 你也可以看看 Pong这个游戏程序,请在命令行输入下面的命令:kvm -classpath % cldc_classpath% Pong 是不是挺好玩,你可以试一试运行每个示例应用程序,稍后,我们还要使用相同的方法来运 行我们在台式机中开发的应用程序。 第三节 构建一个 Palm应用程序 好,现在你对 J2ME的程序有一点感性认识了吧?现在让我们做一些实事吧,我将介绍如何构 建一个 运行于 Palm OS设备上的 Java应用程序。首先,虽然J2ME是Java技术,但这并非意谓着 你可以使用现有的 Java应用程序,重新编译它们然后把它们运行于新的设备上。在前面几章中我 已经谈过,J2SE和J2EE使用的Java虚拟机中的许多关键特性已经从J2ME虚拟机中删除了,因为设 备的资源有限。 J2ME带的 Java虚拟机(KVM)缺乏浮点数支持;J2ME应用程序与 J2SE、 J2EE应用程序的另外一 个重要的差别是缺乏优先型多任务,虽然它不是 Java规范中所述的必要条件,但是几乎你的 J2SE、 J2EE应用程序运行的所有机器都支持优先型多任务。这意味着 CPU在多个 Java线程之间 共享而不必在你的程序中添加任何特殊的代码,而 J2ME使用的设备则往往没有这种功能,为了确 保多线程能够工作,你必须调用 Thread.yield()方法。 使用 CLDC简表的另一个值得注意的方面是J2ME类库缺少许多 J2SE类库中的类。在构建应用 程序时,必须使用这有限制的类库。当你下载到CLDC文件时,你可以仔细考察你获得的文件,弄 清楚哪一个类包含在CLDC规范中。你必须对付的最后一个问题是 CLDC类库内部缺少访问用户界面 元素-按钮、菜单、图形。不使用 Palm的用户界面,就不大可能为 Palm OS设备开发应用程 序, Sun已经解决了这个问题-使用一个单独的类库 com.sun.kjava来提供给你访问基层 Palm用 户界面的权限。下面这个示例程序就使用类库创建窗口、按钮和对话框。不过请注意,kjava类库 既不是 MIDP配置也不是 CLDC简表的官方部分,它很有可能在未来的版本中改变或消失。这就意 味着你使用 kjava类库写的任何程序,一旦发行新的J2ME版本你就不得不修改这个程序以适应新 的J2ME版本。但是现在,它还是你开发使用Palm用户界面的应用程序的唯一选择。 import lang.*; import com.sun.kjava.*; public class HelloWorld extends Spotlet implements DialogOwner private Button quitButton; private Button aboutButton; private TextBox welcomeTextBox; private final String welcomeString = Hello World ; private final String aboutTitleString = About Hello World; private final String aboutString = HelloWorld J2ME CLDC Application; public HelloWorld() register(WANT_SYSTEM_KEYS); welcomeTextBox = new TextBox(welcomeString, 10, 10, 140, 130); aboutButton = new Button(About, 75, 140); aboutButton.setEnabled(true); quitButton = new Button(Quit, 125, 140); quitButton.setEnabled(true); paint(); public void dialogDismissed(String title) Graphics.clearScreen(); register(WANT_SYSTEM_KEYS); paint(); public void paint() welcomeTextBox.paint(); aboutButton.paint(); quitButton.paint(); public void penDown(int x, int y) if (aboutButton.pressed(x, y) Dialog aboutDialog = new Dialog(this, aboutTitleString, aboutString, OK); aboutDialog.showDialog(); if (quitButton.pressed(x, y) System.exit(0); public static void main(String args) new HelloWorld(); 分析HelloWorld应用程序 上面的这个HelloWorld应用程序具有运行 Palm OS的设备上的 CLDC应用程序的基本特征。当 你仔细考察一下这段代码,你会发现许多使用 kjava类库编译应用程序的特性。首先,这个程序 扩展了 com.sun.kjava.spotlet类,使用 kjava,一个 spotlet就是任何可以得到焦点(focus) 的类,那就是说,从系统中接收事件,比如手写笔的点触。在我们的例子中, 当手写笔点击 About和Quit按钮时,HelloWorld应用程序需要响应,因此它需要获得焦点。你的应用程序可以包 括任意多的从 spotlet中衍生的类,虽然在任何时间它们中间只有一个能够取得焦点。实际上, 应用程序通过调用 register方法使用焦点,我们在 HelloWorld构造程序开始的部分和 dialogDismissed方法中都用了 register。 HelloWorld类实现了 DialogOwner接口。实现 DailogOwner接口的类是用于创建对话框的类。我 们的应用程序创建了一个对话框来响应手写笔点击 About按钮的事件,为了实现DialogOwner接 口,你的类必须包含一个dialogDismissed成员方法,为了实现 DialogOwner接口,你的类必须包 含一个 dialogDismissed成员方法,这个方法在一个对话框被关闭的时间被调用。 HelloWorld构造程序在屏幕上创建三个界面元素:一个文本框和两个按钮。你马上就会发现 kjava和 J2SE AWT的一个重要的差别: kjava没有与 AWT自动布局机制等价的东西。你必须自己 编码确定每个界面元素在屏幕上的位置。在我们的程序中,我们把文本框放在(10,10)和 (140,130)之间;两个按钮放置在( 75,140)和(125,140)。 每当用户在装置上轻点手写笔时,都要调用HelloWorld的 penDown方法。我们通过调用每个 按钮的 pressed方法确定这次点击是否发生在按钮的边界以内,如果按钮的pressed方法返回一个 真值,意味着手写笔点击事件发生在按钮边界之内,这个按钮相对应的动作将发生。比如说如果 点击了 About按钮,我们通过创建一个新的 Dialog对象创建 About对话框。要是点击了 Quit按 钮,我们就终止这个程序。 最后, 当用户关闭对话框时,要调用 HelloWorld的 dialogDismissed方法。在我们的应用 程序中,这个方法做的事情就是通过调用 register方法恢复焦点并调用 paint方法来刷新屏幕。 编译 编译一个 CLDC应用程序需要两步操作:首先你必须通过标准的 J2SE编译程序运行它们,不 过使用 CLDC类库代替标准的 J2SE类库。然后,使用preverify程序把得到的.class文件转化成 KVM可读的 Java应用程序。 上面的示例程序如下面这样编译: javac -g:none -classpath %cldc_classpath% -d %temp% HelloWorld.java preverify -classpath %cldc_classpath% -s %temp% -d . 一旦编译好后,就可以使用下面的命令来在你的台式机上运行这个程序: kvm -classpath %cldc_classpath% HelloWorld 既然这个CLDC应用程序在计算机上可以运行,那么你也可以试着把它转换成Palm可执行文 件。 在Palm上运行 为了把一个使用CLDC开发的.class文件转换成在Palm OS设备上可实际运行的文件,你需要使 用j2me_cldc-1_0-src-palm_overlay.zip中的许多程序。首先,你必须把你的 .class文件转换 成 Palm OS应用程序,所有的 Palm OS应用程序都有扩展名 .prc。通过使用 palm.database.MakePalmApp类把 .class文件转化成 .prc文件,使用下面这个命令行运行我们刚 才写好的 HelloWorld.c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安陆市2025-2026学年七年级上学期语文期中测试试卷
- 2013年7月国开电大法律事务专科《行政法与行政诉讼法》期末纸质考试试题及答案
- 湖南省怀化市实验中学2025-2026学年度上学期高一化学入学考试试卷(含答案)
- 2025年8月辽宁省鞍山市立山区七年级新生分班考试数学试题(含答案)
- 出售煤矿风机合同范本
- 劳动合同范本唐山
- 闸门改造工程合同范本
- 建筑木材收购合同范本
- 西安工作签合同范本
- 学校用地出租合同范本
- 韦莱韬悦-东方明珠新媒体集团一体化职位职级体系方案-2018
- 广东省农作物植保员职业技能竞赛考试题库(含答案)
- 2024新版(外研版三起孙有中)三年级英语上册单词带音标
- 注塑缺陷的原因分析与解决对策培训教程
- 中欧班列课件
- 个性化评价体系在高考语文作文中的作用
- 2025年九省联考新高考 物理试卷(含答案解析)
- 分布式光伏工程报价参考
- 口腔颌面外科消毒和灭菌-手术区的消毒消毒巾铺置法(口腔科技术)
- 医院标识标牌采购投标方案(技术方案)
- 中学政治九年级《坚持改革开放》说课课件
评论
0/150
提交评论