﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-饶荣庆 -- 3G视线-随笔分类-j2me 入门</title><link>http://www.blogjava.net/gooogle/category/22245.html</link><description> &lt;a href="http://javaeye.5d6d.com"&gt;3G视线论坛&lt;/a&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 31 Aug 2007 18:22:39 GMT</lastBuildDate><pubDate>Fri, 31 Aug 2007 18:22:39 GMT</pubDate><ttl>60</ttl><item><title>J2ME Polish 全攻略之入门</title><link>http://www.blogjava.net/gooogle/archive/2007/08/31/141700.html</link><dc:creator>3G视线</dc:creator><author>3G视线</author><pubDate>Fri, 31 Aug 2007 05:18:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/08/31/141700.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/141700.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/08/31/141700.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/141700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/141700.html</trackback:ping><description><![CDATA[<div id="message435" class="t_msgfont">
<p style="margin-left: 126pt; text-indent: 21pt;"><font size="3"><strong><span style="font-size: 18pt;"><a href="http://www.blogjava.net/gooogle/">爬虫工作室 <br />
</a></span></strong></font></p>
<p style="margin-left: 126pt; text-indent: 21pt;"><font size="3"><strong><span style="font-size: 18pt;">文章出处 3G视线</span></strong></font></p>
<p style="margin-left: 126pt; text-indent: 21pt;"><font size="3"><strong><span style="font-size: 18pt;">连接 : <a href="http://javaeye.5d6d.com/thread-234-1-1.html"><font size="3"><strong></strong></font>http://javaeye.5d6d.com/thread-234-1-1.html</a></span></strong></font></p>
<p style="margin-left: 126pt; text-indent: 21pt;"><font size="3"><strong><span style="font-size: 18pt;">J2ME
Polish </span></strong><strong><span style="font-size: 18pt; font-family: 宋体;">全攻略之入门</span></strong></font></p>
<p><font size="3"><span style="font-family: 宋体;">在看这篇文章之前，我希望读者先浏览</span><strong><span style="font-family: 宋体;">漫游</span></strong><strong> J2ME Polish--</strong><strong><span style="font-family: 宋体;">比较详细的文档</span></strong><strong>.doc </strong><span style="font-family: 宋体;">这篇文章</span></font></p>
<p><font size="3"><strong><span style="font-size: 15pt; font-family: 宋体;">内容简介</span></strong></font></p>
<p style="text-indent: 21pt;"><font size="3">J2ME Polish<span style="font-family: 宋体;">现在很火，很多手机软件开发商都在采用这东西进行二次开发。然后很可惜，网络上关于这方面的中文比较少，所以我根据我学习的经过，整理成文章，希望对初学着以及爱好者有所帮助。</span></font></p>
<p style="margin-left: 29.25pt; text-indent: -18pt;"><font size="3">1．<span style="font-family: 宋体;">到官方</span><span><a href="http://www.j2mepolish.org/">http://www.j2mepolish.org/</a>
</span><span style="font-family: 宋体;">上下载安装包，现在最新版本是</span>2.0 R4<span style="font-family: 宋体;">版本，本人建议安装</span>1.2.4<span style="font-family: 宋体;">版本，因为</span>2.0R4<span style="font-family: 宋体;">版本可能存在一些不兼容以及一些</span>bug<span style="font-family: 宋体;">。本人用</span>2.0R4<span style="font-family: 宋体;">版本的时候，有些例子并不能通过测试</span></font></p>
<p style="margin-left: 29.25pt;"><font size="3"><span style="font-family: 宋体;">运行</span>cmd<span style="font-family: 宋体;">，然后输入</span>java &#8211;jar D:"J2ME Polish.jar<span style="font-family: 宋体;">即可出现提示窗口，然后点下一步，就</span>ok<span style="font-family: 宋体;">了。</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><img src="http://ee.a.5d6d.com/userdirs/9/6/javaeye/attachments/month_0708/20070830_d67c1aeee6b69f10ba7clZe6uLaxCOz7.jpg" onload="attachimg(this, 'load', '点击在新窗口查看全图"  nctrl+鼠标滚轮放大或缩小="" )="" onmouseover="attachimginfo(this, 'attach_72', 1);attachimg(this, 'mouseover')" onclick="attachimg(this, 'click', 'http://ee.a.5d6d.com/userdirs/9/6/javaeye/attachments/month_0708/20070830_d67c1aeee6b69f10ba7clZe6uLaxCOz7.jpg')" onmouseout="attachimginfo(this, 'attach_72', 0, event)" onmousewheel="return imgzoom(this)" alt="" border="0" /><span><!--[if gte vml 1]>
<![endif]--></span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">上面的目录结构很清晰。</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">其中最</span>import<span style="font-family: 宋体;">是系统引入的包，其中包括一个</span>bulid<span style="font-family: 宋体;">的包，以及其他一些，</span>midp<span style="font-family: 宋体;">等规范包。</span></font></p>
<p style="text-indent: 21pt;"><font size="3">Samples <span style="font-family: 宋体;">是例子文件，我的版本里面只有两个例子，一个是</span>menu<span style="font-family: 宋体;">，描述的是，采用</span>J2ME Polish GUI<span style="font-family: 宋体;">，创建适合各个平台的统一外观的包，基于</span>CSS<span style="font-family: 宋体;">设计的。是</span>UI<span style="font-family: 宋体;">设计的典范，可以具体研究。</span><span>
Sysinfo</span><span style="font-family: 宋体;">是一个系统信息的测试例子，涵盖了几乎所有平台上对</span>jcp<span style="font-family: 宋体;">规范支持等测试信息，是我们开发程序中必须要用到的知识。</span></font></p>
<p style="text-indent: 21pt;"><font size="3">Doc<span style="font-family: 宋体;">是文档，此文档暂没有中文。我们学习起来比较吃力</span></font></p>
<p style="text-indent: 21pt;"><font size="3">Api<span style="font-family: 宋体;">是</span><span>J2ME
Polish</span><span style="font-family: 宋体;">提供给开发人员使用的公共接口</span></font></p>
<p style="text-indent: 21pt;"><font size="3">Bin<span style="font-family: 宋体;">一些可执行文件</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">其中</span>readme.txt<span style="font-family: 宋体;">文件</span>,<span style="font-family: 宋体;">关于项目的一些描述</span></font></p>
<p style="text-indent: 21pt;"><font size="3">LICENSE.txt <span style="font-family: 宋体;">版权信息</span>,<span style="font-family: 宋体;">作为商业开发者</span>,<span style="font-family: 宋体;">一定要看哦</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">对于顶级目录下的</span>xml<span style="font-family: 宋体;">文件</span>,<span style="font-family: 宋体;">基本上都是</span><span>J2ME
Polish</span><span style="font-family: 宋体;">的描述文件，很重要的哦。是研究它的最直接的资料，可惜，我也是刚学习，没有深入去了解它</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">其中</span>groups.xml<span style="font-family: 宋体;">定义了不同的平台下面的东西，比如</span>s40<span style="font-family: 宋体;">，</span>s60<span style="font-family: 宋体;">，</span>s80<span style="font-family: 宋体;">，</span>390<span style="font-family: 宋体;">，等</span>api<span style="font-family: 宋体;">等</span></font></p>
<p style="text-indent: 21pt;"><font size="3">Vendors.xml<span style="font-family: 宋体;">定义了厂商的规范，特性等，比如键值的定义啊。</span>J2ME Polish<span style="font-family: 宋体;">处理键值事件的时候主要是对这些规范进行预编译，所以适合很多平台，厂商。</span></font></p>
<p style="text-indent: 21pt;"><font size="3">Devices.xml<span style="font-family: 宋体;">是对各个平台支持规范程度的描述，此文件包含了很多个平台支持描述。</span></font></p>
<p><font size="3"><span style="font-family: 宋体;">上面的所有配置都是基于</span>xml<span style="font-family: 宋体;">了。可以自己扩展，</span>api<span style="font-family: 宋体;">，配置，以及平台</span></font></p>
<p style="margin-left: 21pt; text-indent: -21pt;"><font size="3">三．<span style="font-family: 宋体;">运行例子</span>Menu<span style="font-family: 宋体;">，</span><span>
SysInfo</span><span style="font-family: 宋体;">。</span></font></p>
<p style="margin-left: 21pt;"><font size="3">2<span style="font-family: 宋体;">．查看</span>bulid.xml<span style="font-family: 宋体;">文件，看看它做了些说明手机，让我们的工作这么轻松愉快</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">由于贴</span>xml<span style="font-family: 宋体;">文件，</span>word<span style="font-family: 宋体;">并没有进行格式化，所以我这里重点介绍下。</span></font></p>
<p style="text-indent: 21pt;"><font size="3">&lt;project name="enough-j2mepolish-example" default="j2mepolish"&gt;</font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">这段是说，建立一个</span>project<span style="font-family: 宋体;">，</span><span style="font-family: 宋体;">默认执行的</span>target<span style="font-family: 宋体;">是</span>j2mepolish<span style="font-family: 宋体;">。</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span>&lt;property name="wtk.home" , value="D:"WTK22"
/&gt;</span></font></p>
<p style="text-indent: 21pt;"><font size="3">WTK<span style="font-family: 宋体;">的安装目录</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span>&lt;property name="polish.home",
value="D:"Program Files"J2ME-Polish" /&gt;</span></font></p>
<p style="text-indent: 21pt;"><font size="3">J2ME Polish <span style="font-family: 宋体;">的安装目录</span></font></p>
<p style="text-indent: 21pt;"><font size="3">&lt;taskdef name="j2mepolish" </font></p>
<p style="text-indent: 21pt;"><font size="3"><span>classname="de.enough.polish.ant.PolishTask"
</span></font></p>
<p style="text-indent: 21pt;"><font size="3">classpath="${polish.home}/import/enough-j2mepolish-build.jar<img src="http://images.5d6d.com/dz6/smilies//shy.gif" src="http://images.5d6d.com/dz6/smilies//shy.gif" http:=""  images.5d6d. com="" dz6="" smilies=""  shy. gif="" smilieid="8" alt="&lt;img0" />" border="0"&gt;{polish.home}/import/jdom.jar<img src="http://images.5d6d.com/dz6/smilies//shy.gif" src="http://images.5d6d.com/dz6/smilies//shy.gif" http:=""  images.5d6d. com="" dz6="" smilies=""  shy. gif="" smilieid="8" alt="&lt;img0" />" border="0"&gt;{polish.home}/import/proguard.jar<img src="http://images.5d6d.com/dz6/smilies//shy.gif" src="http://images.5d6d.com/dz6/smilies//shy.gif" http:=""  images.5d6d. com="" dz6="" smilies=""  shy. gif="" smilieid="8" alt="&lt;img0" />" border="0"&gt;{polish.home}/yguard-lib.jar<img src="http://images.5d6d.com/dz6/smilies//shy.gif" smilieid="8" alt=":$" border="0" />{wtk.home}/wtklib/kenv.zip"/&gt;</font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">这个很重要，定义说。执行这个</span>targer<span style="font-family: 宋体;">的</span> Task<span style="font-family: 宋体;">，这里是指执行</span>de.enough.polish.ant.PolishTask<span style="font-family: 宋体;">这个类。具体可以看源代码，看看里面做了些说明手脚</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span>&lt;obfuscator name="ProGuard"
useDefaultPackage="true" unless="test" &gt;</span></font></p>
<p style="text-indent: 21pt;"><font size="3">&lt;!--</font></p>
<p style="text-indent: 21pt;"><font size="3"><span>You
can set additional parameters here, e.g.:</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span>&lt;parameter
name="optimize" value="false" /&gt;</span></font></p>
<p style="text-indent: 21pt;"><font size="3">--&gt;</font></p>
<p style="text-indent: 21pt;"><font size="3">&lt;/obfuscator&gt;</font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">这个用来打包用的，采用</span>ProGuard<span style="font-family: 宋体;">混淆器</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">其他的自己研究。</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">我们现在来看看，运行</span>build.xml<span style="font-family: 宋体;">后生成了些什么呢。不看不知道，一看吓一跳，</span></font></p>
<p style="text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">在</span>build<span style="font-family: 宋体;">的文件夹下面，我发现了好多文件，全部是对于平台不同的资源源代码。原来，</span>J2ME-Polish<span style="font-family: 宋体;">的原理是，通过</span>ant build<span style="font-family: 宋体;">的扩展，然后通过自己的一套</span>API<span style="font-family: 宋体;">，把用户的代码转换成对应各个平台的源代码，然后编译，打包。原理虽然简单，但是这一套却是要花很多功夫</span>ide<span style="font-family: 宋体;">哦。我现在开始有点佩服</span>J2ME Polish<span style="font-family: 宋体;">的创意了。也难怪，我的主管说</span>J2ME Polish<span style="font-family: 宋体;">是个好东西，好以后继续学习</span>J2ME Polish<span style="font-family: 宋体;">的源代码，继续探讨。</span></font></p>
<p><font size="3"><span style="font-family: 宋体;">上面的例子是基于</span>J2ME &#8211; Polish GUI<span style="font-family: 宋体;">的，现在的例子是不</span>import<span style="font-family: 宋体;">任何的</span>J2ME Polish MIDP<span style="font-family: 宋体;">相关的</span>API<span style="font-family: 宋体;">，这样例子对应需要开发。这个例子更简单，按照我刚才所写的方法办即可。</span></font></p>
<p><font size="3"><span style="font-family: 宋体;">顺便介绍下这个例子，这个例子对应开发手机软件来说，也是很有用的。里面包含了对</span>JSR<span style="font-family: 宋体;">规范支持的测试，已经屏幕，按键等相关的测试，很有用。</span></font></p>
</div><img src ="http://www.blogjava.net/gooogle/aggbug/141700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G视线</a> 2007-08-31 13:18 <a href="http://www.blogjava.net/gooogle/archive/2007/08/31/141700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> RMS入门之旅--详细电话本设计</title><link>http://www.blogjava.net/gooogle/archive/2007/05/10/116482.html</link><dc:creator>3G视线</dc:creator><author>3G视线</author><pubDate>Thu, 10 May 2007 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/05/10/116482.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/116482.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/05/10/116482.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/116482.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/116482.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gooogle/archive/2007/05/10/116482.html'>阅读全文</a><img src ="http://www.blogjava.net/gooogle/aggbug/116482.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G视线</a> 2007-05-10 14:32 <a href="http://www.blogjava.net/gooogle/archive/2007/05/10/116482.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于j2me xml解释 引擎 XmlPullParser 的例子</title><link>http://www.blogjava.net/gooogle/archive/2007/05/10/116381.html</link><dc:creator>3G视线</dc:creator><author>3G视线</author><pubDate>Thu, 10 May 2007 01:13:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/05/10/116381.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/116381.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/05/10/116381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/116381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/116381.html</trackback:ping><description><![CDATA[这几天一直在思考怎么样设计Wap的引擎。因为在j2me有限的资源上去解释xml是比较慢的，所以j2se上的xml类库是不适合用在j2me上，后来
在网上查找了下发现了XmlPullParser ，而且用起来速度快，而且包也很小。现在把这两天学到的知识记录下来。<br>
<br>
我的需求是解释一个标准的wml。比如：<br>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"> </div>
<ol start="1" class="dp-xml">
    <li class="alt">xml version="1.0"?&gt;  </li>
    <li class="">&gt;  </li>
    <li class="alt">&lt;wml&gt;  </li>
    <li class="">&lt;card id="index" title="天速"&gt;  </li>
    <li class="alt">&lt;p align="center"&gt;天速科技<!--</span-->p&gt;  </li>
    <li class="">&lt;p align="center"&gt;&lt;a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=03020047"&gt; 动漫天下 <!--</span-->a&gt;<!--</span-->p&gt;  </li>
    <li class="alt">&lt;p align="center"&gt;&lt;a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=03020048&amp;SPURL=http://211.155.31.143/t/viewPic.a?picId=1308"&gt; 国色天香 <!--</span-->a&gt;<!--</span-->p&gt;  </li>
    <li class="">&lt;p align="center"&gt;&lt;a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=04070717&amp;SPURL=http://211.155.31.143/eb/allBook.a"&gt;  风月书斋 <!--</span-->a&gt;<!--</span-->p&gt;  </li>
    <li class="alt">  <br>
    </li>
    <li class=""><!--</span-->card&gt; <!--</span-->wml&gt;  </li>
</ol>
</div>
<br>
上面是个简单的wml源文件。不过现在的wap网站差不都这样，基本上没有script，跟html上的各个控件。所以能解释上面的文档，基本上都是可以满足我的需求的。<br>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<ol class="dp-j" start="1">
    <li class="alt">/********************************************************************&nbsp;</li>
    <li class="">&nbsp;*&nbsp;项目名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;：&lt;b&gt;j2me学习&nbsp;J2me&nbsp;Wap&nbsp;Explorer&lt;/b&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br/&gt;&nbsp;</li>
    <li class="alt">&nbsp;*&nbsp;&nbsp;</li>
    <li class="">&nbsp;*&nbsp;Copyright&nbsp;2005-2006&nbsp;Wuhua.&nbsp;All&nbsp;rights&nbsp;reserved&nbsp;&lt;/br&gt;&nbsp;</li>
    <li class="alt">&nbsp;*&nbsp;</li>
    <li class="">&nbsp;*&nbsp;本程序只用于学习目的，不能用于商业目的。如有需要请联系作者&nbsp;</li>
    <li class="alt">&nbsp;********************************************************************/&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;</li>
    <li class="alt">import&nbsp;java.io.ByteArrayInputStream;&nbsp;&nbsp;</li>
    <li class="">import&nbsp;java.io.IOException;&nbsp;&nbsp;</li>
    <li class="alt">import&nbsp;java.io.InputStreamReader;&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;</li>
    <li class="alt">import&nbsp;org.kxml2.io.KXmlParser;&nbsp;&nbsp;</li>
    <li class="">import&nbsp;org.xmlpull.v1.XmlPullParser;&nbsp;&nbsp;</li>
    <li class="alt">import&nbsp;org.xmlpull.v1.XmlPullParserException;&nbsp;&nbsp;</li>
    <li class="">/**&nbsp;</li>
    <li class="alt">&nbsp;*&nbsp;&lt;b&gt;类名：Test.java&lt;/b&gt;&nbsp;&lt;/br&gt;&nbsp;编写日期:&nbsp;2006-12-28&nbsp;&lt;br/&gt;&nbsp;程序功能描述：&nbsp;&lt;br/&gt;&nbsp;Demo:&nbsp;&lt;br/&gt;&nbsp;</li>
    <li class="">&nbsp;*&nbsp;Bug:&nbsp;&lt;br/&gt;&nbsp;</li>
    <li class="alt">&nbsp;*&nbsp;&nbsp;</li>
    <li class="">&nbsp;*&nbsp;程序变更日期&nbsp;：&lt;br/&gt;&nbsp;变更作者&nbsp;：&lt;br/&gt;&nbsp;变更说明&nbsp;：&lt;br/&gt;&nbsp;</li>
    <li class="alt">&nbsp;*&nbsp;&nbsp;</li>
    <li class="">&nbsp;*&nbsp;@author&nbsp;wuhua&nbsp;&lt;/br&gt;&nbsp;&lt;a&nbsp;href="mailto:rrq12345@163.com"&gt;rrq12345@163.com&lt;/a&gt;&nbsp;</li>
    <li class="alt">&nbsp;*/&nbsp;&nbsp;</li>
    <li class="">public&nbsp;class&nbsp;Test&nbsp;{&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;//private&nbsp;static&nbsp;String&nbsp;xml&nbsp;=&nbsp;"&lt;list&gt;&lt;item&gt;apple&lt;/item&gt;"&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;+&nbsp;"&lt;item&gt;orange&lt;/item&gt;"&nbsp;+&nbsp;"&lt;item&gt;pear&lt;/item&gt;&lt;/list&gt;";&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;String&nbsp;xml&nbsp;="&lt;?xml&nbsp;version=\"1.0\"?&gt;"&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;!DOCTYPE&nbsp;wml&nbsp;PUBLIC&nbsp;\"-//WAPFORUM//DTD&nbsp;WML&nbsp;1.1//EN\"&nbsp;"&nbsp;&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;+"\"http://www.wapforum.org/DTD/wml_1.1.xml\"&gt;"&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;wml&gt;"&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;card&nbsp;id=\"index\"&nbsp;title=\"天速\"&gt;"&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;p&nbsp;align=\"center\"&gt;天速科技&lt;/p&gt;"&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;p&nbsp;align=\"center\"&gt;&lt;a&nbsp;href=\"/t/main.a\"&gt;&nbsp;动漫天下&nbsp;&lt;/a&gt;&lt;/p&gt;"&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;p&nbsp;align=\"center\"&gt;&lt;a&nbsp;href=\"/t/main.a\"&gt;&nbsp;国色天香&nbsp;&lt;/a&gt;&lt;/p&gt;"&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;p&nbsp;align=\"center\"&gt;&lt;a&nbsp;href=\"/eb/main.a\"&gt;&nbsp;&nbsp;风月书斋&nbsp;&lt;/a&gt;&lt;/p&gt;"&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;+"&lt;/card&gt;&nbsp;&lt;/wml&gt;";&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;XmlPullParserException,&nbsp;IOException&nbsp;{&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByteArrayInputStream&nbsp;bin&nbsp;=&nbsp;new&nbsp;ByteArrayInputStream(xml.getBytes());&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStreamReader&nbsp;in&nbsp;=&nbsp;new&nbsp;InputStreamReader(bin);&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KXmlParser&nbsp;parser&nbsp;=&nbsp;new&nbsp;KXmlParser();&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parser.setInput(in);&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;eventType&nbsp;=&nbsp;parser.getEventType();&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(eventType&nbsp;!=&nbsp;XmlPullParser.END_DOCUMENT)&nbsp;{&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(eventType&nbsp;==&nbsp;XmlPullParser.START_DOCUMENT)&nbsp;{&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System.out.println("Start&nbsp;document:");&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(eventType&nbsp;==&nbsp;XmlPullParser.END_DOCUMENT)&nbsp;{&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System.out.println("End&nbsp;document");&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(eventType&nbsp;==&nbsp;XmlPullParser.START_TAG)&nbsp;{&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("&nbsp;&nbsp;"&nbsp;+&nbsp;parser.getName());&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System.out.println("Start&nbsp;Count:&nbsp;"&nbsp;+&nbsp;parser.getAttributeCount());&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;size&nbsp;=&nbsp;parser.getAttributeCount();&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;&nbsp;i&lt;size;&nbsp;i++){&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("&nbsp;&nbsp;"&nbsp;+&nbsp;parser.getAttributeName(i));&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("&nbsp;&nbsp;"&nbsp;+&nbsp;parser.getAttributeValue(i));&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(eventType&nbsp;==&nbsp;XmlPullParser.END_TAG)&nbsp;{&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("&nbsp;"&nbsp;+&nbsp;parser.getName());&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(eventType&nbsp;==&nbsp;XmlPullParser.TEXT)&nbsp;{&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("&nbsp;&nbsp;"&nbsp;+&nbsp;parser.getText());&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eventType&nbsp;=&nbsp;parser.next();&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li class="">&nbsp;&nbsp;</li>
    <li class="alt">}&nbsp;&nbsp;</li>
</ol>
</div>
<br>
现在我们来看下我们解释wml的java文件<br>
现在解释下上面的东西，<br>
XmlPullParser 只是个规范，可以到<a href="http://xmlpull.org/" _fcksavedurl="http://xmlpull.org/">http://xmlpull.org/ </a>下载。我们来看看这个规范要求我们做些什么。<br>
里面主要的方法有
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"> </div>
<ol class="dp-j" start="1">
    <li class="alt">//定义一个事件采用回调的方式，直到读取xml完毕。  </li>
    <li class="">public int getEventType() throws XmlPullParserException ；  </li>
    <li class="alt">//遍历下一个事件，返回一个事件的类型  </li>
    <li class="">public int next() throws XmlPullParserException, IOException  </li>
    <li class="alt">//得到当前Tag名字  </li>
    <li class="">public String getName()；  </li>
    <li class="alt">//获取文本  </li>
    <li class="">public String getText()；  </li>
    <li class="alt">  <br>
    </li>
    <li class="">//得到当前Tag下面的属性数量  </li>
    <li class="alt">public int getAttributeCount() ；  </li>
    <li class="">//得到当前Tag下面指定位置的属性名称  </li>
    <li class="alt">public String getAttributeName(int index)；  </li>
    <li class="">  <br>
    </li>
    <li class="alt">//得到当前Tag下面指定位置的属性植  </li>
    <li class="">public String getAttributeValue(int index);  </li>
</ol>
</div>
<br>
我们理解了XmlPullParser 可以自己实现一个XmlPullParser。不过java世界里好东西就是多。已经有人帮我们做了。<br>
啊就是kxml。<br>
这个API本身很简单。当时要把一个完整的wml解释并绘制在手机上还是要花相当的时间的。
<br><img src ="http://www.blogjava.net/gooogle/aggbug/116381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G视线</a> 2007-05-10 09:13 <a href="http://www.blogjava.net/gooogle/archive/2007/05/10/116381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用一个简单的例子来看MIDlet的生命周期</title><link>http://www.blogjava.net/gooogle/archive/2007/05/09/116091.html</link><dc:creator>3G视线</dc:creator><author>3G视线</author><pubDate>Wed, 09 May 2007 00:40:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/05/09/116091.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/116091.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/05/09/116091.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/116091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/116091.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文用一个简单的例子来看MIDlet的生命周期 用一个简单的例子来看MIDlet  的生命周期 想来估计也没有比网上教程说的更清楚了，我这里摘录的只是文字，从www.j2medev.com来获取，更详细的资料可以到www.j2medev.com上查看。我将会以一个例子跟查看官方的源代码来分析它们。理解J2ME 的体系结构并不像想象的那么容易，我们觉得读更多的资料帮助也不大，我们...&nbsp;&nbsp;<a href='http://www.blogjava.net/gooogle/archive/2007/05/09/116091.html'>阅读全文</a><img src ="http://www.blogjava.net/gooogle/aggbug/116091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G视线</a> 2007-05-09 08:40 <a href="http://www.blogjava.net/gooogle/archive/2007/05/09/116091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ME的概述，结构，现在与未来，以及我能用J2ME做什么？</title><link>http://www.blogjava.net/gooogle/archive/2007/05/08/115836.html</link><dc:creator>3G视线</dc:creator><author>3G视线</author><pubDate>Tue, 08 May 2007 01:00:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/05/08/115836.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/115836.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/05/08/115836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/115836.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/115836.html</trackback:ping><description><![CDATA[<p><a name="_Toc166223877"><strong>J2ME</strong></a><strong>的概述，结构，现在与未来，以及我能用J2ME</strong><strong>做什么？</strong><strong></strong></p>
<p><strong>目录</strong><!--[if supportFields]><strong><em>
TOC \o &quot;1-3&quot; \h \z </em></strong><![endif]--></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224727">前言... <!--[if supportFields]> PAGEREF _Toc166224727 \h <![endif]-->1<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700320037000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224728">J2ME 是什么？... <!--[if supportFields]> PAGEREF _Toc166224728 \h <![endif]-->1<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700320038000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224729">J2ME 总体架构... <!--[if supportFields]> PAGEREF _Toc166224729 \h <![endif]-->1<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700320039000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224730">配置概述... <!--[if supportFields]> PAGEREF _Toc166224730 \h <![endif]-->2<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700330030000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224731">简表概述... <!--[if supportFields]> PAGEREF _Toc166224731 \h <![endif]-->2<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700330031000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224732">J2ME 目标设备... <!--[if supportFields]> PAGEREF _Toc166224732 \h <![endif]-->3<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700330032000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224733">J2ME、J2SE 与 J2EE 之间的比较... <!--[if supportFields]> PAGEREF _Toc166224733 \h <![endif]-->3<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700330033000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224734">J2ME的现状。... <!--[if supportFields]> PAGEREF _Toc166224734 \h <![endif]-->4<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700330034000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224735">我能用J2ME做什么呢？... <!--[if supportFields]> PAGEREF _Toc166224735 \h <![endif]-->5<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700330035000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><a href="http://www.blogjava.net/gooogle/admin/EditPosts.aspx?opt=1#_Toc166224736">下篇文章我要为大家做的事情... <!--[if supportFields]> PAGEREF _Toc166224736 \h <![endif]-->5<!--[if gte mso 9]><xml>
08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360036003200320034003700330036000000
</xml><![endif]--><!--[if supportFields]><![endif]--></a></p>
<p><!--[if supportFields]><strong><em></em></strong><![endif]--><!--[if !supportEmptyParas]-->&nbsp;<!--[endif]--></p>
<h2 style="line-height: normal;"><a name="_Toc166223878"></a>
<p>对于这一篇文章，我觉得没有比现有的资料更详细了，所以我把那些现有的文字搬到这里来。并把这些内容作为我的系列文章的砸转石。</p>
<h2 style="line-height: normal;"><a name="_Toc166223879"></a><a name="_Toc166223947"></a><a name="_Toc166224557"></a><a name="_Toc166224728">J2ME </a>是什么？ </h2>
<p>Sun
Microsystems 将 J2ME 定义为&#8220;一种以广泛的消费性产品为目标的的高度优化的 Java 运行时环境，包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统。&#8221;
自从 1999 年 6 月在 JavaOne Developer Conference 上声明之后，J2ME 为小型设备带来了 Java 语言的跨平台功能，允许移动无线设备共享应用程序。有了
J2ME，Sun 已经使 Java 平台能够适应集成了或基于小型计算设备的用户产品。</p>
<h2 style="line-height: normal;"><a name="_Toc166223880"></a><a name="_Toc166223948"></a><a name="_Toc166224558"></a><a name="_Toc166224729">J2ME </a>总体架构 </h2>
<p>J2ME 使用配置和简表定制
Java 运行时环境 (JRE)。作为一个完整的 JRE，J2ME 由配置和简表组成，配置决定了使用的 JVM，而简表通过添加特定于域的类来定义应用程序。</p>
<p><em>配置</em>将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的特定 JVM。我们将在 <a href="http://www.blogjava.net/gooogle/admin/j-j2me-4-1.shtml">J2ME 配置</a>一章中详细讨论配置。 </p>
<p><em>简表</em>定义应用程序；特别地，它向 J2ME 配置中添加特定于域的类，定义设备的某种作用。我们将在 <a href="http://www.blogjava.net/gooogle/admin/j-j2me-5-1.shtml">J2ME 简表</a>一章中深入介绍简表。
</p>
<p>下面的图表描述了不同的虚拟机、配置和简表之间的关系。它同时把
J2SE API 和它的 Java 虚拟机进行了比较。虽然 J2SE 虚拟机通常被称为一种 JVM，但是 J2ME 虚拟机、KVM 和 CVM 都是 JVM 的子集。KVM
和 CVM 均可被看作是一种 Java 虚拟机 -- 它们是 J2SE JVM 的压缩版，并特定于 J2ME。 </p>
<p><!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img src="file:///C:/DOCUME%7E1/fox/LOCALS%7E1/Temp/msoclip1/01/clip_image002.jpg" v:shapes="_x0000_i1025" border="0" height="275" width="500"><!--[endif]--></p>
<h2 style="line-height: normal;"><a name="_Toc166223881"></a><a name="_Toc166223949"></a><a name="_Toc166224559"></a><a name="_Toc166224730">配置概述</a></h2>
<p>配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的特定 JVM。虽然还可能在将来定义其他的配置，但当前 J2ME 存在两种配置：</p>
<ul type="disc">
    <li class="MsoNormal"><strong>连接限制设备配置</strong><strong> (CLDC)</strong> 特别与 KVM 一起用于内存有限的 16 位或 32 位设备。这是用于开发小型 J2ME 应用程序的配置（虚拟机）。（从开发的角度来看）它的大小限制让它比 CDC 更有趣、更具挑战性。CLDC 同时还是用于开发绘图工具应用程序的配置。 Palm 电脑便是一个运行小应用程序的小型无线设备的示例。我们将在 <a href="http://www.blogjava.net/gooogle/admin/j-j2me-4-1.shtml">J2ME 配置</a>一章中深入介绍 CLDC。</li>
    <li class="MsoNormal"><strong>连接设备配置</strong><strong> (CDC)</strong>
    与 C 虚拟机 (CVM) 一起使用，用于要求内存超过 2 兆的 32 位体系结构。互联网电视机顶盒便是这类设备的一个示例。虽然稍后我们将在 <a href="http://www.blogjava.net/gooogle/admin/j-j2me-11-1.shtml">CDC API</a> 一章中简要介绍 CDC，但它并不在本教程的范围内。</li>
</ul>
<h2 style="line-height: normal;"><a name="_Toc166223882"></a><a name="_Toc166223950"></a><a name="_Toc166224560"></a><a name="_Toc166224731">简表概述</a> </h2>
<p>简表定义了您的应用程序所支持的设备类型。特别地，它向
J2ME 配置添加了特定于域的类来定义设备的某种作用。简表建立在配置的顶部。已经为 J2ME 定义了两种简表：KJava 和移动信息设备简表 (MIDP)，它们也被建立在
CDLC 上。这两种简表适用于小型设备。 </p>
<p>有一种纲要简表，您可以在它的上面创建自己的简表，这种纲要简表也称为基础表，可供
CDC 使用。然而，在本教程中，我们只重点介绍建立在 CLDC 顶部，适用于小型设备的简表。 </p>
<p>我们将在后面的章节中讨论上述这些简表，还会使用
KJava 和 MIDP 建立一些示例应用程序。 </p>
<h2 style="line-height: normal;"><a name="_Toc166223883"></a><a name="_Toc166223951"></a><a name="_Toc166224561"></a><a name="_Toc166224732">J2ME </a>目标设备 </h2>
<p>使用
CLDC 开发的 J2ME 应用程序的目标设备通常具有以下特征：</p>
<ul type="disc">
    <li class="MsoNormal">可供 Java 平台使用的 160 到 512 千字节的总内存 </li>
    <li class="MsoNormal">功率有限，常常是电池供电 </li>
    <li class="MsoNormal">网络连通性，常常是无线的、不一致的连接并且带宽有限 </li>
    <li class="MsoNormal">用户接口混乱，程度参差不齐；有时根本就没有接口 </li>
</ul>
<p>一些
CLDC 支持的设备，包括无线电话、寻呼机、主流个人数字助手 (PDA)，以及小型零售支付终端。</p>
<p>依照
Sun Microsystems，CDC 的目标设备通常具有以下特征： </p>
<ul type="disc">
    <li class="MsoNormal">使用 32 位处理器 </li>
    <li class="MsoNormal">2 兆字节或更多可供 Java 平台使用的总内存 </li>
    <li class="MsoNormal">设备要求的 Java 2 &#8220;蓝皮书&#8221;虚拟机的全部功能 </li>
    <li class="MsoNormal">网络连通性，常常是无线的、不一致的连接并且带宽有限 </li>
    <li class="MsoNormal">用户接口混乱，程度参差不齐；有时根本就没有接口 </li>
</ul>
<p>一些
CDC 支持的设备，包括常驻网关、智能电话和通讯器、PDA、管理器、家用电器、销售网点终端以及汽车导航系统。</p>
<h2 style="line-height: normal;"><a name="_Toc166223884"></a><a name="_Toc166223952"></a><a name="_Toc166224562"></a><a name="_Toc166224733">J2ME</a>、J2SE 与 J2EE 之间的比较</h2>
<p>下面的图表描述了支持 J2ME 应用程序的设备，同时说明了 J2ME 适合 Java 平台之处： </p>
<p><!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img src="file:///C:/DOCUME%7E1/fox/LOCALS%7E1/Temp/msoclip1/01/clip_image004.jpg" v:shapes="_x0000_i1026" border="0" height="398" width="554"><!--[endif]--></p>
<p>以上是从官方文档摘录下来的文章。下的一些文字是从j2medev.com上获取的，版权贵j2medev.com所有。我只是提供给大家学习之用</p>
<h2 style="line-height: normal;"><a name="_Toc166223885"></a><a name="_Toc166223953"></a><a name="_Toc166224563"></a><a name="_Toc166224734">J2ME</a>的现状。</h2>
<p>随着移动通信的突飞猛进，移动开发这个新鲜的字眼慢慢成为开发者关注的热点。在CSDN</p>
<p>的最近一份调查显示，有24.34%的受访者涉足嵌入式/移动设备应用开发，这个数字可能略高于实际的比例，但也足可说明嵌入式/移动设备应用开发是一块诱人的新鲜奶酪。J2ME（Java 2Micro Edition）是嵌入式/移动应用平台的王者，Linux 和WinCE 分列二、三位。Nokia 等厂商力推的Symbian 平台目前开发者占有率尚未达到满意水平，考虑到调查项合并了嵌入式设备(例如PDA)和移动设备(例如智能手机)，Symbian、WinCE 系列在移动平台上会是竞争的主要两方。如果厂商能在标准实现上做得更加规范，则J2ME 的跨平台特性会挥得更加淋漓尽致，继续保有王者地位。本章将从J2ME 的体系结构和MIDlet 应用程序模型。</p>
<p><strong>J2ME的未来。</strong></p>
<p>结合我从事1年的j2me工作来讲，j2me在企业方面的应该还算不多，而且成功的也比较少，不过在游戏上的到是全面开花，现在很多pc上的游戏手机上都有复制品。而且收费的方式1.以移动百宝箱的形式，比如下载一个游戏给多少钱，这样的模式。</p>
<p>2.网络游戏的形式，比如售卖点卡之类的，虚拟物品交易等。（不过这方面占的比例很小）。</p>
<p>3.会员收费制度，比如一些提供增值服务的软件。靠收取会员费用。这方面的应用有IM，股票之类的交易系统，彩票资讯系统等。</p>
<p>现阶段J2ME的发展还处在一个爆发增长的前期。出于JSR出的各个规划，对于各大手机厂商支持不统一，导致了业界所说的write once
debug anywhere! 另外一个就是手机网络的各种限制。比如移动全球通跟现在的互联网一样，可以支持各种协议，但是动感地带等其他卡却只能支持HTTP。所以一些高端的应用没办法推广。而且网络速度也不快。</p>
<p>现在可以说是J2ME本身的技术已经相对成熟，而且市面上的终端基本都符合了大规模的应用J2ME，就只欠东风了，而这东风我想就是-----3G了。</p>
<p>所以说J2ME的未来在3G</p>
<h2 style="line-height: normal;"><a name="_Toc166224564"></a><a name="_Toc166224735">我能用</a>J2ME做什么呢？</h2>
<p>经过上面的学习，我想大家对J2ME也算是有可初步的认识了。有了基本认识，心里自然就会想到，我学习它就是要让它为我所用，这是最重要的。J2ME能为我做些什么了？下面让我们来看看我找的这些优秀的应该吧。</p>
<p><!--[if !supportLists]-->1．&nbsp; <!--[endif]-->发达通----一个足球即时资讯软件，这款软件是我入道的第一个j2me软件。网络地址是：</p>
<p><a href="http://wap.fadato.com/">http://wap.fadato.com/</a></p>
<p><!--[if !supportLists]-->2．&nbsp; <!--[endif]-->BOBI -----同上， 地址： <a href="http://www.exgoal.com/ViewPage.action?siteNodeId=19">http://www.exgoal.com/ViewPage.action?siteNodeId=19</a></p>
<p><!--[if !supportLists]-->3．&nbsp; <!--[endif]-->UCWEB ---- 一个用j2me写成的Wap浏览器，即说有相当部分人群在使用.</p>
<p>地址：<a href="http://www.ucweb.com/">http://www.ucweb.com</a>/</p>
<p><!--[if !supportLists]-->4．&nbsp; <!--[endif]-->航海家 --- 同上，听说活跃用户超过了UCWEB了。</p>
<p>地址：<a href="http://3gtb.com:1080/drupal/?q=node/13">http://3gtb.com:1080/drupal/?q=node/13</a></p>
<p><!--[if !supportLists]-->5．&nbsp; <!--[endif]-->WAP EXPLERE ---同上，这个软件只是完成了一个框架，出自我的手笔。</p>
<p>地址：<a href="http://blog.csdn.net/gooogledev/archive/2007/03/30/1547004.aspx">http://blog.csdn.net/gooogledev/archive/2007/03/30/1547004.aspx</a></p>
<p>6．至于股票之类的应用想来也很多，大家可以上网搜索下，游戏这里就不做介绍了</p>
<p>综合可以大概了解到，我们能做以下方面的工作：</p>
<p><!--[if !supportLists]-->1．&nbsp; <!--[endif]-->游戏。</p>
<p><!--[if !supportLists]-->2．&nbsp; <!--[endif]-->企业应用，比如足球咨询，彩票咨询，配合SP使用，做的好的话，前景也不错</p>
<p><!--[if !supportLists]-->3．&nbsp; <!--[endif]-->通用软件，好的软件是永远被人记住的&nbsp;<!--[endif]--></p>
<p>在这里我总结下J2ME能实现的功能</p>
<p><!--[if !supportLists]-->1．&nbsp; <!--[endif]-->提供一个高级的UI实现各种企业应用程序</p>
<p><!--[if !supportLists]-->2．&nbsp; <!--[endif]-->提供一个低级的UI实现游戏，其他软件所需要的基础设施。</p>
<p><!--[if !supportLists]-->3．&nbsp; <!--[endif]-->提供对本地程序的调用，比如调用一个本地Wap浏览器。</p>
<p><!--[if !supportLists]-->4．&nbsp; <!--[endif]-->提供对本地文件的访问</p>
<p><!--[if !supportLists]-->5．&nbsp; <!--[endif]-->提供对本地电话号码等信息的读取</p>
<p><!--[if !supportLists]-->6．&nbsp; <!--[endif]-->提供对MMS，SMS等支持，也可以提供打电话的支持</p>
<p><!--[if !supportLists]-->7．&nbsp; <!--[endif]-->提供对音频，视频文件的处理API。这样我们就可以构建各种丰富的娱乐软件了。</p>
<p><!--[if !supportLists]-->8．&nbsp; <!--[endif]-->提供对网络的基本支持。包括http等协议。这样就可以构建丰富的网络应用程序</p>
<p><!--[if !supportLists]-->9．&nbsp; <!--[endif]-->提供J2SE的简化API，具体要去查看API。</p>
<p>10．3D的支持。这样就可以构建一个好游戏了。</p>
<p>11．其他。</p>
<h2 style="line-height: normal;"><a name="_Toc166224736">下篇文章我要为大家做的事情</a></h2>
<p>一个入门的详细的例子，等着我啊！！！！！哈</p>
<br><img src ="http://www.blogjava.net/gooogle/aggbug/115836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G视线</a> 2007-05-08 09:00 <a href="http://www.blogjava.net/gooogle/archive/2007/05/08/115836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>