﻿<?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-Jiangshachina-随笔分类-Others</title><link>http://www.blogjava.net/jiangshachina/category/16086.html</link><description>同是Java爱好者，相逢何必曾相识！&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;a cup of Java, cheers!</description><language>zh-cn</language><lastBuildDate>Mon, 27 May 2013 23:35:56 GMT</lastBuildDate><pubDate>Mon, 27 May 2013 23:35:56 GMT</pubDate><ttl>60</ttl><item><title>红楼梦剧组签名售书(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2010/07/18/326422.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Sun, 18 Jul 2010 14:00:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2010/07/18/326422.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/326422.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2010/07/18/326422.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/326422.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/326422.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;">
<strong><span style="font-size: 14pt;">红楼梦剧组签名售书</span></strong></span><br />
</div>
<span style="font-size: 10pt;">
<br />
新版红楼梦的剧组在西单图书大厦举办签名售书，由于一直以来都很喜欢红楼梦，也很期待新版红楼梦的播出，再者，之前尚未参与过签名售书之类的活动，故杂家这次也去凑了一次热闹^_^ (2010.07.18最后更新)<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/hlm01.jpg" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/hlm02.jpg" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/hlm03.jpg" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/hlm04.jpg" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/hlm05.jpg" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/hlm06.jpg" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/hlm07.jpg" alt="" border="0" /><br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/326422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2010-07-18 22:00 <a href="http://www.blogjava.net/jiangshachina/archive/2010/07/18/326422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Coin Tower(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2010/05/02/319893.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Sun, 02 May 2010 12:22:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2010/05/02/319893.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/319893.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2010/05/02/319893.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/319893.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/319893.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;">
<span style="font-size: 14pt;">Coin Tower</span></span></strong><br />
</div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 相信大家都肯定知道Coin Tower(硬币塔)，也看过相关的图片。今年元旦假期中我一时性起，也模仿网络中的一些Coin Tower图片堆了几个造型，还特别原创了若干造型，颇有些成就感。今日偶忆起此事，翻出之前拍的照片，精选出若干，帖上来与众友分享。(2010.05.02最后更新)<br />
<br />
<strong><span style="font-size: 12pt;">擎天柱</span></strong><br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/bar.jpg" alt="" border="0" height="800" width="600" /><br />
<br />
<br />
<strong><span style="font-size: 12pt;">倾斜</span></strong><br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/deline.jpg" alt="" border="0" /><br />
<br />
<br />
<strong><span style="font-size: 12pt;">层叠</span></strong><br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/overlaps.jpg" alt="" border="0" /><br />
<br />
<br />
<strong><span style="font-size: 12pt;">螺旋</span></strong><br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/spiral.jpg" alt="" border="0" /><br />
<br />
<br />
<strong><span style="font-size: 12pt;">桥-一跨度</span></strong><br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/bridge-one.jpg" alt="" border="0" /><br />
<br />
<br />
<strong><span style="font-size: 12pt;">桥-四跨度</span></strong><br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/bridge-four.jpg" alt="" border="0" /><br />
<br />
<br />
<strong><span style="font-size: 12pt;">楼梯</span></strong><br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/stairs.jpg" alt="" border="0" /><br />
这是我最满意的一个造型，也是我的原创之一，颇有几分得意之色。当时在堆它的时候可花了不少气力，失败了多次才成功的。<br />
<br />
<strong><span style="font-size: 12pt;"><span style="color: red;">愿大家五&#183;一假期愉悦 *_*</span></span></strong><br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/319893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2010-05-02 20:22 <a href="http://www.blogjava.net/jiangshachina/archive/2010/05/02/319893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>优秀的Java开发者应得更好的薪酬(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2010/01/11/308867.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Mon, 11 Jan 2010 01:01:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2010/01/11/308867.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/308867.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2010/01/11/308867.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/308867.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/308867.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;"><strong><span style="font-size: 14pt;">优秀的Java开发者应得更好的薪酬</span></strong></span><br />
</div>
<span style="font-size: 10pt;">来年春暖花开之时，又是许多公司调整薪资的时候了。<a href="http://www.java.net/">java.net</a>中的一篇<a href="http://weblogs.java.net/blog/felipegaucho/archive/2010/01/05/good-java-developers-deserve-better-salaries">博文</a>道出了我们的心声--优秀的Java开发者应得更好的薪酬$_$(2010.01.11最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp; 我的邮箱聚集了几个Java用户组和其它的一些关于Java世界的特别信息源，其中就有像CEJUG和Java EE社区这样的特殊客人。很多关于Java社区的信息资源被用于咨询公司去雇佣聪明人了，从去年开始，我一直对技能丰富的Java开发员保持着极大的兴趣。另外，多日之前，我正与一些同事喝咖啡，一位经理就承认他正为到哪儿雇到所需人力资源而发愁，这些人员是要被分配的工作是为2010年所签订的合约。<br />
&nbsp;&nbsp;&nbsp; 听着这样的谈话，并看着邮件列表中不断增长的录用通知，我只有一种结论：Java市场已萎缩，技艺精湛的Java开发者则变得稀少。原因何在？不知道，但有一些关于我们这个时期的明显观察结果：<br />
&nbsp;&nbsp;&nbsp; 大肆宣传的语言和技术，如Scala，Ruby，Grails等等，并未如我们所期望的那样占领市场。那Android呢？如你所知，那可能要等到明年了。在过去两三年中，这些语言对它们的解决方案广而告之，推销出了许多书及会议演讲，但现在并不能轻易地为这些技术找到好的工作(薪资)。当然，某些地方也会有好工作，但已与三年前<em>Java已死</em>言论所处时期不可比拟。简单的事实是：Java仍然在IT市场中<a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">位居高位</a>，而所有那些被大肆宣传的解决方案仍然被大肆宣传着它们的承诺。那么，年轻的开发者们是否会跟随这样的宣传呢？是的，现在他们将要接受Java工作，至少受到挫败的人们多数都不能提供高质量的服务。<br />
&nbsp;&nbsp;&nbsp; 人们正变得懒惰和鲁钝，而且一日更甚一日。观看电影《<a href="http://en.wikipedia.org/wiki/Idiocracy">蠢蛋进化论</a>》后，你就知道这一点儿。如果你还不相信，看半个小时的MTV，你就能体验到一个鲜活的例子了:)。iPhone用户不可能在任何一个GUI中处理多个按钮，而类型不安全的语言认为"任何需要类型声明的语言都过于复杂，以至于无法使用"。说得多好啊，让开发者相信数学和域模型是过时的技术，那会怎样呢？<br />
那Java开发者的薪资又如何呢？Java平台创建了数量巨大的能运行在全球IT市场中的软件，所支持的商业规模每年数以十亿计。没有比希望这些技术背后的人们能过上优质生活--至少是有益的生活--更自然的事情了。看吧，现实却是对烦人的管理模型的过高评价，开发者花费额外的时间，<a href="http://en.wikipedia.org/wiki/Tendinitis">肌腱炎</a>，以及更陡峭的学习曲线。<br />
<br />
<strong><span style="font-size: 12pt;">如何雇佣到优秀的Java开发者呢？</span></strong><br />
为防你会急于寻找优秀的Java开发者，这儿有一些提示：<br />
1. 提高工资(没任何借口)<br />
2. 提供学习机会，以作为工作福利的一部分(会议，书籍，课程等等)。<br />
3. 允许开发者作出项目决策。<br />
4. 使用现代的Java技术(还在使用Java 1.4？)<br />
5. 给予开发者一些稳定性和载体观点，而不要使用官僚方式。<br />
6. 弹性工作时间，远程办公也应能做到。<br />
7. 给予开发者们更多的水和咖啡...水果又当如何？可乐或其它的饮料呢？为每位开发员每天买一瓶可乐会花多少钱？如果你认为那太贵了，请离开这个市场:)<br />
8. 不要呆板地复制Google和IBM的思路，这些公司都比你们的公司富有。让你的开发者们富于创意，对你的开发者们诚实。<br />
祝好运:) Java市场已萎缩，技艺精湛的开发者则变得稀少。聪明的经理是时候提高薪酬了，这样才能逮到好的Java开发员，剩下的就由阅读Scrum和Kanban手册的人们去分享吧。<br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/308867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2010-01-11 09:01 <a href="http://www.blogjava.net/jiangshachina/archive/2010/01/11/308867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>奇客的2010年预言(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2010/01/07/308504.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Thu, 07 Jan 2010 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2010/01/07/308504.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/308504.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2010/01/07/308504.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/308504.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/308504.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;"><strong><span style="font-size: 14pt;">奇客的2010年预言</span></strong></span><br />
</div>
<span style="font-size: 10pt;">新年伊始，<a href="http://www.java.net">java.net</a>的著名博客<a href="http://www.java.net/blogs/joconner/">John O'Conner</a>道出了他对可能发生在今年的一些事件的<a href="http://weblogs.java.net/blog/joconner/archive/2010/01/03/geeky-predictions-2010">预测</a>，大家也可以评判一二。(2010.01.07最后更新)<br />
<br />
每个人都能对过去说些什么，但很少人能看到未来。此处是我对2010年的预言！<br />
1. <strong>Oracle将更喜爱Eclipse，而会废弃NetBeans</strong>。我不会比你更讨厌这一点了，但他们为什么要支持两个(算上JDeveloper就是三个)相互竞争的IDE呢？Oracle现有的员工都知道也都喜爱Eclipse，他们的工具都是围绕着Eclipse而构建的，他们的插件也都是为 Eclipse而开发的。如果没必要，为什么要作出改变呢？我唯一的问题是谁将支持NetBeans，这是一个伟大的产品，绝对值得继续保有它...只是对于Oracle，这是不值得的。<br />
2. <strong>Chrome OS和Andriod OS将会合并</strong>。这个世界将不需要两个新的来自于Google的操作系统，而不仅仅是针对Web应用。我知道这两个OS来自于Web应用的两个不领域：桌面 /便携式/笔记本机器；移动电话。然而，API也应该最大限度的被社区接受，这就意味着它们俩将成为一体。关于该预言你可以在<a href="http://weblogs.java.net/blog/2009/07/09/speculations-regarding-google-chrome-os">我之前的一篇Blog</a>中读到更多。<br />
3. <strong>Google将收购LinkedIn</strong>。虽然LinkedIn仍是一个有用且很好的站点，但它仍需更稳定一点儿。Google将注入新的思想以创建一个好的产品，甚至还能做得更好。<br />
4. <strong>Oracle将出售Sun的硬件业务</strong>。拥有硬件的Oracle？我无法相信。与他们的软件业务相离甚远。我认为Oracle将把硬件业务推给HP。<br />
5. <strong>在今年的JavaOne之前，Adobe会抢走JavaFX的风头。Adobe将发布它自己的改进了的Flex设计器工具</strong>，并且该工具在他们宣布的时候即可使用。Sun的JavaFX设计器工具将会踉踉跄跄地出现在JavaOne 2010上，而且每个人都会忘了Sun承诺过该工具会出现在2009年底。<br />
作出了你自己的预言吗？让我们知道你的预测吧。 </span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/308504.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2010-01-07 09:14 <a href="http://www.blogjava.net/jiangshachina/archive/2010/01/07/308504.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内蒙古图记(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2009/08/09/290459.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Sun, 09 Aug 2009 13:42:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2009/08/09/290459.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/290459.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2009/08/09/290459.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/290459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/290459.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;"><strong><span style="font-size: 14pt;">内蒙古图记</span></strong></span><br />
</div>
<span style="font-size: 10pt;">上周末，部门组织到内蒙古的包头-鄂尔多斯旅行了一番，使我平生第一次体验到了广阔的草原和浩瀚的沙海，挑选了几张小图以记念这一游历。(2009.08.09最后更新)<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg01.jpg" alt="" height="375" width="500" /><br />
与天地比，我是何等的渺小，但...<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg02.jpg" alt="" height="375" width="500" /><br />
...，天大，地大，我亦可大<br />
<br />
<img src="http://farm3.static.flickr.com/2467/3784374621_66196901ca.jpg" alt="" height="375" width="500" /><br />
我的志向就在远方，但通往那儿的路在何处？<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg04.jpg" alt="" height="375" width="500" /><br />
相亲相爱一家人<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg05.jpg" alt="" height="375" width="500" /><br />
敖包，人与神之间的约定<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg06.jpg" alt="" height="375" width="500" /><br />
角力，人只要尽力罢了<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg07.jpg" alt="" height="375" width="500" /><br />
力争上游，但不是每一匹马都能成为头马<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg08.jpg" alt="" height="375" width="500" /><br />
烤全羊，祈祷它来世作人<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg09.jpg" alt="" height="375" width="500" /><br />
风卷残云<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg10.jpg" alt="" height="375" width="500" /><br />
沙海，人生的起伏<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg11.jpg" alt="" height="375" width="500" /><br />
顽强的生命，每个人都只是小草或"小强"<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg12.jpg" alt="" height="375" width="500" /><br />
徒步，享受艰苦的旅程<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg13.jpg" alt="" height="375" width="500" /><br />
足迹，走过了就总能留下点儿什么<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg14.jpg" alt="" height="375" width="500" /><br />
登上人生的又一座高峰，即便它并不是最高的那座<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg15.jpg" alt="" height="375" width="500" /><br />
人生的轨迹，期望它的尽头不是深渊<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg16.jpg" alt="" height="375" width="500" /><br />
沙漠之舟<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/jiangshachina/nmg/nmg17.jpg" alt="" height="375" width="500" /><br />
沙漠之车<br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/290459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2009-08-09 21:42 <a href="http://www.blogjava.net/jiangshachina/archive/2009/08/09/290459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>温总理到访(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/12/31/249395.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Wed, 31 Dec 2008 14:40:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/12/31/249395.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/249395.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/12/31/249395.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/249395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/249395.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 14pt;">温总理到访</span><br />
</strong></div>
<span style="font-size: 10pt;">温家宝总理视察了用友软件园，我的兄弟姐妹们用自己的相机、手机记录了其中的一些片段。大家感兴趣的话，可以浏览一下。(2008.12.31最后更新)</span> <br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen01.jpg" height="375" width="500" /><br />
<span style="font-size: 10pt;">总理莅临</span><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen02.jpg" height="374" width="500" /><br />
<span style="font-size: 10pt;">总理与大家亲切交谈</span><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen03.jpg" height="375" width="500" /><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen04.jpg" height="375" width="500" /><br />
<span style="font-size: 10pt;">老爷子的笑容还是那么的亲切</span><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen05.jpg" height="374" width="500" /><br />
<span style="font-size: 10pt;">人群中的某一员就是我，但你肯定找不着，我藏得很深哦...</span><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen06.jpg" height="374" width="500" /><br />
<span style="font-size: 10pt;">总理就要离开了</span><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen07.jpg" height="375" width="500" /><br />
<span style="font-size: 10pt;">车队离开</span><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jiangshachina/wen/wen08.jpg" height="375" width="500" /><br />
<span style="font-size: 10pt;">车队远去了</span><br />
<br />
<span style="color: red;"><strong>最后，祝大家新年愉快！</strong></span><br />
<img src ="http://www.blogjava.net/jiangshachina/aggbug/249395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-12-31 22:40 <a href="http://www.blogjava.net/jiangshachina/archive/2008/12/31/249395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>支持Unicode并不意味着应用是国际化的(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/10/14/234177.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Tue, 14 Oct 2008 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/10/14/234177.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/234177.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/10/14/234177.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/234177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/234177.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;"><span style="font-size: 14pt;">支持Unicode并不意味着应用是国际化的</span></span></strong><br />
</div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; <a href="http://joconner.com">John O'Conner</a>在他的<a href="http://joconner.com/unicode/unicode-support">最新Blog</a>中介绍了在使用Unicode<sup>[1]</sup>进行软件国际化的过程中普遍存在的一种误解，希望大家对有些启示。(2008.10.14最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp; 多年以来，我已经帮助了许多组织去国际化它们的软件产品。最普遍的误解之一就是Unicode会如何帮助它们的产品。有时候，客户会错误地相信，支持Unicode对于国际化他们的产品是足够的了。有时，他们相信"支持"Unicode只是一个单纯的是或不是，行或不行的能力问题，而不认为是在不同的场合和层次中去实现对Unicode的支持。<br />
&nbsp;&nbsp;&nbsp; Unicode是一个字符编码标准。它是一个很大的标准，有着许多的细微差别。你的产品可使用许多不同的方法去实现"Unicode支持"。其结果就是，那些产品将能以不同，但通常不会是所有的方式去操纵，处理，存储，甚至可能是展示世界上的文本。你的产品支持Unicode的能力并不是二元(是或不是)的；相反，你要理解到，产品是在各种不同层次上实现"Unicode支持"的。在多数简单的情况下，你的产品只需正确地存储并获取Unicode字符。在一种更复杂的层次下，你的产品可能要能够存储，查询或展示Unicode字符。再说一次，产品"支持"Unicode的能力并不能由一个单纯的是或不是的答案去评判。一般来说，产品会以某些方式，而不是别的什么方式，去支持Unicode。<br />
&nbsp;&nbsp;&nbsp; 哪怕是在最复杂的层次中实现了Unicode支持，也不意味着你的产品是<strong>国际化的</strong>。国际化是使一个软件代码库易于本地化的过程。国际化过程会创建一个产品，该产品没有针对某个单一文化或语言的特殊偏见。该产品可对特定文化进行本地化。支持Unicode是国际化工作的一个关键组成部分，但它也仅仅只是一个组成部分罢了。与支持Unicode一样，你的国际化支持也有着在不同层次上的复杂度与能力。<br />
&nbsp;&nbsp;&nbsp; 概述之，产品可用不同的方式去支持Unicode。支持Unicode通常并不表示你的产品有能力去完成各种可能的针对Unicode的功能。相反，"支持"常意味着你可以使用Unicode，而不是别的什么东西，去做某些事情。另外，对Unicode的支持并不是国际化你的产品的唯一步骤。 Unicode只是其中的一个步骤，重要的一步罢了。国际化是创建一个易于进行本地化的产品的过程，这样的产品消除了文化偏见，以便在对其进行了本地化之后仍能够很容易地去支持另一种文化或地域。你可将Unicode作为国际化工作的一个步骤，但Unicode本身并不能创建一个国际化产品。<br />
&nbsp;&nbsp;&nbsp; 如果你有问题关于Unicode如何才能帮助你的产品，请联系我或留下评论。如果我能帮忙，就会回复。如果<em>我</em>不能，我也知道谁能。 <br />
<br />
<strong>
译注</strong><br />
[1]Unicode是一个字符集标准。该标准为全球书面和口头语言，计算机平台，或应用程序所使用的每个字符分配了一个独一无二的数值。Unicode包含了其它有限字符集所使用的全部字符。在Unicode之前，小字符集彼此之间分配的字符数值是不同的。Unicode统一了所有的其它字符集；每个字符拥有它自己的，唯一的数值。<br />
P.S. 这段Unicode的简介也出自于Conner的一篇Blog--<a href="http://joconner.com/unicode/what-is-unicode">What is Unicode</a>。
</span><br />
<span style="font-size: 10pt;"><br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/234177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-10-14 10:51 <a href="http://www.blogjava.net/jiangshachina/archive/2008/10/14/234177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>何时编写单元测试？(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/06/09/206812.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Mon, 09 Jun 2008 12:55:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/06/09/206812.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/206812.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/06/09/206812.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/206812.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/206812.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;"><span style="font-size: 14pt;">何时编写单元测试？</span></span></strong><br />
</div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 是在编写一个方法之前就编写它的单元测试，还是在写完这个方法，甚至是整个类之后才编写单元测试呢？John Ferguson Smart<sup>[1]</sup>在他的<a href="http://weblogs.java.net/blog/johnsmart/archive/2008/06/tests_first_or.html">blog</a>中再次提出了这个问题，并根据自己的经验给出了一些建议。(2008.06.10最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp; 都别书生意气了。在你编写一个方法之前或是之后编写单元测试--根据我的经验，只要你在编写代码的<em>几乎同时</em>就考虑并编写单元测试程序，那么这就无关紧要了。过后再返回去(或者根本就不回去)写测试程序将导致问题。就我个人而言，我喜欢在编写少量代码之前或紧接着的之后就编写单元测试--这不会打破工作流程，因为<em>它就是流程的一部分</em>。<br />
&nbsp;&nbsp;&nbsp; 这需要一点儿实践经验--缺乏经验的开发者经常为要写什么样的测试程序而烦恼。但这可能也反映出一个事实：他们同样也不知道要写什么样的代码。一些人评说TDD能够鼓励进行微设计--一种非常底层的设计，它不需要考虑较大的场景。这会发生在缺乏经验的开发者身上；如果你教条般地应用这种方法，同样也会遇上。像行为驱动开发这样的方法在此处就会很酷。当你在写getter方法之前，你会写一个针对这个getter方法的单元测试吗？如果是的话，那么你的单元测试专注的层次就较高了，也会更接近于用户(或系统)的需求。<br />
&nbsp;&nbsp;&nbsp; 回到问题的本质，为什么我喜欢把单元测试放在最开始的位置？很简单！我的实践经验告诉我，那样可以帮助提高代码的质量，并且节约调试时间。在开始时写十个小的单元测试所花的时间比在以后修复Bug所花的时间要少，如果代码经过了正确的单元测试，那就不会有Bug了。<br />
&nbsp;&nbsp;&nbsp; 事实上，我屡屡见到，如果某些代码经过了适当的单元测试，那么就不会有编码问题。最近就有一个例子：花了一个小时的时间去搜寻Web应用中的一个问题，该问题出现在一个编写正确的Spring-MVC程序中。结果是由于一个检验器类忽略了一个异常。很容易就发现了这个问题，实际上，在看了代码(代码检查(Code Review)也很有效)之后立刻就发现了。但关键是，我们花了一个小时甚至更多的时间去找这个需要进行检查的类。如果这些代码经过了适当的测试，那么就能很快地发现并解决这个问题。<br />
&nbsp;&nbsp;&nbsp; 根据我的经验，当人们在编写完程序之后才开始编写单元测试，就如同事后才有这样的想法，他们很难写出这些测试了 ("我已经完成了所有的代码，此时我还得去写单元测试")。或者根本就不去做。在这种情况下，代码是否完成了呢？如果代码运行地很好，那就算是完成了。这样的话，再写单元测试就大大地丧失了它的价值。还不仅如此，事后编写的单元测试将是肤浅的，不会对代码进行良好地测试。或者，开发者已经耗完了时间，他们根本就不想再为单元测试伤神了。<br />
&nbsp;&nbsp;&nbsp; TDD与任何其它的编码实践一样。当你正在学习某个新的技术时，你会倾向于对学习指导亦步亦趋。类似地，当你学习一项武术时，你也会试着一步步地模仿大师的动作，而不必去理解其中的逻辑。一旦你熟悉了某个技术，能够熟练地使用它，并对它有了更深入地理解，<em>然后</em>，你就能改进它，并与你之前掌握的其它技术进行溶合了。<br />
<br />
<strong><span style="font-size: 12pt;">
译注</span></strong><br />
[1]John是<a href="http://www.javapowertools.com/">Java Power Tools</a>一书的主作者，也是<a href="http://www.java.net/">java.net</a>中一位活跃的<a href="http://weblogs.java.net/blog/johnsmart/">Blogger</a>。<br />
<br />
<strong><span style="font-size: 12pt;">译后</span></strong><br />
&nbsp;&nbsp;&nbsp; 上周在java.net上看到这篇Blog，再联想到自己在平时工作中的单元测试实践，有些感触，故将其翻译了出来，与大家共享。<br />
&nbsp;&nbsp;&nbsp; 事先就编写单元测试，还是事后才编写单元测试？这是一个老问题。按照TDD的思想，自然是要先编写单元测试，然后再编写能够通过该单元测试的方法。<br />
&nbsp;&nbsp;&nbsp; 但，单元测试并不是TDD的专属领地，很多不实践TDD的项目也在应用着单元测试。<br />
&nbsp;&nbsp;&nbsp; 我认为，在不实践TDD的项目中(我自己所处的环境就是如此)，事后编写单元测试仍有着其合理性：<br />
&nbsp;&nbsp;&nbsp; 1. 以消极的态度来看，既然项目本身不严格要求事先编写单元测试，那么就可以在事后去做了。这至少比不去做要好，聊胜于无嘛。(嘿嘿，是够消极的，但也拿你没办法)<br />
&nbsp;&nbsp;&nbsp; 2. 事后编写单元测试至少也是一种检验手段，当然，肯定比不上事先编写的单元测试。因为，事后编写的单元测试很可能会"将就"已经写好的应用程序，正如John所说"事后编写的单元测试将是肤浅的，不会对代码进行良好地测试"。但...仍然是聊胜于无嘛 :-D (哈哈，有完没完了)<br />
&nbsp;&nbsp;&nbsp; 3. 可以把单元测试，其中就包含事后单元测试，作为"后来者"了解、学习应用程序的手段。因为单元测试程序就是应用程序的"客户"，所以无论它是事先写的，还是事后写的，都能够表现出应用程序的行为。<br />
&nbsp;&nbsp;&nbsp; 4. 事后单元测试，也可能转化为事先单元测试。在应用程序的整个生命周期中，维护阶段是最长的。在"漫长"的维护过程中，"之前"所写的"事后"单元测试将会成为"后来者"(包括原始作者本人)的"事先"单元测试。在改进程序的过程中，这些单元测试仍然能起到监督的作用。(orz，有点儿诡辩)<br />
&nbsp;&nbsp;&nbsp; 虽然，事后单元测试明显不如事先单元测试，但它的作用仍然不可低估。只要编写了优秀的单元测试程序，无论是在哪个阶段，它都会对改进应用程序有莫大的帮助。(这可不是"聊胜于无"能够表达的)<br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/206812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-06-09 20:55 <a href="http://www.blogjava.net/jiangshachina/archive/2008/06/09/206812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rock Star 2008 -- Chet Haase(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/06/01/205180.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Sun, 01 Jun 2008 13:02:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/06/01/205180.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/205180.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/06/01/205180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/205180.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/205180.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;"><span style="font-size: 14pt;">Rock Star 2008 -- Chet Haase</span></span></strong><br />
</div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 这是一篇在今年的JavaOne会议期间<a href="http://java.sun.com/javaone/sf/2008/articles/rockstar_chethaase.jsp">对Chet Haase的访谈</a>。关注Swing，Java 2D的朋友，对这位图形/UI开发方面的大牛肯定不会陌生。很高兴在不久前由他与Romain Guy合著的<a href="http://www.china-pub.com/39895">Filthy Rich Clients一书的中文版</a>已经出版了^_^ (2008.06.01最后更新)<br />
&nbsp;&nbsp;&nbsp; 祝大家六.一国际儿童节愉快！愿大家都能保持一颗年轻的心*_*<br />
&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">特别祝地震灾区的小朋友们节日快乐，愿他们在今后的岁月中能够幸福地成长:-)<br />
</span><br />
简历：<a href="http://graphics-geek.blogspot.com/">Chet Haase</a>是Adobe公司Flex SDK组的高级计算机科学家，他关注于图形问题及特性。早些时候，他工作于Sun Microsystems公司，是Desktop Java组的一名客户端软件架构师，涉及形如Java 2D，Swing，AWT和部署这样的客户端技术。他与Romain Guy一起是<em>Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java Applications</em>一书的合著者。在2008 JavaOne大会中，他和Guy有一个关于Filthy Rich Client的议题。<br />
<br />
</span><span style="font-size: 10pt;">Q：若干月前，你出版了<a href="http://www.filthyrichclients.org/">Filthy Rich Clients</a>一书。关于它，开发者们应该知道些什么？<br />
A：有四点：第一，它涉及的特性丰富的功能，能帮助开发者创造更好的应用和更好的用户体验。第二，它有许多关于Swing和Java 2D的内幕，以便开发者不仅能理解我们写的功能，还能理解这些技术本身，他们就能使用这些技术去写出他们自己的功能了。第三，它是一本有趣的读物，至少我们努力去做到这一点。最后，在<a href="http://www.filthyrichclients.org/">本书的站点</a>上，可获取所有的示例和工具类库，包括源代码。<br />
<br />
Q：在Sun的Java Client组工作了8年之后，你在2008年的1月份离开了，并加入了Adobe。告诉我们你所从事的工作。<br />
A：我加入Flex组，从事与图形有关的工作--这没什么奇怪的。在目前为止，我主要专注于相关的平台：Flex，Flash，AIR，MXML，ActionScript3。对于某个在过去8年多的时间中一直从事于Java方面工作的人来说，有很多东西需要学习。同时，在全组为下一版的发布而对某些组件进行重新构架的工作中，我已在帮忙了。开始时，我关注动画方面。<br />
<br />
Q：周三下午5点，在Metreon，有一个Adobe的活动。到时你会与James Ward有一个简短的演讲。告诉我们关于它的一些情况。<br />
A：那会很有趣。James Ward将给出Flex平台的一个简介，包含如何编写与Java后台交互的Flex客户端程序。而我--也可能是我的合著者Romain Guy--将展示一些"Filthy Rich" Flex应用示例。这些示例关于如何使用Flex去实现我们在书中谈到的功能。使用Flex去实现的方法会不同，但你可以使用该平台去达到非常相似的功能。任何感兴趣的人都应去Adobe的展台，然后获取一份邀请。<br />
<br />
Q：是什么吸引你去开发图形软件？<br />
A：我喜欢从我的程序中得到可视化的反馈。当它正常工作时，你可以在屏幕中看到结果。当它坏掉了，你也能看到它在屏幕中不正常的样子。与调试某些隐蔽的数据库事务相比，这更能让我满足。还有，图形能够将我的数学背景结合到我的软件背景中。计算机图形学使用了从线性代数到三角函数到几何学再到微积分学的许多技术。使用数学在屏幕上显示美妙的图片，与我所处的数学领域能做的多数事情相比，这更加有趣。<br />
<br />
Q：对于那些想以做图形软件作为职业的人，你有什么建议？<br />
A：应用你所需要的数学课程。并不需要高级的知识，但以我已做过的很多软件来看，我着重学习了线性代数，及其一定的微积分学。<br />
<br />
Q：对于新接触Java程序设计语言的程序员，你会给出什么建议？<br />
A：不使用行号。不要把你的整个应用放在一个方法中。相信垃圾收集器能做好它的本职工作。<br />
<br />
Q：哪种产业已经准备开始大规模履行在Web服务方面的承诺？<br />
A：摔跤。当WWF(世界摔跤联合会)在万维网(World Wilde&nbsp;Web)上使用Web服务时，网络别名就将是wwwwwfws。<br />
<br />
Q：能描述一下你写代码的过程吗？<br />
A：我会试着在脑海中收集素材，可能会将一些不成熟的想法写在小纸片上，这样我之后就不用再去找了。这一机制中的某些观念将来会用得上。然后我开始写原型。<br />
我在一些书中看过一种理想化的方法，你将整个系统--API，或随便什么--以简短方法和注释的形式进行描述，然后你所要做的就是填充细节。也许真的有人用这种方法写代码，但我尚未遇到。<br />
很多软件是研究性项目，在那里并不清楚什么是可能的或需要做的细节是怎样的。所以当我快要知道我想达到的什么时，我会开始写一些代码以找出接下来要做的工作以及如何去做。<br />
<br />
Q：你创造的最让你感自豪的代码是什么？<br />
A：<a href="https://timingframework.dev.java.net/">Timing Framework</a>。这个类库增补了一项我在Java SE中见到的空白--Java SE缺乏有用的定时-动画特性。然后基于我们自己的或其他人给我们的需求，Timing Frame有机地发展起来。<br />
我也对Filthy Rich Clients中的所有代码感到十分自豪。这些代码示例意在向人们展示如何去完成一些特定的任务，但像简单执行的代码一样，作为教程而写成的这些代码也便于教学。<br />
<br />
Q：下一次大的技术革命是什么？<br />
A：香蕉电话。水果兼具通信元件与营养小吃的功能。<br />
<br />
Q：在此之前的五年内，你认为最重要的Java API是什么？<br />
A：没有什么比System.out.println更有用的了？<br />
<br />
Q：你能给我们一个优美代码的例子吗？<br />
A：这儿就有一个：<br />
&nbsp; 10 print "fart"<br />
&nbsp; 20 goto 10<br />
<br />
Q：如果你想向Santa Claus要一个<a href="http://www.netbeans.org/">NetBeans IDE</a>的新插件，那会是什么？<br />
A：<a href="http://www.adobe.com/devnet/actionscript/articles/actionscript3_overview.html">ActionScript3</a>的编辑器，如何？<br />
<br />
Q：当你感到困惑时，你会做些什么？<br />
A：拿一支笔和一张纸，然后思考着这个问题。也会散散步，或者与某个人一起讨论这个问题，或者换一杯咖啡--也许没什么帮助，但味道不错。<br />
<br />
Q：Java平台最近的什么变化使你的生活变得轻松些？<br />
A：我发现<a href="http://java.sun.com/javase/downloads/index_jdk5.jsp">J2SE 5.0</a>的一些语言变化，像新的for循环，很有用。<br />
我用过一些泛型以简化Timing Framwork API，虽然我知道泛型的真正好处是让用户泛型化API，而不是让开发者在他们自己的代码中使用泛型。<br />
<br />
Q：Swing开发者需要理解的最重要的东西是...？<br />
A：在沾手之前，先关掉食品加工器。<br />
<br />
Q：你认为Web 2.0的最大技术障碍是什么？<br />
A：有太多的框架用于"Web 2.0"应用。特别是在Ajax世界，很难知道从哪儿开始、继续或结束。从某种程度来看，一个开发者的脑海中只会中意最有可能流行的框架。可能更应该写作"Web Too"，即，"太多的选择"。<br />
<br />
Q：你是否是网络开发者社区的一位正式成员？<br />
A：我并不处在某个特定的社区内，但在我关注的开发领域内，我是一位经常写作的<a href="http://graphics-geek.blogspot.com/">博客</a>。我认为拥有伟大的类库是吸引开发者群的重要组成部分。<br />
但是向开发者们解释应该如何使用这些类库，以及使用特定的、合适的例子去展示这一点，则是另一个同等重要的部分。<br />
<br />
Q：图形软件应该如何溶入Web 2.0的画卷中？<br />
A：就我理解，Web 2.0是关于在浏览器中的更好、更动态的用户体验。不论你使用何种框架，这种体验都意味着丰富的图形与功能。甚至只是简单的如，动态地将购物商品拖入购物车，或使用有趣的图形技术在页面上使某个元素淡入淡出，这样的功能。<br />
<br />
Q：你如何看待开源软件？<br />
A：我认为开源软件很伟大，但并不是由于人们可能设想到的原因。当人们听到一个项目是开源的，他们可能猜测有一大批来自世界各个角落的人们在帮助这个项目，向其中塞入代码，并以这种松散的方式进行协作。<br />
我见过的大多数开源项目已较少关心人人贡献了，而更多的是关心源码库的透明性以及来自开发者的广泛反馈。多数的公司和人可能更关心的是，他们能够看到黑箱中的东西，然后会建议进行适当的改进，而不会是实际地去做这些改进，也不会使自己亲自加入到项目中。<br />
所以，就像我的Timing Framwork所获得的好处，并不是大家直接地向它提交代码，而是大家能够去看它是如何工作的，然后与我讨论怎样去改进它，以去适应他们的特定情形。<br />
Java和Flex SDK都是开源。不论选择加入的人的水平如何，我希望它们都能从社区的参与中获益。<br />
<br />
Q：大家知道你在博客中写有滑稽和诙谐的东西。你是否认为幽默与滑稽能保持你作为一个开发者的敏锐、自由与创意。<br />
A：是的，就是那样。这就是我那样做的原因。<br />
不，我这么做其实也没有什么理由。我只是喜欢博得一笑罢了。然而我也知道，如果人们都睡着了，你就不能教他们了。<br />
所以，使一次讲演具有趣味性，与使其信息丰富一样重要。我见过十分乏味但内容很好的讲演，但一般来说，对于越活跃的讲演，大家越能记住它，也越想再听一次。<br />
这同样适用于文章：为了使你的观点具有穿越性，如果你能使用一些有趣的比喻或词汇，就比只是在他们面前弄一些代码和方程式，更有机会使你的读者们继续看下去。<br />
<br />
Q：能与我们分享两个你最喜欢的奇客<sup>[1]</sup>笑话或故事吗？<br />
A：我不能保证他们是我最喜欢的或是最好笑的，但至少它们都很新--在本周才把它们帖到我的博客中--也很奇客：<br />
&nbsp;&nbsp;What do you call it when a chip manufacturer loses money?<br />
&nbsp;&nbsp;A cash miss.<br />
<br />
&nbsp; What do you call someone that has to use a dull web application?<br />
&nbsp;&nbsp;Bored to tiers.<sup>[2]</sup>
<br />
<strong style="font-size: 12pt;">译注</strong><br />
[1]奇客，Geek，指性格奔放甚至怪僻，擅长计算机的人。<br />
[2]由于对这两则笑话的"本质"尚未领悟，所以暂不翻译。<br />
<br />
<strong><span style="font-size: 12pt;">请关注上一篇译文：<a href="http://www.blogjava.net/jiangshachina/archive/2008/05/31/204939.html"><span style="font-size: 10pt;"><strong></strong></span><strong>Rock Star 2008 -- Joshua Bloch</strong></a></span></strong></span><strong></strong><img src ="http://www.blogjava.net/jiangshachina/aggbug/205180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-06-01 21:02 <a href="http://www.blogjava.net/jiangshachina/archive/2008/06/01/205180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rock Star 2008 -- Joshua Bloch(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/05/31/204939.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Sat, 31 May 2008 15:39:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/05/31/204939.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/204939.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/05/31/204939.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/204939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/204939.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 14pt;">Rock Star 2008 -- Joshua Bloch</span><br />
</strong></div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 这是一篇在今年的JavaOne会议期间对<a href="http://java.sun.com/javaone/sf/2008/articles/rockstar_joshuabloch.jsp">Joshua Block的访谈</a>。作为闻名的Java guru，大家已经从Joshua的<a href="http://java.sun.com/docs/books/effective/"><em>Effective Java</em></a>，<em>Java Collection Framework</em>，...中获益了。相信，Joshua Block在访谈中的一些真知灼见，仍然会使大家受益良多。(2008.06.02最后更新)<br />
<br />
<strong>简历</strong>：Joshua Block，Google公司的首席Java构架师，曾为Sun Microsystems公司的杰出工程师，由于<em>Effective Java Programming Language Guide</em>一书，他获得了<em>Software Development Magazine</em>极富盛名的Jolt大奖。在Sun公司时，他领导设计并实现了众多的Java平台特性，包括JDK 5.0的语言升级以及获奖的Java集合框架。他拥有卡纳基-梅隆大学计算机科学博士学位，目前还是<em>Effective Java, Second Edition</em>的作者。<br />
<br />
Q：你和Brian Goetz将会有一个名为"撰写下一本伟大的Java技术书籍"(BOF-6588)的议题。写一本伟大的Java书籍需要做些什么？<br />
A：这要看实际情况。你可以以书籍的形式介绍那些之前还没有被介绍过的重要知识，就如Brian Goetz和Tim Peierls 在<em>Java Concurrency in Practice</em>一书中所做的那样。或者，你也可以写一部对现有资料的原创讲解，使它能被所有未接触过Java的人所接受，就如Kathy Sierra和Bert Bates在<em>Head First Java</em>一书中所做的那样。你也可以先弄一大堆资料，然后提炼出其中的精华，就像Peter Sestoft在<em>Java Precisely</em>一书中做的那么出色。这还可以接着说下去。<br />
Q：对于你写的<em>Effective Java</em>，开发者经常告诉我，那是他们最喜欢的Java技术书籍。你将二次贡献名为"More 'Effective Java'"(TS-6623)的议题，在那儿，你将谈论Java平台新近的最佳实践。让我们先了解一点儿它的情况。<br />
A：我正在收集新出现在该书第二版中的素材。去年，我花了大量时间在谈论泛型，所以今年我仍将重点关注它，我确实有一个新的期望能够分享的泛型小窍门。<br />
我也将介绍一些关于enum类型的有趣素材，并有一个针对延迟初始化的最佳实践的简明指导。是的，我还计划展示我们州长年轻时的一张祼照<sup>[1]</sup>。<br />
<br />
<strong style="font-size: 12pt;">一天的生活<br />
</strong>Q：描述一下你在Google的一天中的生活。<br />
A：那是个工作的好地方。我与许多来自世界各地的聪明人一起工作，那儿不缺乏挑战性的工作去做。 Google理解开源以及回馈社区的重要性，所以他们一直支持我在Java平台方面的持续工作。额外的好处就是他们因此而获得的好名声。<br />
Q：你在Google吃的最好的一餐是什么？<br />
A：嗯...可能是两年前在Cafe 7吃的烤鹌鹑？或者可能是在Pinxto吃的Shiro Maguro Sashimi？有些饮品也是很棒的。<br />
Q：这些食物真的很好吃吗？<br />
A：是的。我不是说在那儿我就没吃过差的食物，但总的来看，确实很好。<br />
<br />
<strong style="font-size: 12pt;">将"Bloch"作为动词</strong><br />
Q：如果你能将"Bloch"变成动词，就如已对"Google"做的那样，那么动词"Bloch"会是什么意思？<br />
A：天啊，这是个很难的问题。可能是"写出好的API"？当然，这将不会发生，而我也乐于接受。在每一代中，只会有很少的人够得上用一个词去称呼，并且经常是一个形容词。如你所知的：牛顿的，笛卡尔的，莎士比亚的，就像这样的。<br />
由于某种原因，这使我想起多年前看到的一则头条。当Miles Davis<sup>[2]</sup>逝世时，纽约时报上他的讣告说："Miles Davis，小号手，去逝了；爵士天才，65岁，绝对的酷"。我也想到了自己，"是的，这就是一个总结。而且还没人能上这样的头条"。<br />
<br />
<span style="font-size: 12pt;"><strong>最美的代码</strong></span><br />
Q：你所喜爱的代码是怎样的？或者说，你所见过的最漂亮的代码是什么样的？如诗般的代码？<br />
A：我看过许多代码都能激起这种反响。就像真的诗歌一样，在某人看来很美的一段代码可能在其它人看来很丑陋。这儿有一段神秘的代码诗：<br />
&nbsp;&nbsp;&nbsp; static int inverse(int val) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t *= 2 - val * t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t *= 2 - val * t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t *= 2 - val * t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t *= 2 - val * t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br />
&nbsp;&nbsp;&nbsp; }<br />
正如它的名字所暗示的，该方法计算奇参数的乘法逆值，mod 2^32。换言之，对于所有的奇整数i，有i * inverse(i) == 1。它根据牛顿迭代原理。<br />
有严格的证据表明这四个迭代--方法中非回转的循环--对于任何输入值都足够了。那么这是我见过的最漂亮的代码吗？不，但它确实十分的聪明。<br />
如果你喜欢这样的东西，你应该去看看Henry S. Warren的书<em>Hacker's Delight</em>(Addison-Wesley，2003)。当你能看这本书时，要翻到"The Quest for an Accelerated Population Count"一章。在Osram和Wilson的<em>Beautiful Code</em>(O'Reilly，2007)一书中，当你手里也有这本书的话，也要读一下Jon Bentley 写的"The Most Beautiful Code I Never Wrote"一章。Jon写了许多诗歌般的代码。<br />
<br />
<strong style="font-size: 12pt;">最有趣的代码<br />
</strong>Q：你能想到的最有趣的代码是什么？<br />
A：<a href="http://thedailywtf.com/">The Daily WTF</a>中满是有趣的代码。Bill Pugh也经常发给我一些由<a href="http://findbugs.sourceforge.net/">FindBugs</a>发现的有趣代码。这儿有一个令人欣喜的例子--我发誓，它从未被透露过：<br />
&nbsp;&nbsp; public Object getObject(java.util.Map&lt;String,Class&lt;?&gt;&gt; map)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws SerialException<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map = new Hashtable(map);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!object.equals(null)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return map.get(object);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new SerialException("The object is not set");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
Q：代码是世界语吗？如果是，那为什么？<br />
A：我认为音乐才称得上，其次就是数学了。因为音乐将自然语言与数学符号联系了起来。代码很像数学：创建具有良好可读性程序的很大一部分工作就是选择好的标识符名称，而这就要基于自然语言。<br />
Q：哪位Java达人深深地影响了你？是在什么方面？<br />
A：应该是Doug Lea<sup>[3]</sup>。他知道很多事情中的很多东西，多年来，他激发了我数不清的想法。他总有让人感兴趣的事情可说。并且他有一种不可思异的能力，能发挥出VM的最佳性能。幸运的是，他已教给我一些他的窍门。例如，Branch Free代码会运行的很快，缓存的作用将会终结，内联探索法(I<font size="2">nlining Heuristics</font>)在性能方面有着巨大的效用。<br />
Q：能给我们一个你创造的最让你感到自豪的代码例子吗？并解释一下为什么？<br />
A：集合框架。虽远非完美，但多年来，已经证明了它的可维护性与优雅。而前面提到的Doug Lea构建的java.util.concurrent包中的许多部分就构建集合框架之上。并且在程序员的来信中，他们总是告诉我，集合框架是如何使他们的工作更加赏心悦目。它能使你写像下面这个程序那样的代码，这个程序通过标准输入流计算文件中所有的片语：<br />
public class Anagram {<br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int minGroupSize = Integer.parseInt(args[0]);<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Read words from input and put into simulated multimap<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map&lt;String, List&lt;String&gt;&gt; anagrams =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new HashMap&lt;String, List&lt;String&gt;&gt;();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Scanner s = new Scanner(System.in); s.hasNext(); ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String word = s.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String alphagram = alphagram(word);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;String&gt; group = anagrams.get(alphagram);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (group == null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anagrams.put(alphagram, group = new ArrayList&lt;String&gt;());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; group.add(word);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Print all permutation groups above size threshold<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (List&lt;String&gt; group : anagrams.values())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (group.size() &gt;= minGroupSize)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(group.size() + ": " + group);<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; private static String alphagram(String s) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] chars = s.toCharArray();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Arrays.sort(chars);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return String.valueOf(chars);<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
Q：当你感到困惑时，你会做些什么？<br />
A：我会喝一杯美味的热咖啡。Google有很好的咖啡机，这些机器来自于Barefoot Coffee Roasters。如果不管用，我就会去走一走。如果还不管用，我就会去叫Doug Lea。<br />
Q：你使用哪些网络资源，以紧跟Java技术。<br />
A：规范，还有Google。无论走到哪里，这都能帮上我。<br />
Q：是否有一种益智的训练或有趣的行为让你觉得能使你成为一名更好的开发者？<br />
A：我认为数学和写作能使你成为更好的开发者。数学与编程一样，要求严谨的思维。而写作会强迫你去组织你的想法。数学和写作都训练了相同的审美机能，而这对于写出好的程序也是必需的。<br />
Q：你希望在工科学校中你还应该学到哪些东西？<br />
A：我希望我能更好地学会弹吉他，现在我弹的可不好。我希望能学一门外语，还有艺术史。当然，还想学一些商业和金融方面的知识。这样说起来，哥伦比亚大学会对我有更好的帮助。我会鼓励本科生们，当他们还有时间时，就要创造机会去获取更宽泛的知识。以后，他们会有足够的时间深入到其中。<br />
<br />
<strong style="font-size: 12pt;">译注</strong><br />
[1]这张"祼照"就是加利福尼亚州现任州长</span><span style="font-size: 10pt;">阿诺.施瓦辛格的健美祼肤照。</span><br />
<span style="font-size: 10pt;">[2]Miles Davis，爵士乐大师。点击<a href="http://www.nytimes.com/learning/general/onthisday/bday/0525.html">此处</a>可以看到纽约时报上关于他的讣告全文。<br />
[3]<a href="http://g.oswego.edu/">Doug Lea</a>，java.util.concurrent的创始人，目前也是<a href="http://openjdk.java.net/">OpenJDK</a>临时管理委员会的成员。<br />
<br />
<strong style="font-size: 12pt;">请关注下一篇译文：<a href="http://www.blogjava.net/jiangshachina/archive/2008/06/01/205180.html">Rock Start 2008 -- Chet Haase</a></strong></span><img src ="http://www.blogjava.net/jiangshachina/aggbug/204939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-05-31 23:39 <a href="http://www.blogjava.net/jiangshachina/archive/2008/05/31/204939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun Tech Days 2007 -- Day 2(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/11/08/158629.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Thu, 08 Nov 2007 00:39:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/11/08/158629.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/158629.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/11/08/158629.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/158629.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/158629.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;"><span style="font-size: 14pt;">Sun Tech Days 2007 -- Day 2</span></span></strong><br />
</div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; Sun Tech Days 2007(北京站)已经结束了，趁热打铁，在此把本次会议中我的所见、所闻、所思与所得记录下来。本文是关于我在Sun Tech Days第二天中的相关见闻思得以及总结。(2007.11.10最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp; 第二天的流程与第一天的基本相同，只是在上午多了一个赢取Java茄克的活动。走上舞台，以自己的才艺(编程不算才艺 :D)表演打动台下的观众，谁得到的掌声最热烈，谁就能得到那两件(分成了两个组，每个组有一件)茄克。这个表演算是当天上午最有趣的活动了。十分佩服那些勇于走上台的朋友，嘿嘿，就算Jonathan请我上台，我也"懒"得去(Oh, oh, oh ... come on, please show yourself!)。<br />
&nbsp;&nbsp;&nbsp; 关于当天的Sun技术演示就不描述了，想说说当天的主题演讲，是由<a href="http://www.oracle.com/applications/fusion.html">Oracle Fusion Middleware</a>的一位副总裁做的，题目是"SCA/SOA Service Component Architecture"。哦哦哦，这个题目真够高深的，我可不想对它品头论足，只想提一下<a href="http://www.oracle.com/technology/products/jdev/index.html">JDeveloper</a>。相信很多朋友都知道甚至用过JDeveloper，我早前也下载过JDeveloper10，但并没有真正地使用过，主要是由于当时自己的机器只有512M内存，运行JDeveloper有些勉强。每年的STD，Oracle都会有相关主题展示使用JDeveloper开发Web/JSF应用。从Oracle的演示来看，使用JDeveloper+<a href="http://www.oracle.com/technology/products/adf/index.html">ADF</a>(Application Development Framework，Oracle的Java EE开发框架)进行Web开发确实不错。依稀记得在2005年的<a href="http://www.javapolis.com/confluence/display/JP07/Home">JavaPolis</a>，比利时Java用户会议(规模很大，并不仅限于比利时)，大会中有一个RAD(Rapid Application Development)编程比赛，结果排在前三名的团队竟然全部都是使用JDeveloper。看来JDeveloper在RAD方面确有自己的独到之处。但必须注意的是，使用JDeveloper是完全免费的，但使用ADF需要支付费用。这可能也影响到了JDeveloper的普及，毕竟免费的工具/框架足够多了。至于Fusion，我应该是第一次听到它，有兴趣的朋友可以去看看。</span><span style="font-size: 10pt;">相比较第一天而言，第二天中我所关注的主题较少，</span><span style="font-size: 10pt;">下面将介绍当天我所参加的各个技术专题。<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt;"><strong>Java DB：多个层次的数据库。</strong></span><br />
&nbsp;&nbsp;&nbsp; <a href="http://developers.sun.com/javadb/">Java DB</a>是我最为关注的主题之一，今年仍然是由Sun的数据库产品经理Manyi Lu主讲。相信很多人都已经认识了Java DB，可能更多的人在更早的时候就知道了<a href="http://db.apache.org/derby/">Apache Derby</a>，而又可能有更更多的人在更更早的时候就知晓了<a href="http://www-306.ibm.com/software/data/cloudscape/">Cloudscape</a>。那么现在肯定也已经有不少朋友知道Java DB，Apache Derby和Cloudscape就是同一个数据库。实际上，Sun和IBM都各自出一部分开发员一同在Apache社区中进行Java DB/Apache Derby/Cloudspace的开发。而Sun/IBM又会为它们的产品Java DB/Cloudscape提供商业的技术服务。<br />
&nbsp;&nbsp;&nbsp; 作为一款关系型数据库，对于已经习惯于RDBMS的开发者而言，使用起来肯定不是难事(当然，凡事想做好，也不是易事)。完备的SQL引擎--视图，存储过程(Java存储过程)，函数，触发器，外键约束；ACID性；支持标准的SQL；...这些基本的RDBMS特性似乎都不需要特别地提及。我想大家最关心的肯定是它的性能(是的，我们都关心数据库的性能，更何况它是用Java写的#_#)。Manyi每次都特别地强调，与同等层次的数据库(<a href="http://www.mysql.com/">MySQ</a>L，<a href="http://www.postgresql.org/">PostgreSQL</a>)相比，Java DB的性能毫不逊色，在某些情况下甚至更高。一般地只能认为Java DB，MySQL和PostgreSQL各有所长。Java DB长于磁盘I/O；MySQL优在单表查询；PostgreSQL擅长多表查询(用它作数据分析比较好)。另外，Manyi还介绍了一些提高Java DB性能简便方法。这些方法确实既简单又实用，任何人都可以掌握它们。这些小技巧以及Manyi想但没时间为大家演示的例子，大家都可以在Java One 2007的主题"</span> <span style="font-size: 10pt;"><a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-45170&amp;yr=2007&amp;track=3">Java DB Performance</a></span><span style="font-size: 10pt;">"和"<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-69700&amp;yr=2007&amp;track=8"><span style="font-size: 10pt;">Enabling Offline Web Applications with Java DB</span></a></span><span style="font-size: 10pt;">"中找到出处。<br />
&nbsp;&nbsp;&nbsp; 不得不说，今年的Java DB Session新意不多，当然这只是针对那些听过去年的这个Session的朋友而言。不过更正了我记忆错误的一个数据：听了去年的Java DB，我一直以为Sun内部测试时使用的数据量已经达到了300<strong>T</strong>；但今年再看，那个数据量应该是300<strong>G</strong>，目前已经达到了700G，他们的目标是1<strong>T</strong>。失之毫厘，谬以千里。不过，去年是听的，幻灯片中没有写，而T与G的读音相近，所以弄错了。而今年是在幻灯片中写着的，才得以纠正这个错误。<br />
<br />
&nbsp;&nbsp;&nbsp; <strong><span style="font-size: 12pt;">动手实验室：Java SE 故障诊断工具大全。</span></strong><br />
&nbsp;&nbsp;&nbsp;
要动手，才能把知识学牢固。每届的JavaOne和STD中都有不少的动手实验室，这对大家的帮助肯定很大。在2005年的STD中，我参加了一个使用<a href="http://www.netbeans.org/">NetBeans</a>的<a href="http://form.netbeans.org/">Matisse</a>构建Swing GUI的动手实验室。虽然在那之前，以及在那儿之后的很长一段时间内，我都没有经常地使用NetBeans。但一直认为Matisse构建GUI确实很方便，将困难的部局管理器参数的设置几乎完全可视化。不说Matisse了，还是谈谈JDK 6中带的一些工具吧。这个动手实验室介绍了<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jconsole.html">jconsole</a>，<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jinfo.html">jinfo</a>，<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html">jmap</a>，<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jstat.html">jhat</a>，<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jstat.html">jstat</a>，<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jps.html">jps</a>，<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jstack.html">jstack</a>，...，这些工具看起来虽小，但功能却很实用。用它们可以查看当前系统中的Java进程，查找对象，分析内存泄漏，找到可能的线程缺陷(如死锁)，...虽然分析应用程序的工具很多，如NetBeans的<a href="http://profiler.netbeans.org/">Profiler</a>也可以做相同的工作，而且能够做得更多更好，但有时候手边一时没有那些大玩意儿，或者只能使用命令行界面，那么这些小玩意儿就能派上大用场了。<br />
&nbsp;&nbsp;&nbsp; 关于这个动手实验室，大家还可以参见JavaOne 2007中的一个动手实验室"<a href="http://developers.sun.com/learning/javaoneonline/j1lab.jsp?lab=LAB-1420&amp;yr=2007&amp;track=5">Monitoring and Troubleshooting using JMX and JConsole Lab</a>"。<br />
&nbsp;&nbsp;&nbsp; 通过这个动手实验室，我的收获确实不少。这时也想到，要把一件事情做好需要做很多的工作，也就需要花很多的时间。在开发的过程可能需要做单元测试、静态分析、代码检查、性能测试与优化、...，但在实际的工作中恐怕没有那么多的时间与精力去做这么多的事情，而且这里的每件事情都需要细心与耐心。这样到了项目的结束时，我想很多人心中都会有很多遗憾。为什么我们不认认真真地做完一件事情呢？至少让自己少遗憾一次吧。<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt;"><span style="font-size: 10pt;"><span style="font-weight: bold;"><span style="font-size: 12pt;">开放的Sun SPOTs，Ericsson技术专题，In-Time Java<span style="font-size: 12pt;">。</span></span></span></span></span><br />
&nbsp;&nbsp;&nbsp; 这是我当天听的另外三个Session。说实话，我对它们都没什么兴趣，也没认真听，所以就放在一起混说吧。前两个主题都是关于Java ME的。正如前面我所说的，Java ME不是我关心的领域，但看着讲师们在那儿玩弄着各种器件(机器人，掌中设备，...)，像变魔术似，也不禁有些心动。纯Java似乎虚了些，Java+粗笨的服务器也不好玩，Java+手机之类的器件才有趣嘛。对Java ME有兴趣的朋友可以参考Java One中<a href="http://developers.sun.com/learning/javaoneonline/j1online.jsp?track=4&amp;yr=2007">关于ME的Session</a>。<br />
&nbsp;&nbsp;&nbsp; 再谈谈In-Time Java，No，no，no，我可不懂什么In-Time Java，但我知道讲师提到的<a href="http://mpfwww.jpl.nasa.gov/default.html">Mars Pathfinder</a>(火星探路者)飞行器。著名的<a href="http://www.jpl.nasa.gov/index.cfm">JPL</a>(美国喷气动力推进实验室，诞生过多位诺贝尔奖获得者)的著名的火星探路者当然是飞到了火星上，还在火星上工作了很长的时间。但这与Java有什么关系吗？当然有关系了，而且关系大着呢。这个飞行器的软件系统就是用Java写的!Oh，a cup of Java, cheers!哈哈，Java在火星上都能运行良好，更何况在地球上呢。Mars Pathfinder是Java发展历程中的一件大事，我想每位Java人都应该知道它。<br />
&nbsp;&nbsp;&nbsp; 随便提一句，我本人也"有幸"与JPL"沾"上点儿关系。在猴年马月的寅时卯分，我这个超级无敌菜鸟级兼职系统管理员手下的两台公网服务器不知被哪位贪吃的黑客相中，成为他/她/它盘中的"肉鸡"，然后被利用去攻击JPL的服务器，还因此收到了<a href="http://www.fbi.gov/">FBI</a>的警告信!吾在中国，岂能受你山姆大叔的恐吓！！！但从中美两国人民友谊的大局出发，我还是请来了一位高手，问题很快就解决了。现今吾已经专责于Java程序开发，恐日后再难遇到类似事件了 @_@<br />
&nbsp;&nbsp;
<br />
&nbsp;&nbsp;&nbsp; <strong><span style="font-size: 12pt;">小结</span></strong><br />
&nbsp;&nbsp;&nbsp; 上周四、周五开完会之后，确实有些累，每天奔波于南五环外与北四环之间，算是体会到了公司里很多同仁们每天都要遭受的煎熬(本人的住所与公司离得很近)。不过，心情很愉悦。趁着这股兴奋劲儿，利用上周末的两天，以及最近三天的晚上(每天都是凌晨1点左右才睡觉)完成了这两篇关于STD的随笔，相信看到本篇随笔的朋友已经看过我的<a href="http://www.blogjava.net/jiangshachina/archive/2007/11/06/158334.html">上一篇随笔</a>了。<br />
&nbsp;&nbsp;&nbsp; 今年参会人数(约1500人)比去年多，为此会务组特意安排了两个主会场。熟话说，人上一百，形形色色。参加STD的朋友们各自的"特性"肯定不尽相同，甚至相差很大。但我想说，只要大家怀着学习的心态就都会认为在STD中定有所收获。不论，你的Java技术水平高或低，喜欢/从事Java Web或桌面或嵌入式应用开发，我想大家都会各有所需，各有所得。毫无疑问，STD的讲师们(基本上都是Sun的Technology Evangelist)不可能在如此短的时间内把一个主题完全讲清楚。比如Concurrency，这就是一个十分复杂的主题，恐怕与会的朋友们中的大多数都不能清晰地描述它(反正我是不太懂，但我正在<a href="http://www.blogjava.net/jiangshachina/archive/2007/10/28/156522.html">研究并发编程</a>)。因此，就算讲师是<a href="http://www.briangoetz.com/">Brian Goetz</a>/<a href="http://g.oswego.edu/">Doug Lea</a>/<a href="http://www.blogjava.net/jiangshachina/archive/2007/06/11/123283.html">Joshua Bloch</a>，也不可能讲得很深。但我们不能因此而说，参加此类技术活动还不如自己在家里看书。记得在上小学时，教师就告诫过我们：你听老师讲，比你自己看书效率要高很多。<br />
&nbsp;&nbsp;&nbsp; 但同样要说，如果只是听别人讲，也是远远不够的。STD不是技术培训班，这本来就是大家的一个交流与沟通的平台。与会者和讲师之间，与会者和与会者之间都应该有交流和互动。很惭愧，我在这一点上做的很不好。不过，我会改进的。实际上我已经有改进了，这回我就多次"举手"，只是运气不好，讲师没有点到我(当然，这些也只是小的进步罢了)。<br />
&nbsp;&nbsp;&nbsp; 说到交流，就不能不说到英语。相信这是很多技术朋友们的一块心病，me too！虽然自己平时看英文技术文章比较多，也<a href="http://www.blogjava.net/jiangshachina/category/27200.html">翻译过若干篇文章</a>，但听/说仍然是一大难题。不过，长期的努力还是会有一些进步的。记得今年4月26日在北京第一次参加<a href="http://www.db4o.com/">db4o</a>的用户会议时，db4o的CEO Christof很热情地与每一位参会者进行一对一的交谈。可惜我的英语听/说都很差，结果基本上都是Christof在说，而我只说了不到十句话，并且我也听不懂他所说的大部分内容(How shame I am!!!)。不过，到了9月30日去武汉第二次参加db4o用户会议时，我就能和Christof聊上一会儿了。当然，这种进步并不算大，但一次小小的进步就是一次大大的鼓励。<br />
&nbsp;&nbsp;&nbsp; 最后祝我自己每天都有新的进步，每年都有大的进步！<br />
&nbsp;&nbsp;&nbsp; 最最后祝大家都有大大地进步！！！<br />
<br />
&nbsp;&nbsp;&nbsp; 同是Java爱好者，相逢何必曾相识！ -- <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#105;&#97;&#110;&#103;&#115;&#104;&#97;&#99;&#104;&#105;&#110;&#97;&#64;&#49;&#54;&#51;&#46;&#99;&#111;&#109;">江莎</a><br />
&nbsp;&nbsp;&nbsp; a cup of Java, cheers！-- <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#105;&#97;&#110;&#103;&#115;&#104;&#97;&#99;&#104;&#105;&#110;&#97;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">Sha Jiang</a><br />
&nbsp;&nbsp;&nbsp; <a href="http://www.blogjava.net/jiangshachina">jiangshachina</a><br />
</span><img src ="http://www.blogjava.net/jiangshachina/aggbug/158629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-11-08 08:39 <a href="http://www.blogjava.net/jiangshachina/archive/2007/11/08/158629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun Tech Days 2007 -- Day 1(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/11/06/158334.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Tue, 06 Nov 2007 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/11/06/158334.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/158334.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/11/06/158334.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/158334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/158334.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;"><span style="font-size: 14pt;">Sun Tech Days 2007 -- Day 1</span></span></strong><br />
</div>
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt;">Sun Tech Days 2007(北京站)已经结束了，趁热打铁，在此把本次会议中我的所见、所闻、所思与所得记录下来。本文是关于我在Sun Tech Days第一天中的见闻思得。(2007.11.10最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp; 如我的上一篇<a href="http://www.blogjava.net/jiangshachina/archive/2007/10/30/144709.html">介绍Sun Tech Days 2007的随笔</a>所提及的，这已是我连续第三年参加<a href="http://www.suntechdays.cn/">Sun科技日</a>了。必须说，每年的体验都都有很大的不同，把这些不同的体验记下来，至少也是一种回忆。我也希望与朋友们分享的我的所见、所闻、所思与所得。<br />
&nbsp;&nbsp;&nbsp; 与过去两年我所参加的STD不同，Sun CEO--目前是Jonathan Schwartz，以前是Scott McNealy和Java之父--James Gosling这次都没有来中国。那两次时任Sun CEO的Scott McNealy都有讲话(2005年时是正式致辞；2006年时只作简短讲话)，Gosling则都是做主题演讲(Keynote)。虽然他们肯定不是会议的全部，也不一定是会议的关键部分，但我仍然为他们没有出席而感到一点失望。<br />
&nbsp;&nbsp;&nbsp; 我想参加过此类活动的朋友一定都能猜到主题演讲的内容 :-) 简言之，主题演讲就是描述了Sun的关键软件技术/产品(Java，Solaris，....)当前的状态，展示了Sun作为创新的领导者为发展这些技术所做的巨大贡献，这些技术在改进人们生活的过程中所发挥的重要作用，并努力使大家相信这些技术在未来拥有非常美好的前景。<br />
&nbsp;&nbsp;&nbsp; 按照贯例，在每天上午的议程中都有一个Sun技术演示(Sun Technical Demo)的环节*。Sun的讲师分成两个组，每位讲师用五分钟的时间展示他们各自领域中的一个酷炫应用，然后由我们大家用掌声选出最好的那个组(当然，每个组都很棒*_*)。当天共展示了关于Swing(Joey Shen)，JavaFX(Chuk-Munn Lee)，AJAX/Web 2.0(Doris Chen)和嵌入式(Angela Caicedo)这四个领域的"小"应用。让我印象深刻的就是Angela的嵌入式应用演示--两个小机器人之间的交互；Joey展示的炫目Swing应用也十分吸引我，他还向大家留了一个悬念(Oh，就是Angela和Joey搭档的小组获得大家最热烈的掌声)。下面将介绍当天我所参加的各个技术专题。<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt;"><strong>Java SE 6十大特性，探讨Java SE 7以及OpenJDK。</strong></span><strong></strong><br />
&nbsp;&nbsp;&nbsp; 类似于这种"昨天，今天与明天"的主题也是每年都有的。Java SE 6提高了Java桌面应用的性能，并为GUI开发提供了很多的增强型新特性：Desktop API；Splash Screent；支持Vista L&amp;F；Tray Icon；GroupLayout；...。我最近刚开始做Swing/AWT方面的开发，所以对这一块比较关注。classpath通配符是一个很实用的新特性：可以把某个目录下的所示jar文件使用通配符(*)将它们全部加载到classpath环境变量中。Compiler API，让应用程序在运行时能够编译源代码，我还不清楚它的应用场景。Scripting API，目前在JVM上已经可以运行JavaScript(Mozzila 1.2)和JRuby这些脚本语言了。...其实讲师(Chuk-Munn Lee)并没有特别地指明Java SE 6的十大新特性，但实际上很多朋友可能早已知道<a href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/beta2.html">Java SE 6的十大新特性</a>了。<br />
&nbsp;&nbsp;&nbsp; JDK 7可能的新特性：新的Swing跨平台Look&amp;Fell--<a href="https://nimbus.dev.java.net/">Nimbus L&amp;F</a>(Metal L&amp;F太土了？)；Consumer JRE(下面有一节专门讲它)；Closure(不明白为什么要增加如此"奇怪"的语法)；<a href="https://appframework.dev.java.net/">Swing Application Framework</a>(Sun对Swing的支持果然是一如既往)；Super Package(我也不能理解为什么需要这种语法)；...<br />
&nbsp;&nbsp;&nbsp; 让我十分遗憾的是，讲师并没有提到OpenJDK的情况？!<br />
</span><span style="font-size: 10.5pt; font-family: '宋体';"><font face="宋体"><span style="font-size: 10pt;"><span style="font-size: 10.5pt; font-family: '宋体';"><font face="宋体"><span style="font-size: 10pt;"><span style="font-size: 10.5pt; font-family: '宋体';"><font face="宋体"><span style="font-size: 10pt;">&nbsp;&nbsp; 关<span style="font-size: 10pt;">于该主题的内容还可以参见JavaOne&nbsp;2007中的相关主题：</span></span><a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-2383&amp;yr=2007&amp;track=5">Java&nbsp;SE&nbsp;Present&nbsp;and&nbsp;Future</a>，<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-2800&amp;yr=2007&amp;track=5">The&nbsp;OpenJDK&nbsp;Project&nbsp;Report</a></font></span></span></font></span><span style="font-size: 10pt;">。<br />
<br />
</span></span></font></span><span style="font-size: 10pt;"><strong>
</strong>&nbsp;&nbsp;&nbsp; <strong><span style="font-size: 12pt;">消费版JRE：更小巧，更强劲。</span></strong><br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt;">Consumer JRE与Java Kernel的出现主要是基于解决发布或运行Java程序时遇到的几个问题：<br />
&nbsp;&nbsp;&nbsp; [1]不知道目标用户机器上的JRE是什么版本；<br />
&nbsp;&nbsp;&nbsp; [2]Java程序的启动速度慢，特别是当冷启动时；<br />
&nbsp;&nbsp;&nbsp; [3]JRE较大，不方便下载；<br />
&nbsp;&nbsp;&nbsp; [4]安装Java程序的时间可能较长。<br />
&nbsp;&nbsp;&nbsp; Consumer JRE(大约在一个月之前，Consumer JRE已经更名为"<a href="http://weblogs.java.net/blog/chet/archive/2007/10/early_access_gr.html">Java SE 6 Update N</a>"，非常有趣的名字)将会在2008年的早些时候正式发布，它会拥有：<br />
&nbsp;&nbsp;&nbsp; [1]更快的启动服务。一般会认为解释运行字节码会比较慢，但实际上并非如此，因为JVM很早就引入了JIT(Just-In Time)编译器，许多常用字节码已经被编译成了二进制代码。但冷启动时，确实比较慢，主要是因为JRE还未存入内存中；而对于热启动，它的速度还不错，所以目前需要特别地解决冷启动的问题。要解决冷启动的问题可以采用如下方法：启动一个后台进程，周期性的读取文件，并把它们存储到磁盘缓存中，从磁盘缓存中读取文件就相当于是热启动了。尽可能载入较少的jar文件也有利于提高启动速度(见下一条)。<br />
&nbsp;&nbsp;&nbsp; [2]Java Kernel。目前的JRE都比较大，而且核心的rt.jar也很大(JRE 6中的rt.jar就有40M左右)。Java Kernel则非常的小(2M左右)，而且高度模块化。rt.jar被分割成许多小的jar文件。默认情况下，Java Kernel只能运行"Hello World"这样的程序，如果运行的程序需要更多的JRE中的jar文件，则会根据需要适时地下载。使用Java Kernel运行SwingSet2这样的程序，在下载了所需的jar文件后其大小也仅有4M左右。<br />
&nbsp;&nbsp;&nbsp; [3]Java Technology Deployment Kit。这个工具集就是用于回答"用户机器是否安装了JRE？安装了何种版本的JRE？"这样的问题。<br />
&nbsp;&nbsp;&nbsp; [4]改进的安装器(指图形用户界面的安装向导)。这个安装程序更方便，界面也更友好。<br />
&nbsp;&nbsp;&nbsp; 我个人对Consumer JRE是比较关注的，主要就是由于我目前正从事着Java桌面应用开发。桌面程序要直接运行在用户的操作系统中，这就要求尽最大努力减少对用户的影响(易用，界面友好，节约用户机器的性能，...)。目前才刚接触Applet，就已经感到安装插件是一个十分棘手的问题。...是的，安装Applet浏览器插件应该是很容易的，但不是每个人都这么认为。<br />
&nbsp;&nbsp;&nbsp; 关于该主题的内容还可以参见JavaOne 2007中的相关主题：<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-3160&amp;yr=2007&amp;track=2">Desktop Java Technology Today</a>，<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-2383&amp;yr=2007&amp;track=5">Java SE Present and Future</a>。还可以看看<a href="http://weblogs.java.net/blog/chet/">Chet Haase的Blog</a>中的<a href="http://weblogs.java.net/blog/chet/archive/2007/05/consumer_jre_le.html">相关内容</a>。<br />
<br />
</span></span><span style="font-size: 10pt;">
&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt;"><strong>Java脚本编程：JavaFX脚本以及JRuby。</strong></span><br />
&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt;">虽然我对JavaScript深恶痛绝(跨平台的梦魇 Orz)，对JRuby/Ruby不屑一顾(因为我不会 ^_^)，但我对<a href="https://openjfx.dev.java.net/">JavaFX</a>还是有几分兴趣的。JavaFX作为Java家族中的新技术，在今年JavaOne上受到了大家的热捧。<br />
&nbsp;&nbsp;&nbsp; 本来我对RIA(Rick Internate Application)应用也没什么兴趣的，但近期加入了一个金融门户网站的项目。目前我接手开发一个基于Applet的客户端工具，该项目中的其它部分则可能会使用RIA方面的技术(<a href="http://www.adobe.com/products/flex/">Flex</a>？JavaFX ？？)。不过，做RIA应用，程序员只是其中的一部分罢了，UI设计才是首当其冲。<br />
&nbsp;&nbsp;&nbsp; 这个主题的讲师就是前面提到过的演示了Java ME机器人应用的Angela Caicedo。由于我的英文听力不太好，而且本来对JavaFX知之甚少，所以近1个小时下来似乎没收获到什么 :-(<br />
&nbsp;&nbsp;&nbsp; 关于该主题的内容还可以参见JavaOne 2007中的相关主题：<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-3160&amp;yr=2007&amp;track=2">Desktop Java Technology</a>。<br />
<br />
<span style="font-size: 10pt;">
</span></span><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; <strong><span style="font-size: 12pt;">如何有效地在Java平台上进行并发编程。</span></strong><br />
&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 10pt;">我对并发/多线程应用十分感兴趣，目前正在翻译<a href="http://java.sun.com/docs/books/tutorial/">Java Toturials</a>中<a href="http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html">Concurrency一章</a>。但不得不说，目前讨论并发编程还是超出了我的能力。而且讲师Doris Chen使用的幻灯片与今年JavaOne的一个主题"<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-2388&amp;yr=2007&amp;track=5">Effective Concurrency for The Java Platform</a>"所使用幻灯片十分相似，所以大家可以参考JavaOne中的那个主题的幻灯片，就不用我废话了。另外，JavaOne中还有一个关于测试并发应用程序的主题"<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-2220&amp;yr=2007&amp;track=5">Testing Concurrent Software</a>"，也可一并参考。<br />
&nbsp;&nbsp;&nbsp; 再推荐一本书，<a href="http://www.china-pub.com/computers/common/info.asp?id=34825">Java Concurrency in Practice</a>，肯定有很多朋友已经知道这本书了。该书在去年刚出版后，就在当年的JavaOne大会中就受到追捧，成为当届JavaOne的书籍销售冠军。我早前就买过一本，但很快就转卖给了另一位同事(因为她很想要)，故在STD的现场又买了一本 :D<br />
<br />
</span>
<span style="font-size: 10pt;">
&nbsp;&nbsp;&nbsp; <strong><span style="font-size: 12pt;">充满活力的Swing回来了。</span></strong><br />
&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 10pt;">正如我早前所说的，Swing是我最喜欢的Java"表现层"。与许多基于无状态的HTTP协议的Web应用相比，毫无疑问，作为纯Java程序的Swing可以更方便，更高效地实现各种炫目的GUI(当然，它们关注于不同的应用场景，实际上没有可比性)。<br />
&nbsp;&nbsp;&nbsp; 今年，Joey Shen(去年，前年也是他)为大家带来了一个展示了多种炫目GUI技术的Swing Demo。这个Demo是Sun Swing Team开发的，Oh-oh-oh，Swing核心开发者做的Java GUI果然不同凡响--华丽的界面，动画，透明，重影，半透明拖放，....，一个都不能少。<br />
&nbsp;&nbsp;&nbsp; 但实事求是地说，Joey演示的这些先进的GUI特效在我的工作中一时还用不上。不过，我还是对他介绍的在Swing中制作动画效果的框架--<a href="https://timingframework.dev.java.net/">Timing Framework</a>产生了兴趣，...另外，我在第二天(注意，是第二天)的下午会议快要结束时，趁着参加动手实验室"Java SE故障诊断大全"的机会向Joey(他主讲那个动手实验室)问了一个我在工作中遇到的使用AWT画线时出现的问题。<br />
&nbsp;&nbsp;&nbsp; 在今年JavaOne中关于Swing/Desktop开发的主题有很多，大家可以选择<a href="http://developers.sun.com/learning/javaoneonline/j1online.jsp?track=2&amp;yr=2007">Java Desktop</a>中的你所感兴趣的主题。<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt;"><strong>GC友好的Java编程</strong></span><strong></strong><br />
&nbsp;&nbsp;&nbsp; 我并没有听这个主题，因为它与并发编程的主题在时间上冲突了(可惜！)。但我可以看今年JavaOne中的一个同名主题<a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-2906&amp;yr=2007&amp;track=5"><span style="font-size: 10pt;">Garbage-Collection-Friendly Programming</span></a></span><span style="font-size: 10pt;">中的幻灯片。该幻灯片介绍了并发编程的一些基本原则。<br />
<br />
<span style="font-size: 10pt;"><span style="font-size: 10pt;"> &nbsp; &nbsp; </span><strong><span style="font-size: 12pt;">照片</span></strong><br />
&nbsp;&nbsp;&nbsp; 去一趟肯定要有些留念，但借的相机质量不太好，我用的也不太习惯，所以很多照片质量欠佳(Www，去年也是这样)，比较遗憾。我就只帖了几张照片到<a href="http://www.flickr.com/photos/jiangshachina/sets/72157602844861081/">我的Flickr</a>上，有兴趣的朋友可以去看看。另外，STD中国官方网站已经帖出了不少关于<a href="http://www.suntechdays.cn/Snapshots_BJ.htm">STD北京站</a>的图片(我也把这些图片copy到了<a href="http://www.flickr.com/photos/jiangshachina/sets/72157602844861081/">我的Flickr</a>中*_*)。<br />
&nbsp;&nbsp;&nbsp; 注：根据以前的经验，从大陆地区应该无法直接访问Flickr中的图片(图片都是红<span style="color: red;">x</span>，只能看到文字)，所以需要通过代理服务器。使用FireFox的朋友(包括我自己)就很方便了，只要安装FireFox的插件--<a href="https://addons.mozilla.org/en-US/firefox/addon/4286">Acess Flickr!</a>，就可以自由浏览Flickr了^_^ 不过，我刚才用IE测试了一下，似乎现在又可以直接访问Flickr了，但只能访问到较近一段时间内的图片。难道GFW又放过了Flickr？还好，我的图片都是老少咸宜的，身正不怕影子歪嘛。<br />
</span></span>
<span style="font-size: 10pt;"><br />
<span style="font-size: 8pt;"><span style="font-size: 10pt;"><span style="font-size: 12pt;">&nbsp;&nbsp; <strong><span style="font-size: 12pt;"><span style="font-size: 14pt;"><span style="font-size: 12pt;"><a href="http://www.blogjava.net/jiangshachina/archive/2007/11/08/158629.html">敬请关注我的下一篇随笔：Sun Tech Days 2007 -- Day2</a></span></span></span></strong></span></span></span><br />
</span><img src ="http://www.blogjava.net/jiangshachina/aggbug/158334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-11-06 09:15 <a href="http://www.blogjava.net/jiangshachina/archive/2007/11/06/158334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun Tech Days 2007 -- Preview(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/10/30/144709.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Tue, 30 Oct 2007 08:28:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/10/30/144709.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/144709.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/10/30/144709.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/144709.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/144709.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 12pt;"><span style="font-size: 14pt;">
Sun Tech Days 2007 -- Preview</span></span></strong><br />
</div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 一年一度的<a href="http://www.suntechdays.cn/">Sun Tech Days</a>又将开幕了，</span><span style="font-size: 10pt;">本文回顾了我前两年参会的体验，并分析了本次会议中我个人所感兴趣的几个主题。<span style="font-size: 10pt;">(2007.10.12最后更新)</span></span><br />
<br />
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 从上周三开始，本年度的Sun科技日(Sun Tech Days，STD)就开始接受报名了。官方网址：<a href="http://www.suntechdays.cn">http://www.suntechdays.cn</a>，优惠期截止到9月29日之前(我想应该就是到9月28日为止吧)。在优惠期内，单个人的会费是195元，和去年的会费一样(Well，没有随社会物价的上涨而上涨 ^_^)。<br />
&nbsp;&nbsp;&nbsp; 今年，将是我连续第三年参加STD了。<br />
&nbsp;&nbsp;&nbsp; <strong>2005年</strong>，当时还在武汉上大学(我本身也是湖北人)。那时学习Java不到1年，断断续续的，满打满算就11个月，学习也不努力，连门都没入(在学校里自学，效率太低了) :-( 但不知道为什么，对Java/软件开发非常感兴趣，而对自己的本专业--通信，就是一点兴趣都没有(呜呜呜，浪费了7年时间啊！)。2005年恰逢Java 10周年，从CSDN上看到要在北京举办JavaChina 2005(其实也就是STD)的消息，就报名参加了。对2005年的感觉就是，规模很大，北京主会场有4000多人，另外8个城市的分会场也有4000人左右。毕竟是Java 10周年嘛，其它年份的STD都达不到这个规模(当然，JavaOne的规模每年都会超过STD)。2005年时的我，对Java只是一知半解，在会议的众多session中，我也不知道应该听哪些主题，只是选择了一些Java语言级方面的session去听了。现在回想起来，也不知道当时听到了些什么。<strong>当年的最大收获就是和Java之父James Gosling有一张集体合影</strong>。哈哈，这难倒就是获得Sun认证的最大好处吗 *_* 因为我是在顺便参加"Sun认证群英会"时有幸得到了这个机会。</span><span style="font-size: 10pt;">这次活动大大激励了我学习和应用Java的热情。</span><br />
<span style="font-size: 10pt;">
&nbsp;&nbsp;&nbsp; <strong>2006年</strong>，我刚刚毕业，目前一直在北京的一家电子商务类的公司工作。虽然在当时还没有直接地参与Java项目的开发，不过项目都是和Java相关的(我当时做系统方面的工作)，并且一直坚持对Java技术的学习。其实，我自感自己的Java基础还是不错的，2004年，通过"Sun认证Java程序员 SCJP"(88%得分率)，2005年通过"Sun认证Java开发员 SCJD"(97%得分率)，而且平常学习时很注重基础知识。出于不断学习Java技术的想法，我又参加了当年的STD。此时，毕竟有些经验了，知道的东西也多了些，再听STD，就会有自己的选择了。我仍然对Java语言的基础部分比较关注(Java 5的新特性，Java 6的新特性)，另一个很关注的就是数据库方面(Java DB)。Java DB的session，我认为是当年最好的。2006年的收获确实不少，很多场景我现在还有很深的回忆。另外，发现在自己的英语水平又有提高了，这个收获可能更大啊 @_@<br />
&nbsp;&nbsp;&nbsp; <strong>今年</strong>，我已工作一年有余，有了一些实际的Java项目开发经验，并且学到了更多的Java方面的知识，有了新的提高。关于今年的STD，其中有几个session确实是我本人十分期待的，如关于：<br />
&nbsp;&nbsp;&nbsp; <strong>Open JDK</strong>。Java是真的开源了，而不是"半"开源(javac、core API、...，all of them have "Full" Sources)。目前我们使用的Sun JDK，不能debug Java API(因为src.zip中的源文件与实际使用的rt.jar中的class文件无法完全对应上，它们不是"一脉同生"的。"Who"动的手脚，FT!)，这让我很多次的很、很、很不爽。Well，现在我们可以用OpenJDK了。OpenJDK就是Java，而不是Java的一个分支(<a href="http://harmony.apache.org">Apache Harmony</a>？)，JDK 7的新特性将首先在Open JDK中实现。OpenJDK与Sun JDK的关系，就如OpenSolaris与Sun Solaris之间的关系。一个是开源社区主导的开源项目，另一个是Sun公司的产品。但Sun的产品(JDK，Solaris)是从开源项目(OpenJDK，OpenSolaris)中来的，只不过Sun在内部另外再做了一些测试。可能Sun产品的稳定性更强些，但差别应该很小，因为Sun这些产品的源代码最终还是要放到相关的开源项目中。<br />
&nbsp;&nbsp;&nbsp; <strong>Consumer JRE</strong>。当前的JDK/JRE太大了？Java程序的启动(特别是冷启动)太慢了？Consumer JRE很快就要来了。还有Java Kernel，它能像Linux Kernel那样出众嘛？<br />
&nbsp;&nbsp;&nbsp; <strong>Java DB</strong>。我一向关注数据库应用，去年听了，今天还要听。超级小(但比<a href="http://www.db4o.com/">db4o</a>大N倍)、可嵌入(不一定就是"嵌入式")，做大型数据库的前端Cache，方便使用、无需DBA，...。看起来都很吸引人，不是吗，哈哈哈...。在去年的STD中就听了Sun的数据库产品经理(华人，能够讲中文，就是讲中文，太棒了！)讲的这个session，今年又将有<br />
新玩意儿(也许这次要换讲师了？！)。<br />
&nbsp;&nbsp;&nbsp; <strong>Swing</strong>。我个人(or，一个人？)最喜欢的Java"表现层"。"UI"可能是Java最弱的方面了。Web方面的表现层框架，用起来都不方便(和M$ .Net的WebForm差太远了)；由于Java的桌面应用不受多数人的关注，而且还受SWT的冲击，Swing/AWT的应用面只能很小了。但我就是喜欢这种纯Java的"表现层"，它那如此优秀的组件化恐怕是其它Web表现层框架无法达到的(JSF的组件化是在模仿Swing)。在Java使用GPL v2协议开源之后，可以与Linux系统兼容(目前Ubuntu 7.0.4已默认安装JRE 6)，这为Java桌面应用提供了更多机会。<br />
&nbsp;&nbsp;&nbsp; <strong>Concurrency</strong>。</span><span style="font-size: 10pt;">该主题是今年Java One的session之一。</span><span style="font-size: 10pt;">java.util.concurrent包是JDK 5的重要新特性。在JDK 5之前，大家在编写Java多线程应用时，只能使用Thread，Runnable和wait，notify，notifyAll，...等少数几个类/接口和方法。大量的工作都需要应用程序员自己去完成。现在有了concurrent包，相信会给大家提供更多的便利。该包目前受到大师们的广泛重视。关于它，已经有了专题书籍<span style="font-size: 10pt;">"JAVA CONCURRENCY IN PRACTICE"(主要作者Brain Goetz是JSR 166--"</span></span><font size="-1">Concurrency Utilities</font><span style="font-size: 10pt;"><span style="font-size: 10pt;">"的核心成员，合作者还包括Joshua Bloch这样的Java Guru)和"<span style="font-size: 10pt;">Concurrent Programming in Java: Design Principles and Patterns</span></span></span><span style="font-size: 10pt;"><span style="font-size: 10pt;">"(作者Doug Lea是JSR 166和OpenJDK项目的领导，concurrent包的创始人)；Bruce Eckel的"Think in Java 4th"有一章专门讲它；Joshua Bloch在他的"Effective Java"第二版(尚未完成)中也将会为concurrent单辟一章。虽然在实际的工作中还没有机会编写多线程应用，但一直对它十分感兴趣。早前在参加SCJD考试时，做的一个C/S应用就使用了多线程。但那时是使用JDK 1.4，没能用到concurrent包。而且整个多线程机制也十分简单：由RMI分派线程，自己写一个Lock管理器，再加上同步。已经买了一本"JAVE CONCURRENCY IN PRACTICE"中文版，将会继续研究多线程应用。</span></span><br />
<span style="font-size: 10pt;">
&nbsp;&nbsp;&nbsp; <strong>Garbage Collector</strong>。我不得不关注的Java Coding基本功，该主题也是今年JavaOne的session之一(看来世界上的Guru、牛X、高手们都是很重视基础的，I love :-)。(如果有Exception Handle方面的session就好了，这也是Java的关键基础之一)。<br />
&nbsp;&nbsp;&nbsp; <strong>JSF</strong>。不得不说，我在Java Web表现层开发方面的"造诣"颇小。因为我认为Web表现层应用并不是纯Java的(如前所述，我喜欢Swing的原因之一就是它的纯Java性)，做Web表现层开发，不是完全在做Java开发(JSP，JavaScript，HTML，CSS，...)。在主流的几种Java Web表现层框架中，JSF也不是最常用的。不过，由于JCP把JSF作为Java EE 5规范的一部分，那么所有要兼容Java EE 5规范的应用服务器就必须提供自己的JSF实现。既然主流的应用服务器都已经(如WebLogic 10，Kingdee Apusic 4--关注一下国货撒)或将要(如JBoss 5)默认提供JSF框架，那么我们也许可以想当然的认为，使用JSF的比率将来肯定会有所提升。大厂商们的这种做法，还真有点"霸权主义"、"强权政治"的意味。不过，公道自在人心，还是要相信群众哦。<br />
&nbsp;&nbsp;&nbsp; <strong>Java FX</strong>。M$ Silverlight的"杀手"？但我似乎没必要去做那些炫目的RIA。<br />
&nbsp;&nbsp;&nbsp; ...<br />
<br />
&nbsp;&nbsp;&nbsp; 为STD打了一次广告，但是免费的。个人认为多参加一些此类技术活动，对自己的技术发展是十分有利的。<br />
&nbsp;&nbsp;&nbsp; 在参加完</span><span style="font-size: 10pt;">今年的</span><span style="font-size: 10pt;">STD和Netbeans Day之后，我会为每一天的活动写一篇随笔，以飧众友。<br />
<br />
&nbsp;&nbsp;&nbsp; See you at <a href="http://www.suntechdays.cn/">Sun Tech Days</a></span><span style="font-size: 10pt;"> 2007！</span><span style="font-size: 10pt;">
</span><img src ="http://www.blogjava.net/jiangshachina/aggbug/144709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-10-30 16:28 <a href="http://www.blogjava.net/jiangshachina/archive/2007/10/30/144709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>"Java"的由来(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/09/04/142528.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Tue, 04 Sep 2007 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/09/04/142528.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/142528.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/09/04/142528.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/142528.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/142528.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 14pt;"><span style="font-size: 12pt;"><span style="font-size: 14pt;">"Java"的由来</span></span></span></strong><br />
</div>
<span style="font-size: 10pt;">在SUN CEO <a href="http://blogs.sun.com/jonathan/">Jonathan Schwartz</a>的<a href="http://blogs.sun.com/jonathan/entry/better_is_always_different">最新Blog</a>中，<a href="http://blogs.sun.com/jag/">Games Gosling</a>介绍了Java程序设计语言的名称--"Java"的由来。(2007.12.07最后更新)<br />
<br />
这个故事就像下面这样：<br />
&nbsp;&nbsp;&nbsp; 我们需要一个名字。我们当时已正在使用"oak"(这个词实际上是我随便挑的)了，当整个团队开始认同它时，商标律师们却否决了它。我们有大量的邮件在讨论关于</span><span style="font-size: 10pt;">名称</span><span style="font-size: 10pt;">的事情，但什么都没被解决。我们最终傻到要将第一个停在我们面前的东西作为这个</span><span style="font-size: 10pt;">名称</span><span style="font-size: 10pt;">。<br />
&nbsp;&nbsp;&nbsp; 我们的市场部门领导知道某个是"命名顾问"的人(我不记得他的名字了，但他很棒)。我们负担不起一般的产品命名过程所需要的金钱和时间。他同意做一些不奇特但高效且快速的事情：在那个将我们自己大概10多个人锁在一个房间里整个下午的会议上，他表现得如同一个推进器。他开始就问我们一些像"这个东西让你感觉如何？"(兴奋)这样的问题，"还有什么让你也有那种感觉?"(Java!)。我们最后在一个板子上写上了实际上是随机产生的词。然后他让我们做了一个排序的过程，最终得到了那些名字的一个排名列表。我们得到了10多个侯选名字，并将它们传给了律师们：律师们从上至下地研究这个列表，直到他们找到一个词使他们能够不再继续搜寻。"Java"是那个列表中的第四个词。该列表中的第一个词是"Silk"，我讨厌但其它的每个人都喜欢这个词。我最喜欢的是"Lyric"，是该列表中的第三个词，但它没能通过律师们的测试。我不记得其它的侯选名字都些是什么了。<br />
&nbsp;&nbsp;&nbsp; 那么是谁起的Java这个名字呢？市场部门组织了那次会议，那个顾问主持了它，我们中的一大堆人随口叫出了许多词。我不能真地肯定是谁第一个说出了"Java"，但我几乎可以肯定那个人就是Mark Opperman。<br />
&nbsp;&nbsp;&nbsp; 但可以肯定地是，那时没有任何睿智的市场人员经过通盘考虑之后才得到Java这个名字。</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/142528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-09-04 10:20 <a href="http://www.blogjava.net/jiangshachina/archive/2007/09/04/142528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rock Star Josh Bloch(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/06/11/123283.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Mon, 11 Jun 2007 00:33:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/06/11/123283.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/123283.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/06/11/123283.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/123283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/123283.html</trackback:ping><description><![CDATA[<div style="text-align: center;"><span style="font-size: 12pt; font-weight: bold;"><span style="font-size: 14pt;"><span style="font-size: 14pt;"><span style="font-size: 14pt;">Rock Star Josh Bloch</span></span></span></span><br />
</div>
<span style="font-size: 10pt;">这是一篇前不久在</span><span style="font-size: 10pt;">JavaOne 2007期间</span><span style="font-size: 10pt;">(5月初)SDN(Sun Developer Network)对<a href="http://java.sun.com/javaone/sf/2007/articles/rockstar_bloch.jsp">Joshua Bloch的访谈</a>。我看了多遍，受益良多，就翻译在了此处。由于本人英文水平有限，文中部分语句暂时无法得到准确的翻译，故英文原文一并给出，请大家斟酌。(2007.06.12最后更新)<br />
<br />
Bio: Joshua Bloch, Google's chief Java architect and a former Distinguished Engineer at Sun Microsystems, won the prestigious Jolt Award from Software Development Magazine for his book, Effective Java Programming Language Guide. At Sun, he led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He holds a Ph.D. in computer science from Carnegie-Mellon University and is most recently the co-author, with Neal Gafter, of Java Puzzlers.<br />
简历：Joshua Bloch，Google公司的首席Java架构师，也曾是Sun公司的杰出工程师。由于书籍Effective Java Programming Language Guide，他从Software Development Magazine那儿赢得了极负声名的Jolt大奖。在Sun公司时，他领导设计并实现了众多的Java平台特性，包括JDK 5语言的提升以及获奖的Java集合框架。他从卡纳基-梅隆大学获得了计算机科学博士学位。最近，他与Neal Gafter一起成为Java Puzzlers的合作作者。<br />
<br />
Q: I've heard that at your doctoral thesis defense at Carnegie-Mellon, which was open to anyone for questions, you planted a long technical question with your mother that you answered flawlessly after saying, "Awww, Mom!" Is that true?<br />
我听说你了在卡纳基-梅隆大学时谋划的博士论文，这个论文为了寻求问题而被放开给每个人。你在你母亲的帮助下弄出了一个很长的技术问题，在说出来之后，你的回答毫无瑕疵。<br />
<br />
A:Yes. The question appeared to tear the work to shreds. My mom had fun with it, and so did I. Thesis defenses can be so dry. I did everything I could to inject a bit of levity into mine. I also answered another -- planted -- question with a rap, complete with recorded rhythm track. I had a boom box concealed under the desk during the talk.<br />
是的。这个问题的出现将工作分成小块。我妈妈喜欢它，我也是的。撰写论文是如此的枯燥。我做每件事情时，都希望能够给我自己的事情加入一点乐趣。我也回答了与RAP有关的另一个问题，使用一个记录节奏跟踪器完成。在谈话的过程中，我将一个Boom Box(译注：一种便携式的音频系统，一般由无线电、磁带或CD播放器组成)藏在桌子下面。<br />
<span style="font-style: italic;">上述一问一答，我确实无法准确翻译。可能涉及到某个典故，并且语言很口语化。希望有朋友能够教我 :-D</span><br />
<br />
Q: You are currently busy revising Effective Java. Can you give us some hints about what will be in the second edition?<br />
目前，你正在修订"Effective Java"。你能否给我们一些关于可能出现在第二版中的内容的一些线索？<br />
<br />
A: I'm trying very hard to preserve the tone of the first edition. I'm revising all the existing items in light of the J2SE 5.0 language changes and everything I've learned since 2001. I'm adding a few more items here and there, plus an entire chapter on generics. Also, I'm slanting the threads chapter toward java.util.concurrent.<br />
我正在努力保持第一版的风格。我正修改的所有已经存在的条目都据于J2SE 5.0语言的变化，以及从2001年至今我所学习到的任何东西。我正在各处添加一些更多的条目，为泛型加入了一整章。为了java.util.concurrent包，我也会对多线程这一章进行倾斜。<br />
<br />
Q: What are the most interesting or funny reactions you have gotten from readers of Java Puzzlers?<br />
你已经从Java Puzzlers的读者那儿得到的最有趣或最奇特的反应是什么？<br />
<br />
A: Well, I got a letter from David Bacon thanking me for the copy I sent him and saying that it was the perfect thickness to raise his monitor up to the correct height. Then he sent me a picture of his intern's monitor with a copy of the book under it. I also thought it was pretty funny when our Japanese translator, Yoshiki Shibata, caught us falling into one of our own traps. It's described here, if you're curious.<br />
我得到了David Bacon的一封信，感谢我送给了他一本该书，并且说那是一个使他的显示器上升达到正确高度的理想厚度。后来他递给我一张他的内部显示器图片，这本书就在显示器的下方。我同样认为我们的日文版译者，Yoshiki Shibata，为赶上我们而落入了我们自己的一件行李中，是一件十分有趣的事情。就描述到这，如果你感兴趣的话。<br />
<span style="font-style: italic;">如果这两件"趣闻"真的如我翻译的那样的话，我可真感到惊讶。关于第一件趣事，如果我是该书的作者，我会认为</span></span><span style="font-size: 10pt;"><span style="font-style: italic;">David</span></span><span style="font-size: 10pt;"><span style="font-style: italic;">的行为是对我的一种极大的讽刺--我的书是用来看的，不是用来垫显示器的；关于第二件趣事，我认为就是Josh在"讽刺"(至少是无恶意的吧)那位可怜的日文译者。不过，老外很开放的，也许这只是一些平常的"笑料"罢了。</span><br />
<br />
Q: In June 2004, when you became chief Java architect at Google, you were put in charge of spreading and encouraging the use of Java technology there. How has it gone?<br />
在2004年6月，当你成为了Google公司的首席Java架构师，你在那儿就被置于推广和鼓励Java技术应用的位置。后来如何了？<br />
<br />
A: Very well indeed. We use the Java platform extensively in many of our products and internal applications. Of course, we use other languages too.<br />
真的非常好。我们在我们的产品和内部应用中广泛地使用Java平台。当然，我们也使用其它的语言。<br />
<br />
Q: Some people may not know that you identified a widespread bug affecting both Java and other languages that had gone unnoticed for half a century. Tell us about it.<br />
有些人可能不知道你发起过一个分布广泛地Bug影响，包括Java和其它语言，它已经被忽略达半个世纪之久了。告诉我们一些关于它的事情。<br />
<br />
A: It wasn't really half a century. A quarter century maybe. And I didn't really identify it -- I propagated it into the Java platform libraries! Someone reported the bug to Sun. I don't know who it was, but I was shocked -- and amused -- by the bug. At Peter Norvig's urging, I wrote it up for the Google research blog. I guess it caused quite a stir in the blogosphere.<br />
真的不是半个世纪，可能是25年。并且也确实不是我发起它的--我只是将它介绍到了Java平台库中。某个人向Sun报告了这个Bug。我不知道他是谁，但我被这个Bug震惊了--也觉得很有趣。受Peter Norvig的催促，我把它写入了Google的研究Blog。我猜想它在Blog界引起了一阵震动。<br />
<br />
Q: How do you feel about the open sourcing of the Java platform?<br />
你怎么看Java平台开源？<br />
<br />
A: I think it's a good thing. It goes a long way toward easing the concerns of the open-source and research communities about the legal aspects of working with the platform. In many ways, it's always been a pretty open platform: free access to the source code, heck, even the bug database. But it's nice that Sun has gone all the way.<br />
我认为那很好。在缓解开源和研究社区对工作于这个平台的法律方面的担心已经走过了很长一段路。在许多方面，它始终都是一个十分开放的平台：自由的访问源代码，甚至是Bug数据库。但非常好的是Sun已经完成了所有的工作。<br />
<br />
Q: What advice would you give to a programmer new to the Java language?<br />
对于一个新接触Java语言的程序员，你有什么建议？<br />
<br />
A: Write lots of code. Have fun with it! Collaborate with people who are more experienced than you and learn from them. Join an open-source project. Code reviews are a great way to learn. Don't be embarrassed when people find problems in your code. Fix them and have fun watching your code and your skills improve. Oh, yeah, and go buy a copy of Effective Java.<br />
写大量的代码，并以它们为乐。与那些比你更有经验的人一起协作，并向他们学习。加入一个开源项目。代码回顾是一个很好的学习方法。当别人发现你的代码中的问题时，不必感到尴尬。修复这些问题，并对于观看你的代码及对你技术的改进而感到高兴。噢，是的，去买一本Effective Java。<br />
<br />
Q: What do you think is the most inventive use of Java technology?<br />
你认为对于Java技术最具创造性的应用是什么？<br />
<br />
A: That's another tough one. I guess you can't go too far wrong with the Mars Rover. I was blown away by the images that it transmitted.<br />
那是另一个棘手的问题。我猜想你不可能像Mars Rover(译注：美国的火星漫游者飞行器，它的系统软件使用Java编写，这是Java发展历程中的一件大事)那样走得那么远。我为它发射时的画面所倾倒。<br />
<br />
Q: What's the biggest misconception about Java technology?<br />
对Java技术的最大误解是什么？<br />
<br />
A: What irks me most is that there are still people who think it's slow. That's ancient history. By J2SE 1.4, the platform was not appreciably slower than traditional compiled languages, and it just keeps getting faster. Both of the last two releases were impressive in this regard. You don't have to touch your program. Just download the new release, and your program will run significantly faster.<br />
最让我感到厌倦的是，仍然有人认为Java很慢。那已经很久以前的事了。到J2SE 1.4时，这个平台就一点都不比传统的编译型语言慢了，并且它还在变得更快。最近发布的两个平台在这一点上令人影响深刻。你不用修改你的程序，只要下载最新的版本，你的程序就会明显地运行地更加快。<br />
<br />
Q: The Java class that you couldn't live without is...?<br />
你离开就不能活的Java类是...？<br />
<br />
A: I'm going to have to say LinkedHashMap, even if I did write it. It combines the speed of HashMap with the predictability of a sorted map.<br />
我将不得不说就是LinkedHashMap，即使我写出了它。它使用一个排序的映射预览而结合了HashMap的速度。<br />
<br />
Q: What's your favorite Java technology book?<br />
你所喜欢的Java技术书籍是什么？<br />
<br />
A: Modesty prevents me from answering this one directly, so I'll plug one of my favorite programming books that isn't specific to the Java language. Anyone who cares at all about bit twiddling should get their hands on Henry S. Warren's Hacker's Delight. It's the Bible of bit twiddling.<br />
谦虚防止我直接地回答这个问题。所以我将指出我所喜欢的编程书籍之一并不特别关于Java语言。任何真正关注位运算的人都应该接触过Henry S. Warren的"Hacker's Delight"，它是</span><span style="font-size: 10pt;">位运算</span><span style="font-size: 10pt;">的"圣经"。<br />
<br />
Another book that every programmer should read is Jon Bentley's Programming Pearls. It's a great book about "programming in the small," as relevant today as when it was first published in 1986.<br />
另一本每位程序员都应该阅读的书就是Jon Bentley的"Programming Pearls"。这是一本伟大的关于"小型编程"的书，它对今天的价值就如同1986年它第一次出版时一样。<br />
<br />
Q: Can you describe the process of writing code?<br />
你能描述一下写代码的过程吗？<br />
<br />
A: For me, there are several distinct stages. The hardest part is figuring out what problem I'm really trying to solve. Once I do that, it's usually reasonably straightforward to envision the rough outlines of the solution. Then it's a "simple matter of programming" to make it real, including the tests, of course.<br />
对于我，有几种不同的情况。最困难的部分就是勾画出我真正需要去解决的问题。一旦我做到了，常常就能相当直接地想像出解决方案的粗略轮廓。<br />
<br />
Q: What's the next big technology revolution?<br />
下一个大的技术革命是什么？<br />
<br />
A: I'm really bad at predicting the future. It's clear that multicore machines will be mainstream in the very near future and that programs will have to change to take full advantage of them. I'm not betting on Software Transactional Memories (STMs) in the near term, but on high-quality multithreaded utilities, such as java.util.concurrent. Oh, yeah, and everything that isn't already on the web will be soon.<br />
在预知未来方面，我真正的很差。清楚地是，在非常近的未来多核机器将成为主流，程序将不得不进行改变以充分利用它们。我不是在为软件事务内存(STM)打赌，而是为高质量的多线程工具类，如java.util.concurrent。噢，是的，还没有在Web上的每一件东西都将很快成真。<br />
<br />
Q: What do you see as the most important Java technology API five years from now?<br />
从现在开始的五年中，你将如何看待最重要的Java技术API？<br />
<br />
A: The core APIs -- java.lang and java.util -- will still be very important. But java.util.concurrent and its offspring will be equally important.<br />
核心API--java.lang和java.util--仍然将十分的重要。但是java.util.concurrent和它的后续者将变得同样重要。<br />
<br />
Q: If you could work on a dream project, what would it be?<br />
如果你能在一个梦想的项目中工作，你希望它是什么？<br />
<br />
A: A brand-new Java-like language atop the same virtual machine that is not compatible with the Java programming language. Rather than shoving yet more features into this language, I want a fresh start, but I want to leverage much of the work that has already gone into the platform. That means using the same virtual machine and providing some interoperability story with existing libraries.<br />
一个崭新的、与Java相似的语言，运行在一个相同的但与Java程序设计语言不兼容的虚拟机中。不要把这些特性挤到这个语言中，我想要一个新的开始。我想影响大量的已经进入这个平台的工作。这就意味着，使用相同的虚拟机并为已有的类库提供交互性功能。<br />
<span style="font-style: italic;">关于Joshua对他所理想的项目的描述，我非常的迷惑，这段话仍然需要研究。</span><br />
<br />
Q: What recent changes to the platform have made your life easier?<br />
最近这个平台的什么变化使你的生活变得更容易。<br />
<br />
A: I hate to sound like a broken record, but java.util.concurrent. Also java.util.ArrayDeque and NavigableMap. The for-each loop is great, and so are generics, even if they do complicate things somewhat.<br />
我很不喜欢说类似于破记录之类的话，但对于java.util.concurrent要除外。java.util.ArrayDeque和NavigableMap也是的。For-Each循环很好，泛型也是如此，即使它们做了一些稍微复杂的工作。<br />
<br />
Q: Where in the process of programming do you have the most fun?<br />
编程中的哪个过程使你最有乐趣？<br />
<br />
A: I enjoy many phases, from requirements analysis to debugging. Each of these phases presents me with brainteasers, and solving these brainteasers is what I like best. But nothing makes me feel better than building a reusable component and seeing it get reused.<br />
我享受于许多的阶段，从需求分析到调试。这些阶段中的每一个都会呈现给我难题，而解决这些难题则是我最喜欢的。但没有什么比构建一个可重用的组件并看到它被重用更让我感到高兴了。<br />
<br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/123283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-06-11 08:33 <a href="http://www.blogjava.net/jiangshachina/archive/2007/06/11/123283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Design Patterns are Code Smells(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/06/04/121731.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Mon, 04 Jun 2007 01:00:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/06/04/121731.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/121731.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/06/04/121731.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/121731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/121731.html</trackback:ping><description><![CDATA[<div style="text-align: center;"><span style="font-weight: bold;"><span style="font-size: 14pt;"><span style="font-size: 14pt;">Design Patterns are Code Smells</span></span></span><br />
</div>
<span style="font-size: 10pt;">上个月就在TheSeverSide中看到关于<a href="http://www.relevancellc.com/2007/5/17/design-patterns-are-code-smells">这篇文章</a>(实际是一篇简短的Blog)的消息，当时就觉得很有趣，因为自己正在学习设计模式，故将这篇短文保存了下来。昨天在自己电脑中又看到了此文，顺手就把它翻译了出来。<br />
这篇Blog的作者认为大部分设计模式在代码层都是code smell，在文末评论中有Google Guice项目的leader -- Bob Lee的评语。Bob对作者的观点表示了赞同，但也指出框架可以减轻对模式的需要。(2007.06.04最后更新)<br />
<br />
在原始的Gof的书中，作者清楚地指出当你在使用设计模式时，<br />
&nbsp;&nbsp;&nbsp; 程序设计语言的选择是重要的，因为它会影响某人的观点。我们的模式假设是使用Smalltalk/C++语言级特性，这种选择决定了什么容易/不容易实现(Design Patterns, p.4)。<br />
不幸的是，这条信息基本上被丢弃了，程序员们时常将模式当作处方。Martin Fowler解释了区别：<br />
&nbsp;&nbsp;&nbsp; 处方趋于更加特别，经常关联于一个特别的语言和平台。甚至当一些模式需要依赖一个特定的平台时，他们仍试图于用这些模式去解释更加一般的概念。<br />
如果你已经遇到一个Java或C#应用程序看起来像C++的处理方式，你就会知道这两个概念的混合将造成损害。<br />
不管你如何从处方中区分出模式，你所思考的程序设计语言就是你要为之所设计的程序语言。这也就是为什么Prags鼓励每个人每年学习一种新的语言。你将仍会为你所知道的这组语言进行设计，但至少你将不会没有希望。<br />
程序语言提前使模式不能成为药方。回到1998年，Petter Norvig争论道，大部分的原始Gof模式在Dylan或Lisp中都是无形或简单的。之后，Greg Sullivan对Scheme持同样的观点。Jan Hannemann也使用Java+AspectJ证明了相同的观点。设计模式不能如处方那样发挥良好。它们最多是周期性的。<br />
在代码级别，大部分的设计模式都是代码异味(code smells)。当程序员在代码检查中看到了设计模式，他们就会滑入到催眠般的熟悉场景中。醒醒！那是一个设计模式，或者说是一个来自腐臭程序语言的失效药方？<br />
<br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/121731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-06-04 09:00 <a href="http://www.blogjava.net/jiangshachina/archive/2007/06/04/121731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache给Sun的一封公开信(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/04/18/111651.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Wed, 18 Apr 2007 07:45:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/04/18/111651.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/111651.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/04/18/111651.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/111651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/111651.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt;" align="center"><span style="font-size: 12pt;"><strong><span style="font-size: 14pt;">Apache给Sun的一封公开信</span></strong></span></p>
<p style="font-size: 10pt;" align="justify">上周(2007年4月10)，由于不满于Sun所提供的针对TCK的许可证，Apache发表了一封公开信。<br />
这个消息我首先是在TSS上看到，然后又在<a href="http://www.apache.org/jcp/sunopenletter.html">Apache</a>上阅读了公开信的全文，觉得很有意思，就翻译出来了。其实早有朋友翻译了该文并发表了出来，但我的这篇译文是独立翻译出来的，而且是本人第一次完整地翻译一篇文章。所以放在此处，也算是对自己的一个小小的鼓励吧 :-) (2007.04.18最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;在2007年4月10日，Apache软件基金会向Sun Microsystems公司发出一封如下的信，表达了他们对无力获得一个针对Java SE 5 Technology Compatibility Kit(TCK)的可接受的许可证的关切。Apache Harmony项目需要使用TCK去证明其自身是否兼容Java SE 5规范，这也是Sun对Java SE 5规范协议的要求。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;亲爱的Jonathan：<br />
&nbsp;&nbsp;&nbsp;&nbsp;我是Geir Magnusson Jr，也是Apache软件基金会(ASF)--一个非赢利性的公益机构--的官员。我负责ASF在Java Community Process (JCP)中的相关事务。同时，我也是Apache Harmony项目的副主席，并在此项目中代表ASF。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;从2006年8月开始，ASF就已经一直在尝试着从Sun那里确保获得一个可被接受的针对Java SE测试工具包的许可证。该测试工具包，被称作"Java Compatibility Kit"或"JCK"，Apache Harmony项目需要它去证明该项目是否兼容Java SE 规范，这也是Sun的规范协议所要求的。Sun正在提供的JCK许可证通过对我们软件的用户的"应用领域"的限制来强加知识产权的约束。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;这些约束对于我们而言是完全不能够被接受的。根据我下面的解释，这些约束违背了"Java规范参与协定(JSPA)"(JSPA是JCP的管理规则，Sun作为缔约的签字方也需要遵守)的条款。ASF在支持使商业软件繁荣的开源软件生态系统方面有着光荣的历史。然而，Sun的JCK许可证会防止Sun的商业Java应用成为ASF开源软件扩展的一部分。该许可证也会阻止我们的用户在特定领域的应用中使用Apache的软件。这种或明或暗的对知识财产侵犯的行径使得一个人就能够越过生态系统中的其它参与者而颠覆商业性的优点。在一个开放的生态系统中，通过实现一个规范而产生的必要知识财产要独立于该生态系统中某个成员的特别利益而被保护，这也是我们拒绝你所提出的条款的基础。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;你的约束违背了JCP的基本保护原则，这些保护原则确保了两条：<br />
&nbsp;&nbsp;&nbsp;&nbsp;a)规范的领导者与专家组制定开放的规范；b)任何人都可以实现这些规范，并分发这些实现品，而不必害怕为了实现这些规范需要对规范的领导或专家组成员承担任何"必要的知识财产"的责任。特别地，JSPA还要求如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;1)一个规范的领导者不能向获得许可证的人强加任何可能限制或约束他们创建或发行他们的独立实现品的合约性条件或约定。<br />
&nbsp;&nbsp;&nbsp;&nbsp;2)一个规范的领导者必须向任何兼容规范的实现品免费许可所有的"必要知识财产"。<br />
你的条款正试图绕过这两条要求。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;除了阻止了Harmony项目--一个从2005年就开始的由社区领导的ASF开源项目--之外，为了遵从你的合约性义务，这个错误将使作为开放标准组织的JCP的信誉和作为开放技术Java其本身的名誉置于危险境地。我们相信这也将威胁到通行的商业Java生态系统的合作本性，使Sun与ASF之间长期友好的关系，甚至是Sun与更广大的开源社区的关系，处于危险境地。而所有的这些都是Java持续增长的关键。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;除开JSPA的义务，这些限制也违背了Sun的公开承诺，即任何由Sun主导的规范对于开源或自由软件都是完全可实现的、可发行的。这还用不着提及"完全可实现的"(包括针对JCK)也是规范协议所要求的。最后，对我们的用户在使用领域方面的限制也违背了开源软件协议的基本原则，因此这些限制将阻止基于开源协议的发行行为，也包括我们自己的这些行为。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;我们对你所提供的协议的拒绝是明确而有效的。我们所面对的现状是与JCP基本知识财产哲学、作为基于开放标准生态系统的Java、Sun对自由和开源社区的公开承诺、Sun作为JSPA中规范的领导者的合约性义务，全面地冲突。JCP被清晰地设计成防止任何一个单独的参与者去展示它能够控制市场的秩序。另外，这也与"开源"的表意其及内涵相反。而"开源"是Sun所陈述的商业战略中的一个关键元素。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;通过Apache Harmony，ASF在规范的领导者Sun的理解下并出于良好的信念正在实现Java SE，这将实现双赢。我们的目的一直都是创建一个被认证的兼容的Java SE实现，该实现会在Apache许可证下发行。为了做到这些，我们需要JCK。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;我们希望你在30天内向我们提供一个可被接受的、符合JSPA的许可证，或者给出一个你们为什么不能那么做的公开解释。<br />
&nbsp;&nbsp;&nbsp; 我们正期盼你的回复。<br />
<br />
&nbsp;&nbsp;&nbsp; Geir Magnusson Jr.<br />
&nbsp;&nbsp;&nbsp; VP, Java Community Process<br />
&nbsp;&nbsp;&nbsp; Apache Software Foundation<br />
&nbsp;&nbsp;&nbsp; geirm at apache dot org</p>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/111651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-04-18 15:45 <a href="http://www.blogjava.net/jiangshachina/archive/2007/04/18/111651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>缩写词(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2006/08/12/63118.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Sat, 12 Aug 2006 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2006/08/12/63118.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/63118.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2006/08/12/63118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/63118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/63118.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 收集的一些自己感兴趣的缩写词其及全称。了解一个缩写词的全称，有利于我们更好的理解它的意义，(2009.12.02最后更新)&nbsp;&nbsp;<a href='http://www.blogjava.net/jiangshachina/archive/2006/08/12/63118.html'>阅读全文</a><img src ="http://www.blogjava.net/jiangshachina/aggbug/63118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2006-08-12 09:16 <a href="http://www.blogjava.net/jiangshachina/archive/2006/08/12/63118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>