<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Liu Zhongshu &#187; netbeans</title>
	<atom:link href="http://www.liuzhongshu.com/tag/netbeans/feed" rel="self" type="application/rss+xml" />
	<link>http://www.liuzhongshu.com</link>
	<description>开心工作，用心玩。</description>
	<lastBuildDate>Sat, 31 Jul 2010 02:47:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Netbeans 6与Tomcat</title>
		<link>http://www.liuzhongshu.com/code/netbeans-and-tomcat.html</link>
		<comments>http://www.liuzhongshu.com/code/netbeans-and-tomcat.html#comments</comments>
		<pubDate>Sat, 22 Nov 2008 02:59:08 +0000</pubDate>
		<dc:creator>zhongshu</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/code/netbeans-and-tomcat.html</guid>
		<description><![CDATA[Netbeans 6.1下已经带有一个Tomcat了，因此用起来很方便，记录几点注意事项：
1. Configuration files下的context.xml中在Context后加上reloadable=&#8221;true&#8221; 就可以让servlet自动重新加载了。
2. 在配置Tomcat server时的那个密码，应该在第一次做开发前就配好（否则如果不改的话，是一个随机生成的密码），因为这个密码会被存到用户的tomcat配置中，以后如果改这个密码，因为已经有了tomcat的用户配置，Netbeans就不会将新的密码生效，反而会导致Netbeans使用错误的密码去连接Tomcat。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.netbeans.org/">Netbeans </a>6.1下已经带有一个<a href="http://tomcat.apache.org/">Tomcat</a>了，因此用起来很方便，记录几点注意事项：</p>
<p>1. Configuration files下的context.xml中在Context后加上reloadable=&#8221;true&#8221; 就可以让servlet自动重新加载了。</p>
<p>2. 在配置Tomcat server时的那个密码，应该在第一次做开发前就配好（否则如果不改的话，是一个随机生成的密码），因为这个密码会被存到用户的tomcat配置中，以后如果改这个密码，因为已经有了tomcat的用户配置，Netbeans就不会将新的密码生效，反而会导致Netbeans使用错误的密码去连接Tomcat。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/netbeans-and-tomcat.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netbeans6.0的Visual Mobile Designer</title>
		<link>http://www.liuzhongshu.com/code/netbeans60-the-visual-mobile-designer.html</link>
		<comments>http://www.liuzhongshu.com/code/netbeans60-the-visual-mobile-designer.html#comments</comments>
		<pubDate>Sun, 23 Mar 2008 14:16:33 +0000</pubDate>
		<dc:creator>zhongshu</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/626</guid>
		<description><![CDATA[需要承认，我一直没有注意Netbeans的Visual Mobile Designer（VMD），因为毕竟Netbeans不是VB/Delphi这种专门的RAD工具，在Netbeans里面提供这种让程序员用所见即所得的方式去控制界面和自动生成代码的工具，总感觉有些怪异，而且VMD还不仅仅是画界面，它还提供了程序逻辑功能，有点象流程图，并且里面的箭头都是“绘制”出来的，你会习惯用这种方式写程序吗？
由于J2ME本身用户界面部分的代码并不复杂，因此手动用代码来实现其实也可以接受，不过如果想快速写一个程序，VMD还是蛮合适的。而且除了标准的J2ME控件外，VMD还提供了一些基于J2ME控件的Custom控件（想一想VB/Delphi都有这些），比如什么Splash/Login 等等，这些如果手动写代码还是有点麻烦的，所以想用这些的话，VMD也挺合适的。
至于使用“流程图”来代替逻辑部分的编程，显然只能对小程序适用，而恰恰很多J2ME的程序都很小，因此也可以一用。我自己试用的结果是效率是有一些提高，而且和所见即所得的界面编辑功能结合起来，还真挺方便的，印象大为改观，什么时候用这种方式“画”一个程序出来看看效果如何。
一些参考文档：

Sun的VMD演示视频
Exploring the NetBeans Visual Mobile Designer（这个文档有点老，对应的是Netbeans4.1，不过里面的概念可以看一看）

]]></description>
			<content:encoded><![CDATA[<p>需要承认，我一直没有注意Netbeans的Visual Mobile Designer（VMD），因为毕竟Netbeans不是VB/Delphi这种专门的RAD工具，在Netbeans里面提供这种让程序员用所见即所得的方式去控制界面和自动生成代码的工具，总感觉有些怪异，而且VMD还不仅仅是画界面，它还提供了程序逻辑功能，有点象流程图，并且里面的箭头都是“绘制”出来的，你会习惯用这种方式写程序吗？</p>
<p>由于J2ME本身用户界面部分的代码并不复杂，因此手动用代码来实现其实也可以接受，不过如果想快速写一个程序，VMD还是蛮合适的。而且除了标准的J2ME控件外，VMD还提供了一些基于J2ME控件的Custom控件（想一想VB/Delphi都有这些），比如什么Splash/Login 等等，这些如果手动写代码还是有点麻烦的，所以想用这些的话，VMD也挺合适的。</p>
<p>至于使用“流程图”来代替逻辑部分的编程，显然只能对小程序适用，而恰恰很多J2ME的程序都很小，因此也可以一用。我自己试用的结果是效率是有一些提高，而且和所见即所得的界面编辑功能结合起来，还真挺方便的，印象大为改观，什么时候用这种方式“画”一个程序出来看看效果如何。</p>
<p>一些参考文档：</p>
<ul>
<li><a href="http://www.netbeans.org/kb/60/mobility/vmd-and-ws-screencast.html" target="_blank">Sun的VMD演示视频</a></li>
<li><a href="http://www.netbeans.org/kb/41/exploringmvd.html" target="_blank">Exploring the NetBeans Visual Mobile Designer</a>（这个文档有点老，对应的是Netbeans4.1，不过里面的概念可以看一看）</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/netbeans60-the-visual-mobile-designer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synclast</title>
		<link>http://www.liuzhongshu.com/code/synclast.html</link>
		<comments>http://www.liuzhongshu.com/code/synclast.html#comments</comments>
		<pubDate>Sun, 16 Mar 2008 11:39:03 +0000</pubDate>
		<dc:creator>zhongshu</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/618</guid>
		<description><![CDATA[Synclast是J2ME的一个UI库，提供了常见的一些GUI控件，这些GUI控件在不同的手机中可以保持一致的外观。
需求
一般来说，J2ME的GUI有两层API，一层是高级UI，提供了各种GUI控件，但是J2ME只是规定了这些控件的接口，没有规定实现，因此不同厂商的这些UI的实现有很大的差异，也就是在不同的手机上看到的UI可能会有差异，另一层是基于Canvas的低层绘图接口，这一层次上需要应用程序直接在Canvas上绘制用户界面，不提供控件功能，但是好处是在各个手机上有一致的效果。
很多应用程序希望得到这种一致的效果，但直接在Canvas上编程又太麻烦了，于是就有了各种基于Canvas的UI库，Synclast是其中的一个。
安装
在Ubuntu下，不能用apt-get来安装synclast，需要到Sourceforge上去下载（似乎已经很久没有更新版本了，最新的可下载版本还是2004年的，但直接用cvs版本的话会有不少更新），展开后的Synclast包括了源码，例子以及编译好的jar包，要安装例子程序，可以使用下面的命令：

export J2ME_HOME=/usr/local/netbeans-6.0/mobility8/WTK2.5.2/

sudo ant demo
这会将Synclast的例子程序安装到系统中去。
运行
启动Netbeans6，选择New Project中的Mobility下的Import Wireless Toolkit Project，就自然可以看到SynclastUIDemo这个工程了，创建它，剩下的工作就很简单了，直接在Sun模拟器下运行就可以看到Synclast UI的几个例子。
因为我没有用过它，所以不作评价，类似的这种UI库还有J4ME，J2ME Polish等，不过感觉还是不够多，可能和J2ME在手机应用程序领域的流行度有关。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.synclast.com/ui_api.jsp" target="_blank">Synclast</a>是J2ME的一个UI库，提供了常见的一些GUI控件，这些GUI控件在不同的手机中可以保持一致的外观。</p>
<p><strong>需求</strong></p>
<p>一般来说，J2ME的GUI有两层API，一层是高级UI，提供了各种GUI控件，但是J2ME只是规定了这些控件的接口，没有规定实现，因此不同厂商的这些UI的实现有很大的差异，也就是在不同的手机上看到的UI可能会有差异，另一层是基于Canvas的低层绘图接口，这一层次上需要应用程序直接在Canvas上绘制用户界面，不提供控件功能，但是好处是在各个手机上有一致的效果。</p>
<p>很多应用程序希望得到这种一致的效果，但直接在Canvas上编程又太麻烦了，于是就有了各种基于Canvas的UI库，Synclast是其中的一个。</p>
<p><strong>安装</strong></p>
<p>在Ubuntu下，不能用apt-get来安装synclast，需要到<a href="http://sourceforge.net/project/showfiles.php?group_id=83391" target="_blank">Sourceforge</a>上去下载（似乎已经很久没有更新版本了，最新的可下载版本还是2004年的，但直接用cvs版本的话会有不少更新），展开后的Synclast包括了源码，例子以及编译好的jar包，要安装例子程序，可以使用下面的命令：</p>
<pre>
export J2ME_HOME=/usr/local/netbeans-6.0/mobility8/WTK2.5.2/

sudo ant demo</pre>
<p>这会将Synclast的例子程序安装到系统中去。</p>
<p><strong>运行</strong></p>
<p>启动Netbeans6，选择New Project中的Mobility下的Import Wireless Toolkit Project，就自然可以看到SynclastUIDemo这个工程了，创建它，剩下的工作就很简单了，直接在Sun模拟器下运行就可以看到Synclast UI的几个例子。</p>
<p>因为我没有用过它，所以不作评价，类似的这种UI库还有<a href="http://code.google.com/p/j4me/" target="_blank">J4ME</a>，<a href="http://www.j2mepolish.org/cms/" target="_blank">J2ME Polish</a>等，不过感觉还是不够多，可能和J2ME在手机应用程序领域的流行度有关。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/synclast.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>J2ME Connector.open陷阱</title>
		<link>http://www.liuzhongshu.com/code/j2me-connectoropen-trap.html</link>
		<comments>http://www.liuzhongshu.com/code/j2me-connectoropen-trap.html#comments</comments>
		<pubDate>Fri, 01 Feb 2008 14:15:57 +0000</pubDate>
		<dc:creator>zhongshu</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/593</guid>
		<description><![CDATA[这是J2ME里处理Web连接最常用的方法， 但一个小问题很容易被遇到：
Connector.open通常会使得J2ME虚拟机弹出一个警告：是否连接网络？真实的手机上也会有类似的警告（比如Nokia N73）。而这个警告是需要用户选择同意的，如果在程序的主线程中执行Connector.open，由于主线程同时需要处理GUI事件，那么这里就形成一个&#8221;死锁&#8221;。
如果是用Netbeans的话，Netbeans在调试运行时，会&#8221;发现&#8221;这类主线程中的网络调用，并在调试控制台显示警告信息，提示这类调用应该在单独的线程中执行，这个比较人性化，要是它能自动实现这个单独的线程，那岂不更妙（做梦吧。。。）
]]></description>
			<content:encoded><![CDATA[<p>这是J2ME里处理Web连接最常用的方法， 但一个小问题很容易被遇到：</p>
<p>Connector.open通常会使得J2ME虚拟机弹出一个警<wbr></wbr>告：是否连接网络？真实的手机上也会有类似的警告（比如Nokia N73）。而这个警告是需要用户选择同意的，如果在程序的主线程中执行Connector.open，由于主线程同时需要处理GUI事件，那么这里就形成一个&#8221;死锁&#8221;。</p>
<p>如果是用Netbeans的话，Netbeans在调试运行时，会&#8221;发现&#8221;这类主线程中的网络调用<wbr></wbr>，并在调试控制台显示警告信息，提示这类调用应该在单独的线程中执行，这个比较人性化，要是它能自动实现这个单独的线程，那岂不更妙（做梦吧。。。）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/j2me-connectoropen-trap.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>设置Sun J2ME模拟器</title>
		<link>http://www.liuzhongshu.com/code/sun-j2me-set-simulator.html</link>
		<comments>http://www.liuzhongshu.com/code/sun-j2me-set-simulator.html#comments</comments>
		<pubDate>Thu, 24 Jan 2008 11:01:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/426</guid>
		<description><![CDATA[Sun的模拟器我感觉还是不错的，不过还可以给它们做很多设置，在
/usr/local/netbeans-6.0/mobility8/WTK2.5.2/wtklib/devices
下面可以看到每种设备有一个目录，在每个目录下都有一个xxx.properties （xxx取决于设备名）文件，编辑这个文件就可以设置某类模拟器的很多细节参数，比如
设置 touch_screen = true 就可以得到一个带触摸屏的模拟器（当然要运行的程序也支持触摸屏，才能看到效果），Cool。  
]]></description>
			<content:encoded><![CDATA[<p>Sun的模拟器我感觉还是不错的，不过还可以给它们做很多设置，在</p>
<p>/usr/local/netbeans-6.0/mobility8/WTK2.5.2/wtklib/devices</p>
<p>下面可以看到每种设备有一个目录，在每个目录下都有一个xxx.properties （xxx取决于设备名）文件，编辑这个文件就可以设置某类模拟器的很多细节参数，比如</p>
<p>设置 touch_screen = true 就可以得到一个带触摸屏的模拟器（当然要运行的程序也支持触摸屏，才能看到效果），Cool。  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/sun-j2me-set-simulator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nokia 模拟器的调式</title>
		<link>http://www.liuzhongshu.com/code/nokia-simulator-mode.html</link>
		<comments>http://www.liuzhongshu.com/code/nokia-simulator-mode.html#comments</comments>
		<pubDate>Mon, 21 Jan 2008 11:02:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/527</guid>
		<description><![CDATA[使用Nokia模拟器可以很方便的在PC上调试midlet，不过我用下来最深的感受是，慢。。。
也许是我的PC性能不佳，也有可能是这个Nokia Emulator优化不够，又或是Windows系统有关，反正在Netbeans里面，直接调用Nokia Emulator来调试的话，肯定是Emulator连不上而超时（因为模拟器还在那慢腾腾的启动呢），如果先用一般的run模式启动模拟器运行一下midlet，然后不关闭模拟器，再选调试就可以了。
Nokia的SDK包还支持真机调试，需要在手机上装一个Debug agent，我还没有试过，不过Nokia模拟器的模拟度似乎很高，估计大部分情况时是不需要这个牛刀的。。。  
]]></description>
			<content:encoded><![CDATA[<p>使用Nokia模拟器可以很方便的在PC上调试midlet，不过我用下来最深的感受是，慢。。。</p>
<p>也许是我的PC性能不佳，也有可能是这个Nokia Emulator优化不够，又或是Windows系统有关，反正在Netbeans里面，直接调用Nokia Emulator来调试的话，肯定是Emulator连不上而超时（因为模拟器还在那慢腾腾的启动呢），如果先用一般的run模式启动模拟器运行一下midlet，然后不关闭模拟器，再选调试就可以了。</p>
<p>Nokia的SDK包还支持真机调试，需要在手机上装一个Debug agent，我还没有试过，不过Nokia模拟器的模拟度似乎很高，估计大部分情况时是不需要这个牛刀的。。。  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/nokia-simulator-mode.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nokia 模拟器</title>
		<link>http://www.liuzhongshu.com/code/nokia-simulator.html</link>
		<comments>http://www.liuzhongshu.com/code/nokia-simulator.html#comments</comments>
		<pubDate>Sun, 20 Jan 2008 11:16:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/524</guid>
		<description><![CDATA[在Nokia网站上下载Java开发SDK，可以得到一个不错的模拟器，不仅可以支持J2ME开发，用来在PC上玩&#8221;手机&#8221;也不错的。可惜目前仅支持Windows系统
下载
在Nokia的网站上选择合适的平台下载即可，我的手机是N73，自然选择S60，进去以后，页面后边可以看到有一个下拉框，列出了多个下载选项，比如 3rd Edition, FP2, Beta，这个就是S60v3的开发包了，FP2是指Feture pack2，相当于小版本号（反正我这么理解的）。选择这个就ok了，由于模拟器带了大量的手机程序，所以这个包很大。
安装
安装这个包很简单，安装完后，通常也要在J2ME开发环境中通知一下有了这个模拟器，在Netbeans，只需要在Java Platform对话框下把这个Nokia S60 Platform加进来就OK了（Netbeans会让选择一个目录）。
运行
运行之前，可以在Windows的Start菜单中，将这个模拟器切换为中文（不过中文汉化的不完全，有少量信息还是英文的），然后启动模拟器，就看到Nokia的一个&#8221;模拟手机&#8221;了，可是我运行了几遍都不能让这个手机&#8221;开机&#8221;，无奈， 使用命令行运行开发包下的一个sdk.exe（文档中这么写的），就可以了，不过很慢，要等10秒左右才看到&#8221;手机&#8221;的开机画面，以后再通过Start菜单运行模拟器，也可以&#8221;开机&#8221;了，大部分Nokia手机程序都在里面，还可以切换主题，很酷的样子，找时间试试里面的手机&#8221;硬件&#8221;，看看音乐播放/USB/红外/蓝牙是怎么模拟的，不过文档中如此说到，相机是模拟不了的，呵呵。
开发
如果是之前的Netbeans Project想使用这个新的模拟器，一定要为项目建立一个新的Configuration，并选择从Nokia S60 Platform中继承选项，而不能直接在原先的Sun模拟器上改（反正我这样做的结果是：运行时Nokia模拟器起不来）。不知什么原因，Netbeans6在Windows下的启动速度比Linux下慢很多（大约58秒vs30秒），怎么差这么多？
输入法
用这个版本的模拟器，可以看到它支持了中文拼音词组输入（这个应该可以比之前的输入法快不少），不错哈，不知什么时候能在我的N73真机上用。不过这个模拟器模拟的程度太高，在编辑框输入中文，居然不能用Windows的输入法（只能输进去英文），只能用下面的虚拟键一个个点，好慢啊。
]]></description>
			<content:encoded><![CDATA[<p>在Nokia网站上下载Java开发SDK，可以得到一个不错的模拟器，不仅可以支持J2ME开发，用来在PC上玩&#8221;手机&#8221;也不错的。可惜目前仅支持Windows系统</p>
<p><strong>下载</strong><br />
在<a href="http://www.forum.nokia.com/main/resources/tools_and_sdks/index.html">Nokia的网站</a>上选择合适的平台下载即可，我的手机是N73，自然选择S60，进去以后，页面后边可以看到有一个下拉框，列出了多个下载选项，比如 3rd Edition, FP2, Beta，这个就是S60v3的开发包了，FP2是指Feture pack2，相当于小版本号（反正我这么理解的）。选择这个就ok了，由于模拟器带了大量的手机程序，所以这个包很大。</p>
<p><strong>安装</strong><br />
安装这个包很简单，安装完后，通常也要在J2ME开发环境中通知一下有了这个模拟器，在Netbeans，只需要在Java Platform对话框下把这个Nokia S60 Platform加进来就OK了（Netbeans会让选择一个目录）。</p>
<p><strong>运行</strong><br />
运行之前，可以在Windows的Start菜单中，将这个模拟器切换为中文（不过中文汉化的不完全，有少量信息还是英文的），然后启动模拟器，就看到Nokia的一个&#8221;模拟手机&#8221;了，可是我运行了几遍都不能让这个手机&#8221;开机&#8221;，无奈， 使用命令行运行开发包下的一个sdk.exe（文档中这么写的），就可以了，不过很慢，要等10秒左右才看到&#8221;手机&#8221;的开机画面，以后再通过Start菜单运行模拟器，也可以&#8221;开机&#8221;了，大部分Nokia手机程序都在里面，还可以切换主题，很酷的样子，找时间试试里面的手机&#8221;硬件&#8221;，看看音乐播放/USB/红外/蓝牙是怎么模拟的，不过文档中如此说到，相机是模拟不了的，呵呵。</p>
<p><strong>开发</strong><br />
如果是之前的Netbeans Project想使用这个新的模拟器，一定要为项目建立一个新的Configuration，并选择从Nokia S60 Platform中继承选项，而不能直接在原先的Sun模拟器上改（反正我这样做的结果是：运行时Nokia模拟器起不来）。不知什么原因，Netbeans6在Windows下的启动速度比Linux下慢很多（大约58秒vs30秒），怎么差这么多？</p>
<p><strong>输入法</strong><br />
用这个版本的模拟器，可以看到它支持了中文拼音词组输入（这个应该可以比之前的输入法快不少），不错哈，不知什么时候能在我的N73真机上用。不过这个模拟器模拟的程度太高，在编辑框输入中文，居然不能用Windows的输入法（只能输进去英文），只能用下面的虚拟键一个个点，好慢啊。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/nokia-simulator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIDP 实例 I</title>
		<link>http://www.liuzhongshu.com/code/midp-examples-i.html</link>
		<comments>http://www.liuzhongshu.com/code/midp-examples-i.html#comments</comments>
		<pubDate>Wed, 16 Jan 2008 11:34:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/515</guid>
		<description><![CDATA[下面是一个简单的midlet，它会在屏幕上显示字符串Commander，并显示一个Exit的软键，按下这个软键会退出程序。 源码import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class Commander extends MIDlet {&#160; public void startApp() {&#160; &#160;&#160;&#160; Displayable d = new TextBox(&#34;TextBox&#34;, &#34;Commander&#34;, 20,  TextField.ANY); &#160;&#160;&#160; Command c = new Command(&#34;Exit&#34;, Command.EXIT, 0); &#160;&#160;&#160; d.addCommand(c);&#160;&#160;&#160; d.setCommandListener(new CommandListener() {&#160;&#160;&#160;&#160;&#160; public void commandAction(Command c, Displayable s) { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; notifyDestroyed();&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160; } );&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160; Display.getDisplay(this).setCurrent(d);&#160; }&#160; public void pauseApp() { [...]]]></description>
			<content:encoded><![CDATA[<p>下面是一个简单的midlet，它会在屏幕上显示字符串Commander，并显示一个Exit的软键，按下这个软键会退出程序。<br /> <b><br />源码</b><br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;<br />public class Commander extends MIDlet {<br />&nbsp; public void startApp() {&nbsp; <br />&nbsp;&nbsp;&nbsp; Displayable d = new TextBox(&quot;TextBox&quot;, &quot;Commander&quot;, 20,  TextField.ANY); <br />&nbsp;&nbsp;&nbsp; Command c = new Command(&quot;Exit&quot;, Command.EXIT, 0); <br />&nbsp;&nbsp;&nbsp; d.addCommand(c);<br />&nbsp;&nbsp;&nbsp; d.setCommandListener(new CommandListener() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void commandAction(Command c, Displayable s) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; notifyDestroyed();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; } );<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Display.getDisplay(this).setCurrent(d);<br />&nbsp; }<br />&nbsp; public void pauseApp() { }<br />&nbsp; public void destroyApp(boolean unconditional) { } <br />}</p>
<p><b>说明</b><br />这里涉及了MIDP程序的几个基本概念：<br />* MIDP程序被称为midlet，它的生命周期很简单，创建并构造后处于paused状态，然后通过StartApp进入Actived状态，退出时会调用DestroyApp函数，而actived状态可以通过调用pauseApp()回到paused状态，因此，一个midlet总是能看到这几个基本函数， 这几个函数通常是被应用程序管理器调用的，但程序自己也可以调用（下面讲解）。 <br />* Display对应了整个midlet的显示部分，它有可能是不可见的（比如处于后台的midlet），而在Display上，自然可以设置Displayable对象，这个Displayable对象就象一般的GUI widget，有其家族谱系，不过在MIDP中，GUI widget比较简单，上面的例子用到的是TextBox。<br />* MIDP对用户输入做了高度抽象，Command就是抽象后的产物，它表示MIDP设备（比如手机）的一个输入，不同的设备上的Java实现会将Command对应到设备的某个输入上，比如使用软键，触摸屏等。多个Command可以加入到一个Displayable对象上，表示在显示这个对象时可执行的多个动作，而这些Command的安排也由Java实现去安排（比如组织为多个软键，或菜单）。 <br />* Command可以注册一个CommandListener来执行command的响应，实际上就是一个回调函数了。上面的例子很简单，为了退出，调用了一个notifyDestroyed。</p>
<p><b>NotifyDestroyed和DestroyApp（boolean）</b><br />这个区别很重要：<br />* 当midlet被强制退出（比如用户通过程序管理器杀程序），DestroyApp会被调用，并带参数true，这种情况下notifyDestroyed不会被调，也不需要主动调。 <br />* 而应用程序自己希望退出时，比如用户按了什么键，或工作已经做完了，那么应该调用NotifyDestroyed()，这时DestoyApp不会被触发，但通常主动退出前，也需要清理资源，所以一般的程序会在NotifyDestroyed前调用DestroyApp，会了和上面的退出区别，通常会带个false参数，但实际上这种情况下，不是一定要DestroyApp（比如没有资源需要释放），也不是一定要带false参数（比如没有什么需要和强杀区别，所以也可以带true参数）。 <br /><span></span><br /><b>编译和发布</b><br />在Netbeans里面，无论选择何种configuration，这小程序都是能编译，仿真运行的，但要是想发布到手机上，必须选择合适的Device Configuration和Device Profile（Device倒是无所谓，似乎只影响仿真），比如对于N73，缺省的MIDP-2.1会导致最终程序无法在手机上安装，降为MIDP-2.0就可以了。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/midp-examples-i.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下开发Nokia，难</title>
		<link>http://www.liuzhongshu.com/code/nokia-developed-under-linux-it-is-difficult.html</link>
		<comments>http://www.liuzhongshu.com/code/nokia-developed-under-linux-it-is-difficult.html#comments</comments>
		<pubDate>Tue, 15 Jan 2008 11:27:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/511</guid>
		<description><![CDATA[想在Linux开发Nokia手机程序，怕是要失望了， Nokia的java SDK只支持在Windows下使用， 这很让人难以理解，从集成开发环境（Netbeans或Eclipse），到Sun的J2ME SDK参考实现，以及Sun的虚拟机都支持了Linux平台，为什么Nokia不支持呢？ Nokia的网站上看到一些解释是虚拟机在Linux下实现工作量大，不过我觉得这只是一个借口，还是没有重视Linux，哎，短视啊。
不过索爱，摩托也不支持Linux，摩托更可气，它的手机上已经在跑Linux，却需要在Windows下开发Java应用程序，看看 这里 。
]]></description>
			<content:encoded><![CDATA[<p>想在Linux开发Nokia手机程序，怕是要失望了， Nokia的java SDK只支持在Windows下使用， 这很让人难以理解，从集成开发环境（Netbeans或Eclipse），到Sun的J2ME SDK参考实现，以及Sun的虚拟机都支持了Linux平台，为什么Nokia不支持呢？ Nokia的网站上看到一些解释是虚拟机在Linux下实现工作量大，不过我觉得这只是一个借口，还是没有重视Linux，哎，短视啊。</p>
<p>不过索爱，摩托也不支持Linux，摩托更可气，它的手机上已经在跑Linux，却需要在Windows下开发Java应用程序，看看 <a href="http://developer.motorola.com/docstools/sdks/linux64/">这里</a> 。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/nokia-developed-under-linux-it-is-difficult.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netbeans 6安装与印象</title>
		<link>http://www.liuzhongshu.com/code/installation-and-netbeans-6-impression.html</link>
		<comments>http://www.liuzhongshu.com/code/installation-and-netbeans-6-impression.html#comments</comments>
		<pubDate>Mon, 14 Jan 2008 11:49:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/archives/525</guid>
		<description><![CDATA[很多人热炒这个版本的Netbeans，并将之提到和Eclipse直接竞争的角度，本着实事求是的原则，我新鲜试用了Netbeans 6。
安装
我用apt-get可以直接安装netbeans5.5.1，但令我意外的是，安装后总是不能正常启动，提示找不到jdk，而我是安装有jdk1.5的（猜想这个问题可能和我机器上安装的jre6有关）。 由于Sun的网站上还有 Netbeans 6的下载，加上我更想试用6.0，我便下载了Netbeans6（这个版本不能通过apt-get安装），Netbeans6的安装很方便，下载下来的50多M的sh文件，直接运行就可以安装了。
注： Netbeans6是按照套件的方式下载的，而不象以前的版本要先安装主IDE，再一个个装插件，这种套件的方式要方便很多。
Hello,Wold
官方网站上的 文档写的不错（起码我目前的感觉是这样），我实验了Quick Start Guide的几个教程，都写的非常好，按部就班下来，很有些感觉（NetBeans Mobility带的几款手机模拟器好漂亮）。
印象
Netbeans 6的启动速度很快，功能强大，编辑器给我留下了深刻的印象，非常智能，所有的菜单，工具的布局都比较&#8221;常规&#8221;（这是相对于eclipse给我留下的&#8221;晦涩&#8221;的印象所对比的），基本的IDE的功能，诸如工程，编译，调试，仿真（针对J2ME）都做的很好，起码到目前为止，我对Netbeans印象颇佳，超出了eclipse几分，也许我会再花一些时间深入使用一下看看。
update（2008-3-23）： 在Ubuntu7.10下，如果设置缺省jre为sun-jre-6，则J2ME模拟器启动时会出现异常（look and feel方面的），所以我现在只能用sun-jre-1.5，当然Netbeans IDE本身是可以用jre6的，可以在启动netbeans时带一个jdkhome的参数就可以了，比如netbeans &#8211;jdkhome /usr/lib/jvm/java-6-sun-1.6.0.03/。
update（2008-3-25）： 如果不想通过Netbeans来运行模拟器，可以直接运行/usr/local/netbeans-6.0/mobility8/WTK2.5.2/bin下的runmidlet就可以了，带一个jad文件作为参数就可以通过模拟器来运行相应的jar了。
]]></description>
			<content:encoded><![CDATA[<p>很多人热炒这个版本的Netbeans，并将之提到和Eclipse直接竞争的角度，本着实事求是的原则，我新鲜试用了Netbeans 6。</p>
<p><strong>安装</strong><br />
我用apt-get可以直接安装netbeans5.5.1，但令我意外的是，安装后总是不能正常启动，提示找不到jdk，而我是安装有jdk1.5的（猜想这个问题可能和我机器上安装的jre6有关）。 由于Sun的网站上还有<a href="http://dlc.sun.com.edgesuite.net/netbeans/6.0/final/"> Netbeans 6的下载</a>，加上我更想试用6.0，我便下载了Netbeans6（这个版本不能通过apt-get安装），Netbeans6的安装很方便，下载下来的50多M的sh文件，直接运行就可以安装了。</p>
<p>注： Netbeans6是按照套件的方式下载的，而不象以前的版本要先安装主IDE，再一个个装插件，这种套件的方式要方便很多。</p>
<p><strong>Hello,Wold<br />
</strong>官方网站上的<a href="http://www.netbeans.org/kb/index.html"> 文档</a>写的不错（起码我目前的感觉是这样），我实验了Quick Start Guide的几个教程，都写的非常好，按部就班下来，很有些感觉（NetBeans Mobility带的几款手机模拟器好漂亮）。</p>
<p><strong>印象</strong><br />
Netbeans 6的启动速度很快，功能强大，编辑器给我留下了深刻的印象，非常智能，所有的菜单，工具的布局都比较&#8221;常规&#8221;（这是相对于eclipse给我留下的&#8221;晦涩&#8221;的印象所对比的），基本的IDE的功能，诸如工程，编译，调试，仿真（针对J2ME）都做的很好，起码到目前为止，我对Netbeans印象颇佳，超出了eclipse几分，也许我会再花一些时间深入使用一下看看。</p>
<p><strong>update（2008-3-23）</strong>： 在Ubuntu7.10下，如果设置缺省jre为sun-jre-6，则J2ME模拟器启动时会出现异常（look and feel方面的），所以我现在只能用sun-jre-1.5，当然Netbeans IDE本身是可以用jre6的，可以在启动netbeans时带一个jdkhome的参数就可以了，比如netbeans &#8211;jdkhome /usr/lib/jvm/java-6-sun-1.6.0.03/。</p>
<p><strong>update（2008-3-25）</strong>： 如果不想通过Netbeans来运行模拟器，可以直接运行/usr/local/netbeans-6.0/mobility8/WTK2.5.2/bin下的runmidlet就可以了，带一个jad文件作为参数就可以通过模拟器来运行相应的jar了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/installation-and-netbeans-6-impression.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
