﻿<?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-exJava</title><link>http://www.blogjava.net/jackyzhong/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:03:24 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:03:24 GMT</pubDate><ttl>60</ttl><item><title>[导入]转载:  J2SE(TM) 5.0专题 之 语言特性 (完整版)</title><link>http://www.blogjava.net/jackyzhong/archive/2005/06/03/5508.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Fri, 03 Jun 2005 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/06/03/5508.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5508.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/06/03/5508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5508.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5508.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: [版权声明]作者保留本文的版权。如需转载，请保持文章完整，注明出处，并保留此声明；如需用于商业目的，须作者本人书面许可。作者的联系E-mail: gaoyuxiang@gmail.com&nbsp;&nbsp;[准备工作]&nbsp;首先，为了了解J2SE(TM) 5.0的新的语言特性，你需要下载新版的JDK，在这里可以找到下载链接：http://java.sun.com/...&nbsp;&nbsp;<a href='http://www.blogjava.net/jackyzhong/archive/2005/06/03/5508.html'>阅读全文</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-06-03 10:43 <a href="http://www.blogjava.net/jackyzhong/archive/2005/06/03/5508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]你会在你的web应用里用"降龙十八掌"吗?</title><link>http://www.blogjava.net/jackyzhong/archive/2005/06/02/5509.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Thu, 02 Jun 2005 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/06/02/5509.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5509.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/06/02/5509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5509.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5509.html</trackback:ping><description><![CDATA[<BR><BR><A href="http://www.javaworld.com/javaworld/jw-10-2004/jw-1004-soa_p.html">这是rain推荐的一篇关于SOA的文章</A>. 比较易懂, 不过它框架名字比较牛:&nbsp;<!--StartFragment --> <FONT color=#ff0000><FONT face="verdana, arial, helvetica" size=2><STRONG>X18p</STRONG> (Xiangnong 18 Palm, named for a legendary powerful kung fu fighter)</FONT> <IMG height=19 src="http://www.blogjava.net/Emoticons/emsmilep.gif" width=19 border=0>.&nbsp;&nbsp;<FONT color=#000000> 降龙十八掌!!! 看作者是位中国人了,而且还是个金迷.<BR></FONT><BR><BR><FONT color=#000000>x18p 主要是解偶了web和biz层. Struts action里面不放任何的逻辑代码, 这当然很普通. 不管是heavy还是light container都告诉我们逻辑代码应该在ejb或是pojo里. 不过x18p是用soa的方式来封装biz层, 实现了web和biz的松藕合. 这样action不用管biz是用ejb还是用pojo,或者其它什么. biz层的重用性也大大加强,既可以服务于web client,也可以是Swing, 也可以是web service. <BR><BR>看了这篇文章,你会在你的web应用里尝试一下降龙十八掌吗?<BR></FONT><BR></FONT><img src ="http://www.cnblogs.com/jackyzhong/aggbug/166537.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/06/02/166537.html'>http://www.cnblogs.com/jackyzhong/archive/2005/06/02/166537.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-06-02 10:32 <a href="http://www.blogjava.net/jackyzhong/archive/2005/06/02/5509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]Spring presentaion (2)</title><link>http://www.blogjava.net/jackyzhong/archive/2005/06/01/5510.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Wed, 01 Jun 2005 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/06/01/5510.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5510.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/06/01/5510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5510.html</trackback:ping><description><![CDATA[Finaly I made a PPT file for presentaion, It's not an easy work.<A href="http://www.cnblogs.com/Files/jackyzhong/Spring.rar"> Here is my ppt</A><img src ="http://www.cnblogs.com/jackyzhong/aggbug/166129.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/06/01/166129.html'>http://www.cnblogs.com/jackyzhong/archive/2005/06/01/166129.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-06-01 16:31 <a href="http://www.blogjava.net/jackyzhong/archive/2005/06/01/5510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]转贴：Spring vs. EJB </title><link>http://www.blogjava.net/jackyzhong/archive/2005/05/30/5511.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Mon, 30 May 2005 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/05/30/5511.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5511.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/05/30/5511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5511.html</trackback:ping><description><![CDATA[<FONT face=Arial size=2>引自：http://www.cnblogs.com/raimundo/archive/2004/09/20/44697.html<BR><BR><BR>赫赫，我来说一下spring vs EJB，首先强调，我不是ejb的拥护者，但我欣赏他的完整、他的学院气，同时也深感他的硬伤，我不是spring的拥护者，虽然去年3、4月间看<BR><BR>到spring的时候曾经让我眼前一亮。对ejb有太多的误解，对spring有太多的吹捧，我希望这是一个相对公平的比较.<BR><BR>我认为spring和ejb的差异在这样三个方面，一个是受众也就是这两个叫framework也好叫platform也好的东西的scope；另一个是component architecture，最后一个是语义<BR><BR>。<BR><BR>[b]1.Scope比较[/b]<BR><BR>先说scope，ejb的scope是什么？ejb针对什么系统来设计的？这个我想一个人一个答案，我说了不算，同样大家说了也不算，我们来看规范（题外说一句，我想本来我没啥<BR><BR>资格在这里谈论ejb，我应用ejb的项目不多，但是我有个习惯，就是读规范学技术，不管别人怎么说先看这个东西是怎么来的，我想这一点还使我有些开口的自信，不至于太<BR><BR>贻笑大方），ejb规范的头几句：<BR>[b]Enterprise JavaBeans is an architecture for component-based computing.Enterprise beans are components of transaction-oriented enterprise<BR><BR>applications.[/b]<BR><BR>好了，很明确，ejb是针对transaction-oriented enterprise application的组件，那么也就使说ejb是面向[b]以事务为中心[/b]的企业软件，而不是别的。ejb的核心是<BR><BR>transaction，不是domain model或别的。<BR>why transaction?我在电力行业做过一阵信息化软件架构师，在电力这样一个需要处理大量数据的领域里，很少有oo model，而是做完entity分析，交给dba去优化，以数据<BR><BR>性能为主，这样的系统里，数据操作的粒度就是transaction，而不是object或是别的。我想这该算是一个大型企业级系统，我看到的是transaction，因此ejb这个把scope定<BR><BR>在enterprise级的东西而言，这样的设计还使合理。而且ejb对transaction这部分的处理确实比较完整，cmt，bmt，不同的transaction scope控制的都很好。基于这种认识，<BR><BR>我认识transaction script是ejb的标准应用模式，而不是domain model或是别的。<BR>这是对ejb最大的误解的来源，我看过的所有ejb书里，只有o'reilly的一本隐约提到transaction是ejb的中心。其他一律不提，疯狂的鼓吹ejb多好多好ejb多么万能，我想<BR><BR>，如果不知道ejb是transaction-oriented的，那么ejb奇怪的对象模型的确不可接受。<BR><BR>再说spring，spring是什么呢？我没有看到特别明确的定义，不过我想仿照ejb，定义spring为：<BR>Spring is a Javabean-based framework that supporting component architecture development.Spring provides lighter context for heterogeneous entrprise<BR><BR>application.<BR><BR>我e文很差，cet-6 6次都没过，我想说明的是，spring是一个轻量化的组件架构，可以支持多种企业应用程序模式.看到这里有人又该说了，no,no还有ioc，还有aop,没错这<BR><BR>些很cool的特性我没说，但是包含了，component architecture意味着两个方面，component working(编写组件)和container working(编写容器环境)，spring的ioc和aop是<BR><BR>用在container working里的.当然肯定还有其他的一些没有概括，但是我想主体我还是说到了的.这样scope就很明确了，spring的基础是javaBean，javaBean支持完整的oo建<BR><BR>模，因此spring可以适用更多的结构,domain model和别的一些。<BR><BR>那么开始比较，spring有一个理论上普适的组件模型，但是鉴于大型应用多为transaction-oriented，那么用spring的理由就是domain model，ejb不能提供完整的oo模型而<BR><BR>spring可以。<BR><BR>结论：由于scope不同，其实比较spring和ejb那个更适合企业开发没什么意义，因为这里面根本就是两个不同的范畴，在scope上指责ejb不如spring，就好像说raimundox，你<BR><BR>就不能替老婆把孩子生了，还让她那么痛苦的怀胎十月。其实我也不想，我也想替，可惜我们这功能.....扯远了，ejb也是，没这功能你怎么强求他呢？你要说ejb设计的不好<BR><BR>，也不对，人家有专门的领域。因此我说，在scope上比较spring和ejb没意义，根本不是一个级别的。<BR><BR>[b]2.component architecture[/b]<BR><BR>Component architecture有一个基本观点，就是component和context的分离，理想情况下，component只负责业务的实现，而container提供context，这个context只技术<BR><BR>context，比如事务比如安全的支持。于是，component architecture的基本观点就是business关注点和technique关注点分离，business由component负责，technique由<BR><BR>context或者叫container实现。那么很明确了，component architecture里有两种编程，针对component的和针对container的。<BR>好，有了这个理解，我们可以继续了，如果有人有疑意，那么抱歉，这片文章并不适合您，后面全部的论点都是基于这个观点的，如果不认可这个，下面的也不会认可，您<BR><BR>也不用浪费时间了。<BR><BR>首先看ejb的component方面，ejb在component architecute做得非常的好，ejb就是一个业务组件，在container-managed的情况下，组件通过声明可以应用容器提供的技术<BR><BR>context，当container-managed不满需要的情况下，可以bean-managed，只要保持对外的事务语义就可以了（记得吗？ejb是transaction-oriented，事务最重要）。在ejb里<BR><BR>，组件和容器的约定非常明确，哪些需要组件写，哪些是容器提供的非常明确，这是component architecture里很好的习惯，明确组件和容器的界限（ejb的一个缺点，矫枉过<BR><BR>正，有一些操作也被禁止）。编写代码非常容易，业务，only业务。其实ejb的规范里，ejb的coder其实最好是domain expert，实现业务逻辑就好了。<BR><BR>现在来看spring的component方面，spring以javaBean为基础，贫容器，也就是对容器没要求，于是，spring第一个缺点，contianer和component的约定不清晰(写到这里我<BR><BR>已经听到一些人在叫了，这是spring的优点，自由，别急，后面我会证明这是spring的软肋)，但是spring用了一种比较聪明的办法，那就是加强container working.<BR><BR>看一下spring的container working,通过spring的aop api，我们可以很容易的为特定组件定制容器环境，把一个组件需要的容器技术环境以aspect的形式weave到component<BR><BR>里，非常的灵活，也非常的强大，spring通过这种形式来弥补组件/容器约定不足的情况，一切由component选择，容器除了装配（ioc/dip）不提供任何技术context，想要什<BR><BR>么自己来，这个给了component实现者自己选择的权利，很好（但也隐含了spring的最大的不足，别急我后面会说）。<BR><BR>再来看ejb，非常遗憾，ejb container working的能力几乎为0，当然算上jca的话还不算太差，但是那只是资源，而不是技术context。why?因为ejb认为他已经提供了所有<BR><BR>企业级开发所必需的技术context了，事务(ejb里我总把他放在第一位)、分布、并发、安全等等。在ejb看来container working的能力几乎无用，而且不安全，除了jboss开放<BR><BR>了比较多的container working接口其他的ejb container提供这方面的支持很少很少.当然提供很多技术context并不是坏事，要命的是不能配置，要么全用要么不用（倒是很<BR><BR>原子），这是ejb最大的不足，容器环境不可配，也是spring强于ejb的地方。<BR><BR>上面我们已经看到了spring和ejb都是component architecture，那么component能想到的最直接的用处就是复用。那么比较这一点就是比较ejb和spring component<BR><BR>architecture的关键。看到这里spring的支持者们该常出一口气了，spring复用一定强于ejb复用，赫赫，但我的结论正好相反，ejb复用优于spring复用！！收起你们的愤怒<BR><BR>，收起你们不屑，听我把话说完。<BR><BR>在component architecture里，component是业务实现，而不该有技术代码，就算用也要通过容器环境去和容器交互来完成操作，比如ServletContext等东西。[b]那么其实<BR><BR>组建结构下复用的关键不是组建而是容器！！[/b]<BR><BR>以前有一个颇有名气的dx(gigix别看了，说你呢)，说"COM和EJB都鼓吹模块化和复用，模块化是真的，复用是骗人的",com我不是很熟，不好下结论，ejb呢？ejb不易复用我<BR><BR>承认，但是骗人吗？不骗，后面我给出一种ejb复用的思路大家参考。反正组件一点技术都不作，只有业务逻辑想用就要有相应的容器环境，那么容器环境的复用性才是组件复<BR><BR>用的关键。ejb不易复用是因为如果脱离容器，我们就必须给它提供相应的技术context，事务、分布、并发等等一个也不能少，[b]因此容器外复用ejb效率很低[/b]。注意，<BR><BR>[b]是容器外[/b]，组件本来就是跑在容器里的，谁让你非要拿出去用），而容器内呢？因为ejb规范规定ejb容器应该兼容，别说webSphere到bea的移植有多难，其实不难，或<BR><BR>者说难度比把spring组件移植到pico复杂一点，当然你用vendor-specified的特性就没办法了，这不再规范内，你违规就别怨人家。因此，ejb的复用是可以的，而且是规范保<BR><BR>证的，容器外也有办法，也不是很难，我后面说。<BR><BR>再看spring，的确他很灵活，但这正是致命伤，component完全是业务实现，但是容器呢？spring怎么保证容器的环境？没有，只能你自己保证，当你沾沾自喜的说，spring<BR><BR>里的component都是pojo，可以很好复用的时候，可曾想到，这复用的代价是要复用容器。比如有个componentA，在SystemA里需要事务模型A和安全模型A，在SystemB里需要事<BR><BR>务模型B和安全模型B，当你从SystemA里复用componentA的时候，你要怎样？重写事务模型B和安全模型B，然后你可以堂而皇之的说，你复用了组件。的确，你复用了组件，但<BR><BR>是你重写了容器，值吗？更可怕的是，spring容器和组件没有约定，那么怎么保证你的组建不写技术代码？ejb只要Bean-Managed并提供统一的事务模型就好了，spring呢？你<BR><BR>靠什么保证？你自己？这是spring一大硬伤，完全container-managed下缺少特定的component边界控制.你可以说，特殊要求的事务模型ejb还实现不了呢，的确，这是有可能<BR><BR>，但是ejb transaction model不能适用的情况有多少？如果真的不行，只能说ejb的简单复用在这里失效。<BR><BR>对于组件还有一个问题就是部署，这也是ejb为人诟病的地方.的确,ejb的部署够复杂，但在ejb规范里有一个专门的角色来负责部署的，ejb是component architecture，那<BR><BR>么比如有一个人来粘合技术和业务，这个人不该是programmer(我刚才说了，ejb的实现者最好是业务专家，实现业务逻辑)，ejb的部署才是很厉害的人，他需要知道什么业务<BR><BR>需要什么样的技术支持，该怎样得到性能，因此deployer才是ejb architecture里最牛的，我重来不以为写ejb的是高手，但是一直都敬仰ejb的deployer.当然这里有一个调试<BR><BR>困难的问题，这是ejb的硬伤，没办法，这甚至是组件开发的硬伤.<BR>再来看spring，spring宣称他部署简单，我觉得rod johnson在转移视线，想想看，打成一个war和打成一个ear有多大的区别？那么部署的差异在哪？差异在ejb的deploy<BR><BR>description和spring的context.xml的编写上!在用spring开发中要有一个人来写context.xml这个人往往比较了解系统，知道什么组件用什么拦截，那个组件依赖那个，甚至<BR><BR>会是架构师在作这件事情，那么和ejb里对系统有大局观的人来做deploy有多大区别？可能就是Xml的编写吧，我想在工具的支持下就是熟练度的问题，因此我觉得部署上<BR><BR>spring和ejb差不多，spring不用启server，调试放便些。<BR><BR>结论，在component architecture上，spring灵活，ejb统一完整，各胜擅长，spring的灵活以降低复用为代价，但是如果有common的技术实现，的确很好复用，但是<BR><BR>spring+一套common的技术实现也就约等于ejb了吧？<BR><BR>[b]3.语义[/b]<BR><BR>那么spring复用的问题表明了什么呢？其实是缺乏语义的支持，ejb开发可以看作在一个统一的语义环境下来作的，这个语义由ejb规范规定，因此ejb的复用有语义保证，而<BR><BR>spring呢？贫语义，一切都要开发者自己来实现。因此，如果ejb的环境语义可扩展并且可配置（比如去掉分布），那么spring毫无优势，标准的一致的完整的组件架构使ejb<BR><BR>会大有作为，但是现在并没有，才有了spring的火爆.这是一种畸形的胜利，完备语义的输给了贫语义的，问题是什么，强迫消费...谁让ejb非得强迫客户去买用不到的分布式<BR><BR>环境的单？但是统一语义的威力不会因此掩灭，现在有两条路，spring联合os社区，制定lightweight j2ee语义集合，争取成为标准。第二，ejb实现技术语义可配置可扩展。<BR><BR>谁会胜利？不好说，但是似乎ejb的脚步快一些！<BR><BR>[b]附：容器外复用ejb[/b]<BR><BR>其实ejb在容器外完全是可以用的，但是为了最大限度保证能用，bean-managed是推荐（不是cmp，bmp而是cmt,bmt），那么怎么传送一个transaction进去？SessionContext(<BR><BR>好像是这名记不清了，都快2：00了，困呀...就是ejb那个context接口)，一个接口嘛，自己mock一下，给一个transaction进去就好了。怎么装配？spring的setter<BR><BR>injection。如果用spring，那么cmt也可以实现，拦截啦，不过就看能不能实现ejb transaction model了。entity bean，如果是bmp，就用它好了，cmp，继承一个上<BR><BR>hibernate。这些都模拟好了，找一个in memory的jndi，把spring context封进去，这样相当于我们用spring实现了一个lightweight ejb container（其实就是给spring一个<BR><BR>ejb api的皮），轻到什么程度？除了注射什么都没有。<BR>然后client就可以构造jndi，然后lookup了<BR>看到这里一定有人说，你吃饱了撑的，这么费劲容器外复用ejb，为什么不直接用spring，这样也不够pojo，每个组件都有ejb的类的继承，好，我告诉你这么做的好处，首先<BR><BR>，虽然不够pojo，但是足够bean，因此spring来管理ejb是可以的，证明我的观点容器外使用ejb可以(赫赫，不要说偶rpwt...).其次的，当业务发展了，你的系统需要分布了<BR><BR>，把spring去掉，拿出ejb，redeploy，ok了，延展，稳定，分布都有了，这才是复用该有的境界，改一个部署整个环境换掉，去掉lightweight的ejb container，换乘<BR><BR>heavyweight的就是重量级。<BR>当然这么实现很难，在ejb3里会容易些，我敢打赌，spring以后一定是lightweight ejb container的供应商，免不免费，os不os要看rod johnson了，不过我觉得希望不大。<BR><BR>致谢：<BR><BR>首先感谢dlee，在和他的讨论中形成了这篇文章的主题，然后是冰云，他帮我审稿直到2：04，udoo，perhaps都提出了中肯的意见，谢谢他们.<BR><BR>当然也欢迎大家访问我的blog:www.cnblogs.com/raimundo </FONT><img src ="http://www.cnblogs.com/jackyzhong/aggbug/164937.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/05/30/164937.html'>http://www.cnblogs.com/jackyzhong/archive/2005/05/30/164937.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-05-30 14:03 <a href="http://www.blogjava.net/jackyzhong/archive/2005/05/30/5511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]Spring presentation (1)</title><link>http://www.blogjava.net/jackyzhong/archive/2005/05/30/5512.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Mon, 30 May 2005 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/05/30/5512.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5512.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/05/30/5512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5512.html</trackback:ping><description><![CDATA[I will give a presentation on this friday, so just prepare some materials and record them in my blog:<br>
<br>
1. What's the Spring?<br>
<br>
Spring is a java-based framework which have a suite of solutions from
web tie to dao tie. You can use the whole solution or you can just use
one.<br>
<br>
2. The spring picture:<br>
<br>
<img src="images/spring-overview.gif" align="middle"><br>
<br>
<p><span class="emphasis"><em>Core</em></span>包是框架的最基础部分， 并提供依赖注入（Dependency 
Injection）特性来使你可管理Bean容器功能。 这里的基础概念是BeanFactory，它提供Factory模式来消除对程序性单例的需要， 
并允许你从程序逻辑中分离出依赖关系的配置和描述。 </p>

<p>构建于Beans包上<span class="emphasis"><em>Context包</em></span>，提供了一种框架式的Bean访问方式， 
有些象JNDI注册。Context包的特性得自Beans包，并添加了文本消息的发送，通过比如资源串， 
事件传播，资源装载的方式和Context的透明创建，如通过Servlet容器。 </p>

<p><span class="emphasis"><em>DAO包</em></span>提供了JDBC的抽象层，它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 
该包也提供了一种方法实现编程性和声明性事务管理，不仅仅是针对实现特定接口的类， 而且对<span class="emphasis"><em>所有的POJO</em></span>。 </p>

<p><span class="emphasis"><em>ORM包</em></span>为流行的关系－对象映射APIs提供了集成层，包括JDO，Hibernate和iBatis。 
通过ORM包，你可与所有Spring提供的其他特性相结合来使用这些对象/关系映射， 如前边提到的简单声明性事务管理。 </p>

<p>Spring的<span class="emphasis"><em>AOP包</em></span>提供与<span class="emphasis"><em>AOP联盟</em></span>兼容的面向方面编程实现，允许你定义， 
如方法拦截器和切点，来干净地给从逻辑上说应该被分离的功能实现代码解耦。 
使用源码级的元数据功能，你可将各种行为信息合并到你的代码中，有点象.Net的attribute。 </p>

<p>Spring的<span class="emphasis"><em>Web包</em></span>提供了基本的面向Web的综合特性，如Multipart功能， 
使用Servlet监听器的Context的初始化和面向Web的Applicatin Context。 
当与WebWork或Struts一起使用Spring时，这个包使Spring可与其他框架结合。 </p>

<p>Spring的<span class="emphasis"><em>Web 
MVC</em></span>包提供了面向Web应用的Model-View-Controller实现。 
Spring的MVC实现不仅仅是一种实现，它提供了一种domain model代码和web form的清晰分离， 
这使你可使用Spring框架的所有其他特性，如校验.</p>
<br>
<img src ="http://www.cnblogs.com/jackyzhong/aggbug/164750.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/05/30/164750.html'>http://www.cnblogs.com/jackyzhong/archive/2005/05/30/164750.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-05-30 10:00 <a href="http://www.blogjava.net/jackyzhong/archive/2005/05/30/5512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]Train the trainer</title><link>http://www.blogjava.net/jackyzhong/archive/2005/05/25/5513.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Wed, 25 May 2005 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/05/25/5513.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5513.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/05/25/5513.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5513.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5513.html</trackback:ping><description><![CDATA[今天公司做了个培训,主要是如何做一个好的trainer. <br>
<br>
<br>
<img src ="http://www.cnblogs.com/jackyzhong/aggbug/162292.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/05/25/162292.html'>http://www.cnblogs.com/jackyzhong/archive/2005/05/25/162292.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-05-25 17:17 <a href="http://www.blogjava.net/jackyzhong/archive/2005/05/25/5513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]改头换面</title><link>http://www.blogjava.net/jackyzhong/archive/2005/05/24/5514.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Tue, 24 May 2005 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/05/24/5514.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5514.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/05/24/5514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5514.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5514.html</trackback:ping><description><![CDATA[今天换了一个新skin,看上去比较清爽. 以后要多投稿. 也希望来这儿看看的朋友多交流.<img src ="http://www.cnblogs.com/jackyzhong/aggbug/161253.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/05/24/161253.html'>http://www.cnblogs.com/jackyzhong/archive/2005/05/24/161253.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-05-24 09:15 <a href="http://www.blogjava.net/jackyzhong/archive/2005/05/24/5514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]SQL 语法参考手册</title><link>http://www.blogjava.net/jackyzhong/archive/2005/05/18/5515.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Wed, 18 May 2005 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/05/18/5515.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5515.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/05/18/5515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5515.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5515.html</trackback:ping><description><![CDATA[<table class="font12_ems2" border="0" cellpadding="4" cellspacing="1" width="95%">
<tbody><tr><td style="font-size: 14px; font-weight: bold; text-align: center;"> <br>
</td>
              </tr>
              <tr>
                <td align="center"><br>
</td>
              </tr>
              <tr>
                <td><br>
　　一、资料定义ddl（data&nbsp;definition&nbsp;language)&nbsp;<br>
<br>
　　资料定语言是指对资料的格式和形态下定义的语言，他是每个资料库要建立时候时首先要面对的，举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等，都是在开始的时候所必须规划好的。<br>
<br>
　　１、建表格：<br>
<br>　　create&nbsp;table&nbsp;table_name(&nbsp;column1&nbsp;
datatype&nbsp;[not&nbsp;null]&nbsp;[not&nbsp;null&nbsp;primary&nbsp;key],
&nbsp;column2&nbsp;datatype&nbsp;[not&nbsp;null],...）<br>
<br>
　　说明：　<br>
<br>
　　datatype&nbsp;--是资料的格式，详见表。<br>
　　nut&nbsp;null&nbsp;--可不可以允许资料有空的（尚未有资料填入）。<br>
　　primary&nbsp;key&nbsp;--是本表的主键。<br>
<br>
　　２、更改表格　<br>
<br>
　　alter&nbsp;table&nbsp;table_name&nbsp;add&nbsp;column&nbsp;column_name&nbsp;datatype&nbsp;<br>
<br>
　　说明：增加一个栏位（没有删除某个栏位的语法。)<br>
<br>
　　lter&nbsp;table&nbsp;table_name&nbsp;add&nbsp;primary&nbsp;key&nbsp;(column_name)<br>
<br>
　　说明：更改表得的定义把某个栏位设为主键。<br>
　　<br>
　　alter&nbsp;table&nbsp;table_name&nbsp;drop&nbsp;primary&nbsp;key&nbsp;(column_name)<br>
<br>
　　说明：把主键的定义删除。<br>
<br>
　　３、建立索引　<br>
<br>
　　create&nbsp;index&nbsp;index_name&nbsp;on&nbsp;table_name&nbsp;(column_name)<br>
<br>
　　说明：对某个表格的栏位建立索引以增加查询时的速度。<br>
<br>
　　４、删除　<br>
<br>
　　drop&nbsp;table_name<br>
<br>
　　drop&nbsp;index_name<br>
<br>
　　二、资料形态&nbsp;datatypes<br>
<br>
　　smallint<br>
　　16&nbsp;位元的整数。<br>
<br>
　　interger<br>
　　32&nbsp;位元的整数。<br>
<br>
　　decimal(p,s)<br>
　　p&nbsp;精确值和&nbsp;s&nbsp;大小的十进位整数，精确值p是指全部有几个数(digits)大小值，s是指小数後有几位数。如果没有特别指定，则系统会设为&nbsp;p=5;&nbsp;s=0&nbsp;。&nbsp;<br>
<br>
　　float<br>
　　32位元的实数。<br>
<br>
　　double<br>
　　64位元的实数。<br>
<br>
　　char(n)<br>
　　n&nbsp;长度的字串，n不能超过&nbsp;254。<br>
<br>
　　varchar(n)<br>
　　长度不固定且其最大长度为&nbsp;n&nbsp;的字串，n不能超过&nbsp;4000。<br>
<br>
　　graphic(n)<br>
　　和&nbsp;char(n)&nbsp;一样，不过其单位是两个字元&nbsp;double-bytes，&nbsp;n不能超过127。这个形态是为支援两个字元长度的字体，例如中文字。<br>
<br>
　　vargraphic(n)<br>
　　可变长度且其最大长度为&nbsp;n&nbsp;的双字元字串，n不能超过&nbsp;2000。<br>
<br>
　　date<br>
　　包含了&nbsp;年份、月份、日期。<br>
<br>
　　time<br>
　　包含了&nbsp;小时、分钟、秒。<br>
<br>
　　timestamp<br>
　　包含了&nbsp;年、月、日、时、分、秒、千分之一秒。<br>
三、资料操作&nbsp;dml（data&nbsp;manipulation&nbsp;language)<br>
<br>
　　资料定义好之後接下来的就是资料的操作。资料的操作不外乎增加资料（insert)、查询资料（query）、更改资料（update)&nbsp;、删除资料（delete）四种模式，以下分&nbsp;别介绍他们的语法：<br>
<br>
　　１、增加资料：<br>
<br>
　　insert&nbsp;into&nbsp;table_name&nbsp;(column1,column2,...)&nbsp;values&nbsp;(&nbsp;value1,value2,&nbsp;...)<br>
<br>
　　说明：<br>
<br>
　　1.若没有指定column&nbsp;系统则会按表格内的栏位顺序填入资料。<br>
<br>
　　2.栏位的资料形态和所填入的资料必须吻合。<br>
<br>
　　3.table_name&nbsp;也可以是景观&nbsp;view_name。<br>
<br>
　　insert&nbsp;into&nbsp;table_name&nbsp;(column1,column2,...)&nbsp;select&nbsp;columnx,columny,...&nbsp;from&nbsp;another_table<br>
<br>
　　说明：也可以经过一个子查询（subquery）把别的表格的资料填入。<br>
<br>
　　２、查询资料：<br>
<br>
　　基本查询<br>
<br>
　　select&nbsp;column1,columns2,...&nbsp;from&nbsp;table_name<br>
<br>
　　说明：把table_name&nbsp;的特定栏位资料全部列出来<br>
<br>
　　select&nbsp;*&nbsp;from&nbsp;table_name&nbsp;where&nbsp;column1&nbsp;=
&nbsp;xxx&nbsp;[and&nbsp;column2&nbsp;&gt;&nbsp;yyy]&nbsp;[or&nbsp;column3&nbsp;&lt;&gt;&nbsp;zzz]<br>
<br>
　　说明：<br>
<br>
　　1.'*'表示全部的栏位都列出来。<br>
<br>
　　2.where&nbsp;之後是接条件式，把符合条件的资料列出来。<br>
<br>
　　select&nbsp;column1,column2&nbsp;from&nbsp;table_name&nbsp;order&nbsp;by&nbsp;column2&nbsp;[desc]<br>
<br>
　　说明：order&nbsp;by&nbsp;是指定以某个栏位做排序，[desc]是指从大到小排列，若没有指明，则是从小到大排列<br>
<br>
　　组合查询<br>
<br>
　　组合查询是指所查询得资料来源并不只有单一的表格，而是联合一个以上的表格才能够得到结果的。<br>
<br>
　　select&nbsp;*&nbsp;from&nbsp;table1,table2&nbsp;where&nbsp;table1.colum1=table2.column1<br>
<br>
　　说明：<br>
<br>
　　1.查询两个表格中其中&nbsp;column1&nbsp;值相同的资料。<br>
<br>
<br>
　　2.当然两个表格相互比较的栏位，其资料形态必须相同。<br>
<br>
　　3.一个复杂的查询其动用到的表格可能会很多个。<br>
<br>
　　整合性的查询：<br>
<br>
　　select&nbsp;count&nbsp;(*)&nbsp;from&nbsp;table_name&nbsp;where&nbsp;column_name&nbsp;=&nbsp;xxx<br>
<br>
　　说明：<br>
<br>
　　查询符合条件的资料共有几笔。<br>
<br>
　　select&nbsp;sum(column1)&nbsp;from&nbsp;table_name<br>
<br>
　　说明：<br>
<br>
　　1.计算出总和，所选的栏位必须是可数的数字形态。<br>
<br>
　　2.除此以外还有&nbsp;avg()&nbsp;是计算平均、max()、min()计算最大最小值的整合性查询。<br>
<br>
　　select&nbsp;column1,avg(column2)&nbsp;from&nbsp;table_name&nbsp;
group&nbsp;by&nbsp;column1&nbsp;having&nbsp;avg(column2)&nbsp;&gt;&nbsp;xxx<br>
<br>
　　说明：<br>
<br>
　　1.group&nbsp;by:&nbsp;以column1&nbsp;为一组计算&nbsp;column2&nbsp;的平均值必须和&nbsp;avg、sum等整合性查询的关键字一起使用。&nbsp;<br>
<br>
　　2.having&nbsp;:&nbsp;必须和&nbsp;group&nbsp;by&nbsp;一起使用作为整合性的限制。<br>
<br>
　　复合性的查询<br>
<br>
　　select&nbsp;*&nbsp;from&nbsp;table_name1&nbsp;where&nbsp;exists&nbsp;
(&nbsp;select&nbsp;*&nbsp;from&nbsp;table_name2&nbsp;where&nbsp;conditions&nbsp;)<br>
<br>
　　说明：<br>
<br>
　　1.where&nbsp;的&nbsp;conditions&nbsp;可以是另外一个的&nbsp;query。<br>
<br>
　　2.exists&nbsp;在此是指存在与否。<br>
<br>
　　select&nbsp;*&nbsp;from&nbsp;table_name1&nbsp;where&nbsp;column1&nbsp;
in&nbsp;(&nbsp;select&nbsp;column1&nbsp;from&nbsp;table_name2&nbsp;where&nbsp;conditions&nbsp;)<br>
<br>
　　说明：　<br>
<br>
　　1.&nbsp;in&nbsp;後面接的是一个集合，表示column1&nbsp;存在集合里面。<br>
<br>
　　2.&nbsp;select&nbsp;出来的资料形态必须符合&nbsp;column1。&nbsp;<br>
<br>
　　其他查询<br>
<br>
　　select&nbsp;*&nbsp;from&nbsp;table_name1&nbsp;where&nbsp;column1&nbsp;like&nbsp;'x%'&nbsp;<br>
<br>
　　说明：like&nbsp;必须和後面的'x%'&nbsp;相呼应表示以&nbsp;x为开头的字串。<br>
<br>
　　select&nbsp;*&nbsp;from&nbsp;table_name1&nbsp;where&nbsp;column1&nbsp;in&nbsp;('xxx','yyy',..)<br>
<br>
　　说明：in&nbsp;後面接的是一个集合，表示column1&nbsp;存在集合里面。<br>
<br>
　　select&nbsp;*&nbsp;from&nbsp;table_name1&nbsp;where&nbsp;column1&nbsp;between&nbsp;xx&nbsp;and&nbsp;yy<br>
<br>
　　说明：between&nbsp;表示&nbsp;column1&nbsp;的值介於&nbsp;xx&nbsp;和&nbsp;yy&nbsp;之间。&nbsp;<br>
<br>
　　３、更改资料：<br>
<br>
　　update&nbsp;table_name&nbsp;set&nbsp;column1='xxx'&nbsp;where&nbsp;conditoins<br>
<br>
　　说明：<br>
<br>
　　1.更改某个栏位设定其值为'xxx'。<br>
<br>
　　2.conditions&nbsp;是所要符合的条件、若没有&nbsp;where&nbsp;则整个&nbsp;table&nbsp;的那个栏位都会全部被更改。<br>
<br>
　　４、删除资料：<br>
<br>
　　delete&nbsp;from&nbsp;table_name&nbsp;where&nbsp;conditions<br>
<br>
　　说明：删除符合条件的资料。<br>
<br>
　　说明：关于where条件后面如果包含有日期的比较，不同数据库有不同的表达式。具体如下：<br>
<br>
　　(1)如果是access数据库，则为：where&nbsp;mydate&gt;#2000-01-01#&nbsp;<br>
<br>
　　(2)如果是oracle数据库，则为：where&nbsp;mydate&gt;cast('2000-01-01'&nbsp;
as&nbsp;date)&nbsp;或：where&nbsp;mydate&gt;to_date('2000-01-01','yyyy-mm-
dd')<br>
<br>
　　在delphi中写成：<br>
<br>
　　thedate='2000-01-01';<br>
<br>
　　query1.sql.add('select&nbsp;*&nbsp;from&nbsp;abc&nbsp;where&nbsp;
mydate&gt;cast('+''''+thedate+''''+'&nbsp;as&nbsp;date)');&nbsp;<br>
<br>
　　如果比较日期时间型，则为：<br>
<br>
　　where&nbsp;mydatetime&gt;to_date('2000-01-01&nbsp;10:00:01','yyyy-mm-dd&nbsp;hh24:mi:ss')</td></tr></tbody>
</table>
<img src ="http://www.cnblogs.com/jackyzhong/aggbug/158235.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/05/18/158235.html'>http://www.cnblogs.com/jackyzhong/archive/2005/05/18/158235.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-05-18 16:03 <a href="http://www.blogjava.net/jackyzhong/archive/2005/05/18/5515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]J2ME开发环境搭建 之 EclipseMe </title><link>http://www.blogjava.net/jackyzhong/archive/2005/05/17/5516.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Tue, 17 May 2005 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/05/17/5516.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5516.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/05/17/5516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5516.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5516.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; J2ME开发环境搭建 之 EclipseMe &nbsp;&nbsp;第一节&nbsp;&nbsp;&nbsp; 初识Eclipse Eclipse是一个开发源代码，基于java的可扩展开发平台，它是在OSI(Open Software Initiative 开发源代码计划)认可的通用公共许可证(CPL)版下...&nbsp;&nbsp;<a href='http://www.blogjava.net/jackyzhong/archive/2005/05/17/5516.html'>阅读全文</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-05-17 10:52 <a href="http://www.blogjava.net/jackyzhong/archive/2005/05/17/5516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]原生类型的autoboxing和auto-unboxing</title><link>http://www.blogjava.net/jackyzhong/archive/2005/05/13/5517.html</link><dc:creator>赖小猪的家</dc:creator><author>赖小猪的家</author><pubDate>Fri, 13 May 2005 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/jackyzhong/archive/2005/05/13/5517.html</guid><wfw:comment>http://www.blogjava.net/jackyzhong/comments/5517.html</wfw:comment><comments>http://www.blogjava.net/jackyzhong/archive/2005/05/13/5517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackyzhong/comments/commentRss/5517.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackyzhong/services/trackbacks/5517.html</trackback:ping><description><![CDATA[<!--StartFragment -->&#160;<h4><font size="2"><span style="FONT-FAMILY: 宋体"><font size="3"><font style="BACKGROUND-COLOR: rgb(229,229,229)"><span style="FONT-FAMILY: 黑体">原生类型的</span><span lang="EN-US"><font face="Arial">autoboxing</font></span><span style="FONT-FAMILY: 黑体">和</span><span lang="EN-US"><font face="Arial">auto-unboxing</font></span></font></font> 
<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt"><span style="FONT-FAMILY: 宋体">我们知道，在</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">Java</span><span style="FONT-FAMILY: 宋体">中，</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">int,long</span><span style="FONT-FAMILY: 宋体">等原生类型不是一个继承自</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">Object</span><span style="FONT-FAMILY: 宋体">的类，所以相应的，有很多操作我们都不能利用原生类型操作，比如想要把一个整数放入到一个集合中，我们必须首先创建一个</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">Integer</span><span style="FONT-FAMILY: 宋体">对象，然后再将这个对象放入到集合中。当我们从集合中取数的时候，取出来的是一个</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">Integer</span><span style="FONT-FAMILY: 宋体">对象，因此不能直接对它使用加减乘除等运算符，而是必须用</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">Integer.intValue()</span><span style="FONT-FAMILY: 宋体">取到相应的值才可以，这样的过程称之为</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">boxing</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">unboxing</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;"><o:p></o:p></span>
</p>
<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt"><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">J2SE5.0</span><span style="FONT-FAMILY: 宋体">支持</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">autoboxing</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">auto-unboxing</span><span style="FONT-FAMILY: 宋体">，也就是说我们以后不需要再手动地做这些</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">boxing</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">unboxing</span><span style="FONT-FAMILY: 宋体">操作了，</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">java</span><span style="FONT-FAMILY: 宋体">语言会替我们完成。具体可以参照下面的示例：</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;"><o:p></o:p></span>
</p>
<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
   <table class="MsoTableGrid" cellSpacing="0" cellPadding="0" width="504" border="1" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: silver 0% 50%; MARGIN: auto auto auto 59.4pt; BORDER-LEFT: medium none; WIDTH: 378pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">
       <tbody>
           <tr>
              <td vAlign="top" width="504" style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 378pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent">
                  <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="COLOR: blue; FONT-FAMILY: &#39;Courier New&#39;"><font size="2">List&lt;Integer&gt; intList=new ArrayList&lt;Integer&gt;();<o:p></o:p></font></span>
                  </p>
                  <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="COLOR: blue; FONT-FAMILY: &#39;Courier New&#39;"><font size="2">intList.add(2);<o:p></o:p></font></span>
                  </p>
                  <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="COLOR: blue; FONT-FAMILY: &#39;Courier New&#39;"><font size="2">intList.add(new Integer(5));<o:p></o:p></font></span>
                  </p>
                  <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="COLOR: blue; FONT-FAMILY: &#39;Courier New&#39;"><font size="2">int i=3+intList.get(0);//i=5<o:p></o:p></font></span>
                  </p>
                  <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="COLOR: blue; FONT-FAMILY: &#39;Courier New&#39;"><font size="2">int j=3+intList.get(1); //j=8<o:p></o:p></font></span>
                  </p>
              </td>
           </tr>
       </tbody>
   </table>
</p>
<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt"><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;"><o:p>&#160;</o:p></span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt"><span style="FONT-FAMILY: 宋体">从这一段程序中我们可以看到，</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">autoboxing</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US" style="FONT-FAMILY: &#39;Courier New&#39;">auto-unboxing</span><span style="FONT-FAMILY: 宋体">为我们省掉了很多不必要的工作。</span>
</p></span></font></h4><img src ="http://www.cnblogs.com/jackyzhong/aggbug/154807.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/jackyzhong/archive/2005/05/13/154807.html'>http://www.cnblogs.com/jackyzhong/archive/2005/05/13/154807.html</a><img src ="http://www.blogjava.net/jackyzhong/aggbug/5517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackyzhong/" target="_blank">赖小猪的家</a> 2005-05-13 16:19 <a href="http://www.blogjava.net/jackyzhong/archive/2005/05/13/5517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>