<?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>九破素食 &#187; Programming</title>
	<atom:link href="http://jayya.com/cat/tech/java/feed" rel="self" type="application/rss+xml" />
	<link>http://jayya.com</link>
	<description>Just a blog</description>
	<lastBuildDate>Mon, 14 May 2012 12:23:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Oh,yeah</title>
		<link>http://jayya.com/2007/11/04/474</link>
		<comments>http://jayya.com/2007/11/04/474#comments</comments>
		<pubDate>Sat, 03 Nov 2007 17:44:56 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[phome]]></category>
		<category><![CDATA[porting]]></category>
		<category><![CDATA[移植]]></category>

		<guid isPermaLink="false">http://jayya.com/?p=474</guid>
		<description><![CDATA[花了一天加一晚上的时间，终于搞定了J2ME平台的移植。自己这个从大二以来就想完成的项目，终于取得又一个阶段性的胜利，哈哈，稍后整理写文档整理下。相关文章如下： 移植KVM到arm-linux(1) 移植kvm到arm-linux(2) 移植MIDP To x86 linux]]></description>
			<content:encoded><![CDATA[<p>花了一天加一晚上的时间，终于搞定了J2ME平台的移植。自己这个从大二以来就想完成的项目，终于取得又一个阶段性的胜利，哈哈，稍后整理写文档整理下。相关文章如下：</p>
<ul>
<li><a title="Permanent Link to 移植KVM到arm-linux(1)" href="http://jayya.com/?p=109">移植KVM到arm-linux(1)</a></li>
<li><a title="Permanent Link to 移植kvm到arm-linux(2)" href="http://jayya.com/?p=120">移植kvm到arm-linux(2)</a></li>
<li><a title="Permanent Link to 移植MIDP" href="http://jayya.com/?p=123">移植MIDP</a></li>
<li><a href="http://jayya.com/?p=27">To x86 linux</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2007/11/04/474/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>再来个预告</title>
		<link>http://jayya.com/2007/01/27/314</link>
		<comments>http://jayya.com/2007/01/27/314#comments</comments>
		<pubDate>Fri, 26 Jan 2007 21:42:36 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://jayya.com/?p=314</guid>
		<description><![CDATA[最近预告似乎有点多了，希望都能一一实现了。 恩想写一个eclipse插件了。]]></description>
			<content:encoded><![CDATA[<p>最近预告似乎有点多了，希望都能一一实现了。<br />
恩想写一个eclipse插件了。</p>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2007/01/27/314/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>垃圾回收机制（GC）趣谈</title>
		<link>http://jayya.com/2006/11/26/266</link>
		<comments>http://jayya.com/2006/11/26/266#comments</comments>
		<pubDate>Sun, 26 Nov 2006 14:09:46 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://jayya.com/?p=266</guid>
		<description><![CDATA[呵呵最近看一本书上面对垃圾回收机制进行了一个比较有趣的讲解-用餐巾纸来作为例子，觉得不错，特抄到这上面(自己打字真慢啊） 引用计数算法（Reference Counting) 午餐时，突然需要一个餐巾纸来写点东西，这个时候呢，我需要先在餐巾纸上角化一个计数1，表示你在使用这个餐巾纸，如果同时你要用或者看这个餐巾纸，就要在餐巾纸上计数加1，也就是2，表示同时有2个人在用。看完后，计数要相应的减1，表示你已经使用结束了。最后如果这个餐巾纸被用完无用的时候，他的计数相应的也就是0了，这个时候餐厅的机器人就可以把它扔到垃圾箱了。 标记-清除算法（Mark-Sweep) 午餐时，餐厅上所有的人都据自己的需要来取用餐巾纸。当机器人向收集不用的餐巾纸时，它让所有的用餐者停下来，依次询问餐厅的每一个人：“你正在使用餐巾纸吗？你用的那一个餐巾纸？”根据人的回答在每个餐巾纸上标上记号。询问结束，没有标上记号的餐巾纸，把它们统统扔在垃圾箱。 复制算法（Copying) 机器人把餐厅分为南北两个完全相同的区。午餐时，所有人都现在南边的区吃饭（何合能容纳吃饭的人数也少了一半），用餐时随便使用餐巾纸。当到了机器人觉得有必要进行垃圾清理的时候呢，就要所有在南边吃饭的人以最快的速度跑到北边（当然要戴上你在使用的餐巾纸），OK，等所有都到北边去的时候，机器人把南边的餐巾纸收集一下就完成任务了。 下一次进行收集的时候，就重复上面的过程，你就在两边慢慢跑了。 标记-整理算法(Mark-Compact) 这个是标记-清除算法和复制算法的结合。 这一次呢,还是在那个餐厅里面，机器人不分区了。在执行垃圾收集的时候、机器人先执行标记-清除算法的第一步，为所有的被使用的餐巾纸打上标记，然后，机器人名利所有人戴上有标记餐巾纸去南边，而把没有标记的餐巾纸扔到北边。这样就ok了 增量收集算法（Incremental Collecting) 这个算法是机器人在人们用餐的同时寻找废弃的餐巾纸并收集回收 分代收集算法（Generational Collecting) 如果这个餐厅的bot很聪明，能实现摸清餐厅吃饭的人用餐巾纸的习惯-有人吃顿饭只用一张而有人要用2张，那么就可以据此制定出完善的回收计划了，并在人们刚扔掉餐巾纸的时候把垃圾捡走]]></description>
			<content:encoded><![CDATA[<p>呵呵最近看一本书上面对垃圾回收机制进行了一个比较有趣的讲解-用餐巾纸来作为例子，觉得不错，特抄到这上面(自己打字真慢啊）<span id="more-266"></span></p>
<ul>
<li><strong>引用计数算法（Reference Counting)</strong><br />
午餐时，突然需要一个餐巾纸来写点东西，这个时候呢，我需要先在餐巾纸上角化一个计数1，表示你在使用这个餐巾纸，如果同时你要用或者看这个餐巾纸，就要在餐巾纸上计数加1，也就是2，表示同时有2个人在用。看完后，计数要相应的减1，表示你已经使用结束了。最后如果这个餐巾纸被用完无用的时候，他的计数相应的也就是0了，这个时候餐厅的机器人就可以把它扔到垃圾箱了。</li>
<li><strong>标记-清除算法（Mark-Sweep)</strong><br />
午餐时，餐厅上所有的人都据自己的需要来取用餐巾纸。当机器人向收集不用的餐巾纸时，它让所有的用餐者停下来，依次询问餐厅的每一个人：“你正在使用餐巾纸吗？你用的那一个餐巾纸？”根据人的回答在每个餐巾纸上标上记号。询问结束，没有标上记号的餐巾纸，把它们统统扔在垃圾箱。</li>
<li><strong>复制算法（Copying)</strong><br />
 机器人把餐厅分为南北两个完全相同的区。午餐时，所有人都现在南边的区吃饭（何合能容纳吃饭的人数也少了一半），用餐时随便使用餐巾纸。当到了机器人觉得有必要进行垃圾清理的时候呢，就要所有在南边吃饭的人以最快的速度跑到北边（当然要戴上你在使用的餐巾纸），OK，等所有都到北边去的时候，机器人把南边的餐巾纸收集一下就完成任务了。<br />
下一次进行收集的时候，就重复上面的过程，你就在两边慢慢跑了。
</li>
<li><strong>标记-整理算法(Mark-Compact)</strong><br />
这个是标记-清除算法和复制算法的结合。<br />
这一次呢,还是在那个餐厅里面，机器人不分区了。在执行垃圾收集的时候、机器人先执行标记-清除算法的第一步，为所有的被使用的餐巾纸打上标记，然后，机器人名利所有人戴上有标记餐巾纸去南边，而把没有标记的餐巾纸扔到北边。这样就ok了
</li>
<li><strong>增量收集算法（Incremental Collecting)</strong><br />
这个算法是机器人在人们用餐的同时寻找废弃的餐巾纸并收集回收</li>
<li><strong>分代收集算法（Generational Collecting)</strong><br />
如果这个餐厅的bot很聪明，能实现摸清餐厅吃饭的人用餐巾纸的习惯-有人吃顿饭只用一张而有人要用2张，那么就可以据此制定出完善的回收计划了，并在人们刚扔掉餐巾纸的时候把垃圾捡走
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2006/11/26/266/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse</title>
		<link>http://jayya.com/2006/11/23/263</link>
		<comments>http://jayya.com/2006/11/23/263#comments</comments>
		<pubDate>Thu, 23 Nov 2006 12:41:08 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[开源]]></category>

		<guid isPermaLink="false">http://jayya.com/blog/?p=263</guid>
		<description><![CDATA[今天在126邮箱的垃圾邮件里面捡到了IBM developerWorks 中国网站时事通讯：第 283 期，仔细看了一下，发现这一期真的很不错，呵呵，尤其是关于Eclipse五周年的专题，作的相当的不错。 5周年的页面在这里： http://www-128.ibm.com/developerworks/cn/opensource/eclipsey5/index.html Eclipse专题在这里： http://www-128.ibm.com/developerworks/cn/opensource/top-projects/eclipse.html 还有关于XML的专题： http://www.ibm.com/developerworks/cn/offers/lp/x/xmlcert/ 不过需要代理才能够访问，比较不爽]]></description>
			<content:encoded><![CDATA[<p>今天在126邮箱的垃圾邮件里面捡到了IBM developerWorks 中国网站时事通讯：第 283 期，仔细看了一下，发现这一期真的很不错，呵呵，尤其是关于Eclipse五周年的专题，作的相当的不错。<br />
5周年的页面在这里：<span id="more-263"></span><br />
<a href="http://www-128.ibm.com/developerworks/cn/opensource/eclipsey5/index.html">http://www-128.ibm.com/developerworks/cn/opensource/eclipsey5/index.html</a><br />
Eclipse专题在这里：<br />
<a href="http://www-128.ibm.com/developerworks/cn/opensource/top-projects/eclipse.html" target=_blank>http://www-128.ibm.com/developerworks/cn/opensource/top-projects/eclipse.html</a><br />
还有关于XML的专题：<br />
<a href="http://www.ibm.com/developerworks/cn/offers/lp/x/xmlcert/">http://www.ibm.com/developerworks/cn/offers/lp/x/xmlcert/</a><br />
不过需要代理才能够访问，比较不爽</p>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2006/11/23/263/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>J2ME系统属性</title>
		<link>http://jayya.com/2006/09/05/239</link>
		<comments>http://jayya.com/2006/09/05/239#comments</comments>
		<pubDate>Mon, 04 Sep 2006 19:31:31 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[j2me]]></category>

		<guid isPermaLink="false">http://www.jayya.com/?p=239</guid>
		<description><![CDATA[这两天有点不爽，暂时不对《无聊的JAVA》更新了。现在写点无聊的东西，J2ME开发中系统相关属性的获得，包括对API和OP的支持检测，屏幕的属性，内存属性等，有兴趣可以看看。 通过System.getProperty(String key)获得： microedition.platform 平台名称，如j2me microedition.configuration CLDC或CDC版本，如CLDC-1.0 microedition.profiles MIDP版本，如MIDP-1.0 microedition.encoding 默认的系统编码，如GBK microedition.locale 默认的区域设置，如zh-CN microedition.media.version MMAPI的版本，如1.1 supports.mixing 是否支持混音，如true supports.audio.capture 是否支持音频捕获，如true supports.video.capture 是否支持视频捕获，如true supports.recording 是否支持录音，如true audio.encodings 音频编码格式，如encoding=pcm encoding=pcm&#038;rate=8000&#038;bits=8&#038;channels=1 video.snapshot.encodings 拍摄图片的编码格式，如encoding=jpeg encoding=png streamable.contents 支持的流媒体格式，如audio/x-wav wireless.messaging.sms.smsc 返回SMS的服务中心，如+8613800010000 wireless.messaging.mms.mmsc 返回MMS的服务中心，如http://mmsc.monternet.com microedition.m3g.version 返回Mobile 3D的版本，如1.0 注意下面的使用需要做一些初始化工作(怎么使用,下次再说)还有就是呢属性是区分大小写和空格的 bluetooth.api.version 返回蓝牙API的版本，如1.0 microedition.io.file.FileConnection.version 返回FileConnection的版本，如1.0 microedition.pim.version 返回PIM的版本，如1.0 使用getAppProperty()方法获得的属性 这些属性都是定义在JAD中(MEB-INF文件中也有,不过优先级比jad文件中要低),怎么使用我就不多说了吧,getAppProperty((“MIDlet-Name”)获得midlet的名字之类推了. 屏幕显示相关的属性 主要使用Display的实例Display.getInstance()获得,来获得相关属性 isColor() 检测是否为彩色 display.numColors() 彩色位数 numAlphaLevels() 绘制可用的透明度 [...]]]></description>
			<content:encoded><![CDATA[<p>这两天有点不爽，暂时不对《无聊的JAVA》更新了。现在写点无聊的东西，J2ME开发中系统相关属性的获得，包括对API和OP的支持检测，屏幕的属性，内存属性等，有兴趣可以看看。<span id="more-239"></span></p>
<p><strong>通过System.getProperty(String key)获得：</strong></p>
<ul>
<li>microedition.platform   平台名称，如j2me </li>
<li>microedition.configuration  CLDC或CDC版本，如CLDC-1.0</li>
<li>microedition.profiles   MIDP版本，如MIDP-1.0</li>
<li>microedition.encoding  默认的系统编码，如GBK </li>
<li>microedition.locale   默认的区域设置，如zh-CN </li>
<li>microedition.media.version  MMAPI的版本，如1.1</li>
<li>supports.mixing  是否支持混音，如true </li>
<li>supports.audio.capture 是否支持音频捕获，如true</li>
<li>supports.video.capture 是否支持视频捕获，如true</li>
<li>supports.recording 是否支持录音，如true </li>
<li>audio.encodings 音频编码格式，如encoding=pcm encoding=pcm&#038;rate=8000&#038;bits=8&#038;channels=1</li>
<li>video.snapshot.encodings 拍摄图片的编码格式，如encoding=jpeg encoding=png
</li>
<li>streamable.contents 支持的流媒体格式，如audio/x-wav </li>
<li>wireless.messaging.sms.smsc 返回SMS的服务中心，如+8613800010000</li>
<li>wireless.messaging.mms.mmsc 返回MMS的服务中心，如http://mmsc.monternet.com</li>
<li>microedition.m3g.version 返回Mobile 3D的版本，如1.0</li>
<p>注意下面的使用需要做一些初始化工作(怎么使用,下次再说)还有就是呢属性是区分大小写和空格的
<li>bluetooth.api.version  返回蓝牙API的版本，如1.0 </li>
<li>microedition.io.file.FileConnection.version 返回FileConnection的版本，如1.0 </li>
<li>microedition.pim.version 返回PIM的版本，如1.0</li>
</ul>
<p><strong>使用getAppProperty()方法获得的属性</strong><br />
这些属性都是定义在JAD中(MEB-INF文件中也有,不过优先级比jad文件中要低),怎么使用我就不多说了吧,getAppProperty((“MIDlet-Name”)获得midlet的名字之类推了.</p>
<p><strong>屏幕显示相关的属性</strong><br />
主要使用Display的实例Display.getInstance()获得,来获得相关属性</p>
<ul>
<li>	isColor() 检测是否为彩色</li>
<li>display.numColors()  彩色位数</li>
<li>numAlphaLevels() 绘制可用的透明度</li>
</ul>
<p><strong>其他</strong></p>
<ul>
<li>Runtime类的totalMemory() 总的内存</li>
<li>freeMemory() 可用的内存</li>
</ul>
<p></P></p>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2006/09/05/239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>无聊的Java（二）</title>
		<link>http://jayya.com/2006/09/01/237</link>
		<comments>http://jayya.com/2006/09/01/237#comments</comments>
		<pubDate>Fri, 01 Sep 2006 06:29:34 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[JavaMail]]></category>
		<category><![CDATA[无聊的java]]></category>

		<guid isPermaLink="false">http://www.jayya.com/?p=237</guid>
		<description><![CDATA[解决Gmail安全连接 上次说到了Gmail使用SSL安全连接，无法使用《java network programming》中的例子去连接到到Gmail的收件箱，我们Google到了一些文章，这其中有下面一篇文章：《利用JavaMail收/发Gmail邮件(SSL)》，这篇文章介绍了JMail接收和发送Gmail邮箱邮件的程序，不过很可惜，在我的机子上这个程序很长时间没有响应，于是我按照书上的例子样子，写了一个类似的程序，结果可以运行，代码如下： Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; prop = System.getProperties(); prop.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); prop.setProperty("mail.pop3.socketFactory.fallback", "false"); prop.setProperty("mail.pop3.port", "995"); prop.setProperty("mail.pop3.socketFactory.port", "995"); session = Session.getDefaultInstance(prop,null); try { store = session.getStore(provider); store.connect(host,usrname,ps); inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); msgs = inbox.getMessages(); System.out.println("收件箱的邮件数：" + msgs.length); } catch (Exception e) { // TODO 自动生成 catch 块 e.printStackTrace(); ok,现在可以获得我的各个邮箱的收件箱的信件的数量了，那么下面要实现来信提醒功能，我的想法是设置一个Timertask作为demothread在后台隔一定时间来查看收件箱的数量，通过比较在时间差内的数量，来决定是否有新的邮件来，那么这又涉及到Timermask与demothread的相关内容，假设我们还是很了解这方面的东西，那么我还使用Google来查询相关的内容，呵呵，今天就写到这了，明天接着写。]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.jayya.com/wp-content/uploads/2006/08/WindowsLiveWriter/JavaStepbyStep_12F51/duke_thumb8.gif" width="100" align="left"> <strong>解决Gmail安全连接</strong></p>
<p>上次说到了Gmail使用SSL安全连接，无法使用《java network programming》中的例子去连接到到Gmail的收件箱，我们Google到了一些文章，这其中有下面一篇文章：<a href="http://www.cnblogs.com/ufoer23/archive/2006/04/06/368728.html" target="_blank">《利用JavaMail收/发Gmail邮件(SSL)》</a>，这篇文章介绍了JMail接收和发送Gmail邮箱邮件的程序，不过很可惜，在我的机子上这个程序很长时间没有响应，于是我按照书上的例子样子，写了一个类似的程序，结果可以运行，代码如下：<span id="more-237"></span><br />
<code><br />
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());<br />
	  final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";<br />
	   prop = System.getProperties();<br />
	  prop.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);<br />
	  prop.setProperty("mail.pop3.socketFactory.fallback", "false");<br />
	  prop.setProperty("mail.pop3.port", "995");<br />
	  prop.setProperty("mail.pop3.socketFactory.port", "995");<br />
	   session = Session.getDefaultInstance(prop,null);<br />
	try {<br />
		store = session.getStore(provider);<br />
		store.connect(host,usrname,ps);<br />
		 inbox = store.getFolder("INBOX");<br />
		 inbox.open(Folder.READ_ONLY);<br />
		 msgs = inbox.getMessages();<br />
		 System.out.println("收件箱的邮件数：" + msgs.length);<br />
	} catch (Exception e) {<br />
		// TODO 自动生成 catch 块<br />
		e.printStackTrace();<br />
</code></p>
<p>ok,现在可以获得我的各个邮箱的收件箱的信件的数量了，那么下面要实现来信提醒功能，我的想法是设置一个Timertask作为demothread在后台隔一定时间来查看收件箱的数量，通过比较在时间差内的数量，来决定是否有新的邮件来，那么这又涉及到Timermask与demothread的相关内容，假设我们还是很了解这方面的东西，那么我还使用Google来查询相关的内容，呵呵，今天就写到这了，明天接着写。</p>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2006/09/01/237/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>无聊的Java（一）</title>
		<link>http://jayya.com/2006/08/30/232</link>
		<comments>http://jayya.com/2006/08/30/232#comments</comments>
		<pubDate>Wed, 30 Aug 2006 13:04:53 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[无聊的java]]></category>

		<guid isPermaLink="false">http://www.jayya.com/?p=232</guid>
		<description><![CDATA[这是我准备的一系列JAVA开发文章的开篇，包括题记，项目背景介绍等信息，感兴趣话可以看看，我会争取每天都写一篇关于这个的文章的，敬请大家关注。 题记 我终于决定要写点东西了，因为现在实在是很无聊。虽然现在对于要写什么还不是很清晰，为什么写也不是很明朗，但我还是决定要写点东西了，而不仅仅是记一些很无聊的琐碎，虽然日志更多应该记自己的琐碎。 写的内容目前看来就是java了，这个学习使用了2年半的东西（更多的应该是学习,不停的甚至有些盲目的看书，各种各样的java相关的），但是写这些东西绝对不是为显示自己的实力（老实说，我也没有什么java实力），只是因为我很无聊，想用java这个工具去做一些自己的东西，是完全符合自己心意和要求。这里写的一些程序或者称他们为项目也好的东西，只是我在这一段无聊的时间内一些无聊的想法，仅此而已。 另一个写这个东西的目的，这完全不是我的初衷，而是现在我想到的：是不是完整的记录我从有一个想法到动手实践，之后再到去完善自己的想法，再去动手实践，最后做出满足我要求和想法的东西的过程。呵呵，也许这时候，你会下意识的想：“下面这哥们是不是要说让我学习借鉴他这个”。恩不是，我这么做只是一种记录，主要是对我自己的，也许会多你有用了，那就更好了。 啰嗦了这么多，你一定有点烦了，也一定有点头晕了，是的，我都有点头晕（我的思路一贯的很不清晰），那么下面我们进入正题： 我的想法 是关于电子邮件的，在用了一段时间的OE和Foxmail之后，感觉都不是很好，他们都有点占用资源了，尤其是OE，启动时候竟然能把我的机子整死，况且每次从装系统，他们都回从我的126和Gmail重新下载几千封以前邮件（我个人比较懒，从来没有整理过我的邮箱），这让我极其的恶心和头疼；还有就是我很少用他们去发信，更多的时候我只是用他们来提醒我新邮件到了。 上面说了这么多，总结起来就一点：我现在需要的仅仅是一个邮件提醒程序，其他功能不想要。恩，这就确定了这个程序主要功能:EmailNotify。我们下面的东西都回围绕这个去实施。 具体实施(8-30) 以后的章节都将会以日期作标记。 Java处理Mail的API就是JavaMail了，当然还有其他api，这里我采用了javamail，去http://java.sun.com/products/javamail/下载了javamail-1.4和jaf-1.0.2（JavaBeans Activation Framework,http://java.sun.com/products/javabeans/glasgow/jaf.html下载），添加进入的你的Classpath，或者简单把mail.jar,activation.jar放到你的jre/lib/ext目录下面，这样环境就搭建起来了。 接着我翻看《java network programming》3rd editon english version 里面最后一章（最近老在图书馆的英文阅览室，前面的日志中记载过）讲述的JAVAMailApi，我现在只需要接受邮件，于是便看了第三节，它上面大致讲了以下一些内容： 接受邮件的步骤： 创建你要建立的连接的属性 创建你要建连接的Authenticator 获得Session通过Session.getDefaultInstance( ) 获得一个Store通过session的getStore( )方法 连接上store 通过store的getFolder()方法获得邮箱的INBOX 打开INBOX文件夹 如果需要可以重复上面的上一步骤来打开INBOX里面的你需要的那个文件夹 通过Message对象数组的形式来获得文件夹里面的Message，使用folder的getMessages( )方法 按照你想得方式，去处理你得到的Messages对象 关闭folder 关闭store 一个展示上面步骤地程序 import javax.mail.*; import javax.mail.internet.*; import java.util.*; import java.io.*; public class POP3Client { public static void main(String[] args) [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.jayya.com/wp-content/uploads/2006/08/WindowsLiveWriter/JavaStepbyStep_12F51/duke_thumb8.gif" width="100" align="left"/>这是我准备的一系列JAVA开发文章的开篇，包括题记，项目背景介绍等信息，感兴趣话可以看看，我会争取每天都写一篇关于这个的文章的，敬请大家关注。</p>
<p><span id="more-232"></span> </p>
<h4>题记</h4>
<p>我终于决定要写点东西了，因为现在实在是很无聊。虽然现在对于要写什么还不是很清晰，为什么写也不是很明朗，但我还是决定要写点东西了，而不仅仅是记一些很无聊的琐碎，虽然日志更多应该记自己的琐碎。</p>
<p>写的内容目前看来就是java了，这个学习使用了2年半的东西（更多的应该是学习,不停的甚至有些盲目的看书，各种各样的java相关的），但是写这些东西绝对不是为显示自己的实力（老实说，我也没有什么java实力），只是因为我很无聊，想用java这个工具去做一些自己的东西，是完全符合自己心意和要求。这里写的一些程序或者称他们为项目也好的东西，只是我在这一段无聊的时间内一些无聊的想法，仅此而已。</p>
<p>另一个写这个东西的目的，这完全不是我的初衷，而是现在我想到的：是不是完整的记录我从有一个想法到动手实践，之后再到去完善自己的想法，再去动手实践，最后做出满足我要求和想法的东西的过程。呵呵，也许这时候，你会下意识的想：“下面这哥们是不是要说让我学习借鉴他这个”。恩不是，我这么做只是一种记录，主要是对我自己的，也许会多你有用了，那就更好了。</p>
<p>啰嗦了这么多，你一定有点烦了，也一定有点头晕了，是的，我都有点头晕（我的思路一贯的很不清晰），那么下面我们进入正题：</p>
<h4><strong>我的想法</strong></h4>
<p>是关于电子邮件的，在用了一段时间的OE和Foxmail之后，感觉都不是很好，他们都有点占用资源了，尤其是OE，启动时候竟然能把我的机子整死，况且每次从装系统，他们都回从我的126和Gmail重新下载几千封以前邮件（我个人比较懒，从来没有整理过我的邮箱），这让我极其的恶心和头疼；还有就是我很少用他们去发信，更多的时候我只是用他们来提醒我新邮件到了。</p>
<p>上面说了这么多，总结起来就一点：我现在需要的仅仅是一个邮件提醒程序，其他功能不想要。恩，这就确定了这个程序主要功能:EmailNotify。我们下面的东西都回围绕这个去实施。</p>
<h4><strong>具体实施</strong>(8-30)</h4>
<p>以后的章节都将会以日期作标记。</p>
<p>Java处理Mail的API就是JavaMail了，当然还有其他api，这里我采用了javamail，去<a href="http://java.sun.com/products/javamail/">http://java.sun.com/products/javamail/</a>下载了javamail-1.4和jaf-1.0.2（JavaBeans Activation Framework,<a href="http://java.sun.com/products/javabeans/glasgow/jaf.html">http://java.sun.com/products/javabeans/glasgow/jaf.html</a>下载），添加进入的你的Classpath，或者简单把mail.jar,activation.jar放到你的jre/lib/ext目录下面，这样环境就搭建起来了。</p>
<p>接着我翻看《java network programming》3rd editon english version 里面最后一章（最近老在图书馆的英文阅览室，前面的日志中记载过）讲述的JAVAMailApi，我现在只需要接受邮件，于是便看了第三节，它上面大致讲了以下一些内容：</p>
<ol>
<p>
<li> <strong>接受邮件的步骤：</strong></p>
<ul>
<li> 创建你要建立的连接的属性</li>
<li> 创建你要建连接的Authenticator</li>
<li> 获得Session通过Session.getDefaultInstance( )</li>
<li> 获得一个Store通过session的getStore( )方法</li>
<li> 连接上store</li>
<li> 通过store的getFolder()方法获得邮箱的INBOX</li>
<li>打开INBOX文件夹</li>
<li> 如果需要可以重复上面的上一步骤来打开INBOX里面的你需要的那个文件夹</li>
<li> 通过Message对象数组的形式来获得文件夹里面的Message，使用folder的getMessages( )方法</li>
<li> 按照你想得方式，去处理你得到的Messages对象</li>
<li> 关闭folder</li>
<li>关闭store</li>
</ul>
</li>
<p><li><strong>一个展示上面步骤地程序</strong><br />
<code>import javax.mail.*;<br />
import javax.mail.internet.*;<br />
import java.util.*;<br />
import java.io.*;<br />
public class POP3Client {<br />
public static void main(String[] args) {<br />
Properties props = new Properties( ); //连接的属性<br />
String host = "utopia.poly.edu"; //邮件主机名，126的邮箱:pop3.126.com<br />
String username = "eharold";//用户名<br />
String password = "mypassword";//密码<br />
String provider = "pop3"; //类型<br />
try {<br />
Session session = Session.getDefaultInstance(props, null);//获得Session<br />
Store store = session.getStore(provider);//获得stroe<br />
store.connect(host, username, password); //连接<br />
Folder inbox = store.getFolder("INBOX"); //获得folder<br />
if (inbox == null) {<br />
System.out.println("No INBOX");<br />
System.exit(1);<br />
}<br />
inbox.open(Folder.READ_ONLY);//打开ifolder<br />
Message[] messages = inbox.getMessages( ); //获得messages<br />
/*下面就是你自己的处理,作者默认使用的writeto，就是将信息一股脑的输出到控制台，不推荐你用的，否则如果地信件像我一样，1k左右，会死的比较残的。*/<br />
for (int i = 0; i < messages.length; i++) {<br />
System.out.println("------------ Message " + (i+1)  + " ------------");<br />
messages[i].writeTo(System.out);<br />
}<br />
 inbox.close(false);//关闭folder<br />
store.close( );   //关闭store<br />
}<br />
catch (Exception ex) {<br />
ex.printStackTrace( );<br />
}<br />
}<br />
}<br />
</code></code></li>
</p>
</ol>
<p>
en,现在把上面的用户名密码服务器之类的信息更改为你自己的，之后呢把wrtieto那一句改为输出信件的数量，编译执行就可以得到你信箱的信件数量了。我用126的邮箱测试了一下，正确。再用gmail测试一下，不过这次却出了问题，一看报错的信息，一头雾水，这时赶紧跑到gmail站去查看相关的参数，发现gmail是使用得ssl连接，这可怎么办了？以前没有使用过相关的api阿，只有用google了，搜索：gmail javamail 很快就找到解决问题的方法。</p>
<p>
怎么解决，下次再写。。<br />
<ins datetime="2006-08-31T09:10:45+00:00"><red>上面是补写昨天的，今天的晚些时候再写</red></ins></p>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2006/08/30/232/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>贪便宜。。</title>
		<link>http://jayya.com/2006/08/28/229</link>
		<comments>http://jayya.com/2006/08/28/229#comments</comments>
		<pubDate>Mon, 28 Aug 2006 14:05:04 +0000</pubDate>
		<dc:creator>Jayya</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[rtsj]]></category>

		<guid isPermaLink="false">http://www.jayya.com/?p=229</guid>
		<description><![CDATA[今天定了一本书《实时 Java 平台编程》，一本关于实时java（RTSJ）的书。china-pub上打折，￥8.75，原价35，折扣还是不少的，但是这个领域似乎研究的人比较少，自己曾经做KVM移植的时候对这个有些兴趣，还借了这本书的原版看了两眼，现在买来，做个收藏把。 BTW:最近用outlook和google talk都不是很爽，似乎自己只是需要他们的来信提示功能，而对其他功能很少需要:(,所以就想写一个邮件提醒程序，呵呵！顺便自己这几天在图书馆的外文阅览室呆着，翻看一下《java network programming》，希望尽快地写出来！呵呵！]]></description>
			<content:encoded><![CDATA[<p><a class="imagelink" title=shupi.gif href="http://www.jayya.com/wp-content/uploads/2006/08/shupi.gif" rel=lightbox rel="lightbox[229]"><img id="image230" height=150 alt=shupi.gif src="http://www.jayya.com/wp-content/uploads/2006/08/shupi.gif" /></a>今天定了一本书《实时 Java 平台编程》，一本关于实时java（RTSJ）的书。china-pub上打折，￥8.75，原价35，折扣还是不少的，但是这个领域似乎研究的人比较少，自己曾经做KVM移植的时候对这个有些兴趣，还借了这本书的原版看了两眼，现在买来，做个收藏把。<br />
BTW:最近用outlook和google talk都不是很爽，似乎自己只是需要他们的来信提示功能，而对其他功能很少需要:(,所以就想写一个邮件提醒程序，呵呵！顺便自己这几天在图书馆的外文阅览室呆着，翻看一下《java network programming》，希望尽快地写出来！呵呵！</p>
]]></content:encoded>
			<wfw:commentRss>http://jayya.com/2006/08/28/229/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

