??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一区二区三区免费在线观看,中文字幕在线观看亚洲视频,亚洲AV成人影视在线观看http://www.tkk7.com/kukoo/category/1245.htmllook to the master, follow the master, walk with the master, see through the master, become the master.zh-cnTue, 27 Feb 2007 10:36:04 GMTTue, 27 Feb 2007 10:36:04 GMT60Ruby on Rails: 随想一http://www.tkk7.com/kukoo/archive/2007/01/04/91819.htmlkukooBlogkukooBlogThu, 04 Jan 2007 10:57:00 GMThttp://www.tkk7.com/kukoo/archive/2007/01/04/91819.htmlhttp://www.tkk7.com/kukoo/comments/91819.htmlhttp://www.tkk7.com/kukoo/archive/2007/01/04/91819.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/91819.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/91819.html利用假期在家的时_找了一本书看,Manning出版的《Ruby for Rails - Ruby Techniques for Rails Developers》?偶尔在网上googling一下RoRQ找到这么一张有的?

ruby_java_books.jpg

q张囄意思大致也是_目前的图书中Q关于Java, Java EE的书直就是多如牛毛,而关于Ruby和RoR的书只有2本(我现在在看的Q算是第3本吧QO'Reilly也有一本关于RoR的书Q算是第4本)?但是RoRq个新应用框架却正在以狂风暴雨之势席?Web 开发社区,特别是Java和PHP?/p>

汇M下网上的以及自己从书中看到的资料:

  1. 什么是Ruby?

    Matsumoto Yukihiro Q?Matz"Q是Rubyq个~程语言的发明hQ他?993qv便开始着手Ruby的研发工作,1993q??4日Ruby诞生Q?995q?2月Matz推出了Ruby的第一个版本Ruby 0.95。Ruby 是一U动态编E语aQ它在许多方面类g Perl、Python ?SmalltalkQ但是它是自成体pȝQRuby成功的组合了Smalltalk的优雅以及Python的易用性,q有Perl的实用主义。Java ?PHP ~程人员应该可以很轻杄掌握q一语言?/p>

    Ruby 的历史不短,先于?995 q便为公众知晓的 Java ?PHP。所以尽?Ruby 是一个成熟的语言Q却不如其它语言普及。这造成?Ruby ~程语言阵营q不?Java、PHP ?Perl 阵营强大Q这也是上面q张囑ֱC出来的现状Q?/p>

  2. 什么是Rails?

    Rails是一个用来开发以数据库ؓ后台的Web应用的开源框架?David Heinemeier Hanson 发明?Rails 框架?Ruby 诞生以来最受欢q的应用E序QRuby C֌推广能力不济的颓势也得到了扭转。Rails ?Ruby ~程语言扩展为极光用?Web 开发的领域特定语言。它q借用?ActiveRecord 扩展Q将对象关系持久性引入了 Ruby 语言?/p>

    Rails使用了严格的 Model-View-Controller (模式-视图-控制?体系l构Q赢得了自尊且醉心于设计模式的JavaE序员的敬 - q是 J2EE 开发h员对其情有独钟的原因Q?同时 Rails 可以非常方便地构建基pȝ - q是它吸?PHP 开发h员的原因?/p>

    但Rails有它自己的一些薄q地方: 从数据库角度来看QRails 有一些非常明昄~陷。Rails Ҏ据库布局和应用程序需求作了许多假定。比如,Rails 假定所有表都用一个非复合的主键。它不支持复合主键也不支持双步提交(two-phase commitQ,它只能用于单个数据库后端的情c?/p>

  3. RoR的优?

    Ruby on Rails最大的优点是在于单!RoR的核心思想是"更少的编E,更简单的配置Q?

    • 安装和配|非常简单,不象Java需要安装运行环境,安装应用服务器,然后再进行一大堆的配|。Ruby只需要装一个简单的解释环境可以了。RoR避免了繁杂的XML配置文gQ你的应用程序和数据库里已经包含了所有Rails需要的东西?/li>
    • ~码单,很多代码都是可以自动生成Q可以自动生成MVCQ可以自动生成框架、Web服务。甚至你只要写上一行代码就可以实现以前使用Java上百行代码的工作量,少的编E量意味着少的bug?/li>

  4. RoRE_吗,适合企业应用?

    企业应用需要的是稳定和高效?Ruby和PHP一P属于解释性语a?目前使用PHP来开发的Web应用Q适合于企业应用的不少Qblogpȝ和讨论组pȝ也都大量使用PHP?配合Ruby的RoR在效率上应该没有什么问题?至于E_性,目前q没有什么实际的数据可以来讨论?/p>

【相关链接?/p>

Ruby: http://www.ruby-lang.org/en/
Rails: http://www.rubyonrails.org/



kukooBlog 2007-01-04 18:57 发表评论
]]>
Groovy 1.0 正式发布http://www.tkk7.com/kukoo/archive/2007/01/04/91821.htmlkukooBlogkukooBlogThu, 04 Jan 2007 10:57:00 GMThttp://www.tkk7.com/kukoo/archive/2007/01/04/91821.htmlhttp://www.tkk7.com/kukoo/comments/91821.htmlhttp://www.tkk7.com/kukoo/archive/2007/01/04/91821.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/91821.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/91821.htmlGroovy 1.0 正式发布了?正式的发布申明是q么写的:

Groovy is a dynamic language for the JVM that integrates seamlessly with the Java platform. It offers a Java-like syntax, with language features inspired by Smalltalk, Python or Ruby, and lets your reuse all your Java libraries and protect the investment you made in Java skills, tools or application servers.

很早以前曾l关注过GroovyQ还在Ruby和Groovy中犹豫过?目前虽然在看一些Ruby和RoR的书c和资料QGroovyq是不会忽略掉的Q当然还?a target="_blank" class="externalLink" title="Grails">GrailsQ这个以Groovy写成的Web应用框架 (Groovy + Grails & Ruby + Rails)?/p>

【相关链接?/p>

下蝲Groovy: http://dist.codehaus.org/groovy/distributions

About Groovy: http://www.aboutgroovy.com/item/list



kukooBlog 2007-01-04 18:57 发表评论
]]>
<img src="http://static.flickr.com/16/20444369_df4dc5957b_o.gif" border=0 align="top"/> 使用Eclipse中内嵌的Tomcat服务?/title><link>http://www.tkk7.com/kukoo/archive/2006/06/27/55332.html</link><dc:creator>kukooBlog</dc:creator><author>kukooBlog</author><pubDate>Tue, 27 Jun 2006 07:08:00 GMT</pubDate><guid>http://www.tkk7.com/kukoo/archive/2006/06/27/55332.html</guid><wfw:comment>http://www.tkk7.com/kukoo/comments/55332.html</wfw:comment><comments>http://www.tkk7.com/kukoo/archive/2006/06/27/55332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kukoo/comments/commentRss/55332.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kukoo/services/trackbacks/55332.html</trackback:ping><description><![CDATA[ <p>Eclipse带有其内|的Tomcat服务器,用于支持Eclipse的Help服务?通常在打开Help面的时候,Helppȝ会启动内|的Tomcat。我们在开发基于RCP的应用系l时Q也同样可以通过API来启动ƈ且用这个内|的Tomcat服务器(管Eclipse没有提供相应的文档,q且不推荐用这cd能)?/p> <p>Eclipse的org.eclipse.help.internal.appserver包中Q含有一个重要的c:WebappManagerQ几乎所有和Tomcat相关的操作,都和q个WebappManager有关Q其中比较重要的几个Ҏ是:</p> <ol> <li>getHost()Q返回运行Tomcat的主机名或者IP地址</li> <li>getPort()Q返回Tomcat监听的端口号Q这个端口号在每ơTomcat启动Ӟ都不一?/li> <li>start(String webappName, String pluginId, IPath path)Q启动应用程序,其中的pluginId为包含web应用的插件IDQ后面做详细解释Q?/li> </ol> <p>在了解了基本的方法以后,我们可以实验一下:</p> <ol> <li>创徏一个插?plug-in): com.kompakar.webappQ这个插件可以不需要UI的支?/li> <li>插gcom.kompakar.webapp需要依赖以下Eclipse插gQ?/li> <li style="LIST-STYLE-TYPE: none"> <ol> <li>org.eclipse.help.appserver</li> <li>org.eclipse.help.base</li> </ol> </li> <li>在com.kompakar.webapp目录下面Q徏立WEB-INFQWEB-INF/lib和WEB-INF/classes目录?q里的WEB-INF目录l构和普通的web application完全一_用于存放你的JSPQServlet和classes?如果你的web application需要其他库的支持,那么攑֜WEB-INF/lib下面?/li> <li>启动Tomcat: WebappManager.start("myapp", "com.kompakar.webapp", Path.EMPTY); 在启动方法中:</li> <li style="LIST-STYLE-TYPE: none"> <ol> <li>W一个参数myapp是web application的上下文目录Q?/li> <li>W二个参数就是包含了web application的插件IDQ?/li> </ol> </li> <li>得到完整的URL: "http://" + WebappManager.getHost() + ":" + WebappManager.getPort();</li> <li style="LIST-STYLE-TYPE: none"> <ol> <li>q个操作q回的结果可能是Qhttp://127.0.0.1:52235Q最后的端口h随机?/li> </ol> </li> </ol> <p>OKQ如果你启动了你的插Ӟq且在WEB-INF下面有一个简单的index.jsp的话Q打开你的览器,打开: http://127.0.0.1:52235/myappQ那么你可以看C的index.jsp了?如果你的插g同时捆绑了Eclipse的Web Browser插g的话Q你可以在你的插g里打开览器,直接讉K你的web application了?/p> <p>q样做有什么好处吗Q?其中的一个好处是Q你可以把支持web的报表系l(比如BIRT)安装在一个特D的插g中,那么你的桌面RCPpȝ有一个支持web的报表系l了Q你可以通过启动Tomcat来用你的报表?/p> <p>【参考文章?a class="externalLink" target="_blank">Use Embedded Tomcat in Eclipse for a Webapp</a></p> <p class="zoundry_bw_tags"> <!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --> <span id="8m0kikk" class="ztags"><span id="0aekkmu" class="ztagspace">Technorati</span> : <a class="ztag" rel="tag">eclipse</a></span> </p><img src ="http://www.tkk7.com/kukoo/aggbug/55332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kukoo/" target="_blank">kukooBlog</a> 2006-06-27 15:08 <a href="http://www.tkk7.com/kukoo/archive/2006/06/27/55332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title><img src="http://static.flickr.com/16/20444370_974742af75_o.gif" border=0 align="top"/> Top 5 Principles of Enterprise Architecturehttp://www.tkk7.com/kukoo/archive/2005/08/28/11361.htmlkukooBlogkukooBlogSun, 28 Aug 2005 03:07:00 GMThttp://www.tkk7.com/kukoo/archive/2005/08/28/11361.htmlhttp://www.tkk7.com/kukoo/comments/11361.htmlhttp://www.tkk7.com/kukoo/archive/2005/08/28/11361.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/11361.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/11361.html阅读全文

kukooBlog 2005-08-28 11:07 发表评论
]]>
Ted Neward 的读书清?/title><link>http://www.tkk7.com/kukoo/archive/2005/08/23/10773.html</link><dc:creator>kukooBlog</dc:creator><author>kukooBlog</author><pubDate>Tue, 23 Aug 2005 02:50:00 GMT</pubDate><guid>http://www.tkk7.com/kukoo/archive/2005/08/23/10773.html</guid><wfw:comment>http://www.tkk7.com/kukoo/comments/10773.html</wfw:comment><comments>http://www.tkk7.com/kukoo/archive/2005/08/23/10773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kukoo/comments/commentRss/10773.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kukoo/services/trackbacks/10773.html</trackback:ping><description><![CDATA[     摘要: Ted Neward, 畅销?Efective Enterprise Java 作? 在他自己的新blog中给Z一份Recommended Reading List。Ted 说这是一个非常“旧”的M清单了,但是q是可以参考一下的?  <a href='http://www.tkk7.com/kukoo/archive/2005/08/23/10773.html'>阅读全文</a><img src ="http://www.tkk7.com/kukoo/aggbug/10773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kukoo/" target="_blank">kukooBlog</a> 2005-08-23 10:50 <a href="http://www.tkk7.com/kukoo/archive/2005/08/23/10773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title><img src="http://photos17.flickr.com/20444371_203e5a75b6_m.jpg" border=0 align="top"/> Groovy on JavaOne 2005http://www.tkk7.com/kukoo/archive/2005/06/30/6961.htmlkukooBlogkukooBlogThu, 30 Jun 2005 12:22:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/30/6961.htmlhttp://www.tkk7.com/kukoo/comments/6961.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/30/6961.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/6961.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/6961.html阅读全文]  阅读全文

kukooBlog 2005-06-30 20:22 发表评论
]]>
<img src="http://photos17.flickr.com/20444371_203e5a75b6_m.jpg" border=0 align="top"/> JavaOne Day 0: NetBeans Dayhttp://www.tkk7.com/kukoo/archive/2005/06/27/6780.htmlkukooBlogkukooBlogMon, 27 Jun 2005 09:34:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/27/6780.htmlhttp://www.tkk7.com/kukoo/comments/6780.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/27/6780.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/6780.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/6780.html详细阅读]  阅读全文

kukooBlog 2005-06-27 17:34 发表评论
]]>
<img src="http://photos16.flickr.com/20444370_974742af75_m.jpg" border=0 align=top/> Patterns and Practice [Erich Gamma] http://www.tkk7.com/kukoo/archive/2005/06/26/6724.htmlkukooBlogkukooBlogSun, 26 Jun 2005 09:30:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/26/6724.htmlhttp://www.tkk7.com/kukoo/comments/6724.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/26/6724.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/6724.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/6724.html阅读全文

kukooBlog 2005-06-26 17:30 发表评论
]]>
<IMG alt="ProgrammingIcon" src="http://photos17.flickr.com/20444371_203e5a75b6_m.jpg" border=0 align=top> 2005 June WebSphere Dev Tech Journalhttp://www.tkk7.com/kukoo/archive/2005/06/22/6573.htmlkukooBlogkukooBlogWed, 22 Jun 2005 13:53:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/22/6573.htmlhttp://www.tkk7.com/kukoo/comments/6573.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/22/6573.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/6573.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/6573.html阅读全文

kukooBlog 2005-06-22 21:53 发表评论
]]>
<IMG alt="ProgrammingIcon" src="http://photos17.flickr.com/20444371_203e5a75b6_m.jpg" border=0 align=top> [收藏] “那本”J2EE?/title><link>http://www.tkk7.com/kukoo/archive/2005/06/22/6572.html</link><dc:creator>kukooBlog</dc:creator><author>kukooBlog</author><pubDate>Wed, 22 Jun 2005 13:48:00 GMT</pubDate><guid>http://www.tkk7.com/kukoo/archive/2005/06/22/6572.html</guid><wfw:comment>http://www.tkk7.com/kukoo/comments/6572.html</wfw:comment><comments>http://www.tkk7.com/kukoo/archive/2005/06/22/6572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kukoo/comments/commentRss/6572.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kukoo/services/trackbacks/6572.html</trackback:ping><description><![CDATA[<div class="0wiwq8e" id=main> <div id="u0o00e0" class=post> <div id="qu0gycu" class=postText> <DIV align=left> <P>目前正在重读《Core J2EE Patterns》这本书。经历了几年的编E生zdpȝ设计Q重读这本书的第二版Q感触良多?恰好看到<A >gigix</A>在blog中发表的<A >“那本”J2EE书——《J2EE核心模式》(W二版)译者序</A> ?虽然我很看中文的技术书c,但是q篇译者序却值得收藏Q收录在自己的blog中。借此Q感谢译者翻译这本书Qؓq大的中国程序员带来了一本好书?/P></DIV> </DIV> <DIV align=center><SPAN style="FONT-SIZE: 20pt; LINE-HEIGHT: 32pt"><B><FONT color=#ff0000>“那本”J2EE?/FONT></B></SPAN></DIV> <div id="uu80000" class=font1 align=center> </DIV> <div id="i06umkq" class=font1 align=center>刘天北 熊节<BR> </DIV> <DIV align=center><FONT color=#ff3300>Q原文刊M《中华读书报?005q??3日号Q?/FONT><BR>  <HR width=590 color=#638db8 SIZE=1> </DIV><!--enpcontent--> <P><IMG alt="" hspace=0 src="http://images.amazon.com/images/P/0131422464.01._PIdp-schmoo2,TopRight,7,-26_SCMZZZZZZZ_.jpg" align=right border=0>  dq本《J2EE核心模式》,你首先就会注意到软gҎ论领域的两位大师GradyBooch和MartinFowler撰写的序a。在q样两䆾序言后面再附上一“译序”,q个念头本np够荒谬和僭越Q不M在莎之后再写一出关于丹麦王子复仇的剧本。大师们的判断是中肯而毫不含p的Q“没有这本书Q就别开发EJB。”他们的担保以认本书在其论域中舍我其谁的C。它是“那本”J2EE书(THEJ2EEbookQ?</P> <P>  当然Q对于广大中国开发者而言Q我们早已l在“没有这本书”的条g下开发了大量J2EE、乃至EJB应用pȝ。那些充满了波折和磨隄开发历E似乎让不少E序员生了某种自信Q在掌握了若qAPIl节、若q应用服务器配置诀H、若q框架类库用法之后,他们或是公开、或是暗自地把自己当成了当之无愧的Java企业开发专家———不Q这些话没有M揶揄的意思:我们惌的其实是Q本书恰恰是Z上这一cd发者写的。对于他们想成ؓ “Java企业开发专家”的隐秘Ʋ望Q这本《J2EE核心模式》就是最大限度的补救和成全。如果说Q此前的各种教程都是在介lJ2EE开发中的“内容”要素———也是Q教l我们“做什么”———的话,本书x的则是这里的“Ş式”要素,是“怎样做”才能开发出高效的、优雅的J2EEpȝ。读者从中学到的Q将不仅仅是“J2EE技术”,而是“如何用J2EE技术进行设计”?</P> <P>  换句话说Q如果你以前没有qJ2EE实践Q但明早应聘一个需要?qJ2EE开发经验”的职位Q本书中不包含你今晚要彻夜吞咽的那一cȝ识;相反Q如果你Q这位隐形的“Java企业开发专家”,q求的职位是“资深Java应用pȝ架构师”,如果你预料到未来的上司明天将问v“怎样实现讉K控制”、“何旉用细_度的接口设计”等“高阶”问题,那么恭喜你,今晚———乃至今后———你选对了补评ȝ?</P> <P>  作ؓ本书W一版的忠实读者,我们Q半是欣喜、半是惊Ӟ发现眼前的这部第二版构成了全新的阅读l验。作者们按照最新版J2EE技术规范(其是EJB2.1Q全面修订了技术细节;Ҏ模式C֌的研I交,作者们补入了若q模式;即是一些不涉及技术更新的部分Q论q方式、示例也完全不同于第一版;原有的PSA目Q第一版“尾声”一章)融入了其余各章的“示例代码”部分;而新增的整整一章讨论“微架构”的֣、对WebService {技术的x、对各种的持久化ҎQ定制持久化、EJB、JDO{)的深入讨论,都体现出作者们Ҏ书新版的持箋投入?</P> <P>  受益于本书有q_在此我们也想不揣冒昧Cؓ本书的中国读者们一条高效的阅读路径Q与W一章相比,W五章“J2EE模式概览”是读者更合理的v步点。请其x其中对“分层”、“术语”和模式/{略区别的讨论,q些都是贯穿全书的重要概念!其次Q应该通读W二章“表现层设计考虑和不佛_践”和W三章“业务层设计考虑和不佛_践”:即你不打算使用M模式Q甚臻I即你根本不兛_J2EE开发,只要你的工作与分布式企业应用pȝ有关Q这两章考察的问题都是你q早会遇到的。至于每个具体模式本w,我们则推荐读者留意其中详的“策略”部分和那些散布其中的“设计手记”。前者讨Z对同一个模式的多种实现ҎQ后者则H出介绍了特定开发领域的一些核心概念和考虑?</P> <P>  一部英文技术论著在汉语中的旅行Q永q是一D难以捉摸的行程。对于本书的汉语译者,“技术难度”ƈ非挑战:全书讨论的正是译者们最为熟知的一个领域,所以我们能够负责Q地说Q在q个中译本里Q没有Q何技术细节会因ؓ译者的无知或生疏而发生变形或曲解。这ơ翻译的原则和前提是对原文的d领会?</P> <P>  事实上,译者的工作中遇到的困难主要发生在“语汇”层面。简单地_J2EE专著的译者总要面对“翻Q还是不Z的两难处境Q对象、函数的名称QUML图中的各U元素,q些内容p语表C早是U定俗成Q即使是pE度略低的开发者大概也都能LQ所以,在读者能够理解的部分可能保留原文似乎是一U合理的做法———毕竟开发工作最l是与代码有养I而代码则肯定是要Z以“英文”的。但在另一斚wQ翻译的责Q在于让不谙原文的读者也能通达作品Q如果译文中大量D落Q不包括CZ代码Q都仍保留ؓ英文或“类英文”,那么读者也无法直观地获得原文包含的信息。反复权衡之后,在这个译本中译者的解决方式q是折衷的。工作中我们采取了以下原则: </P> <P>  首先Q术语尽可能采用通用文献定译Q不自创译法。对于各个模式的名称、模式文档模版各部分名称、重构手法名Uͼ我们参考了李英军等译《设计模式》、熊节等译《重构》等译作Q以及IBMDe鄄veloperWorks中文|站的部分资源?</P> <P>  其次Q本领域的一些常见术语,如果没有定译Q本书也不自我作古、强译ؓ中文Q而是保留英文原字。这一cȝ术语包括Qapplet?servlet、bean、entitybean、sessionbean、cookie、WebService{。根据我们的观察Q在日常工作中,国内的开发者已l习惯按原文使用以上术语。在一些情况下Q我们也以注释Ş式澄清了q些术语的用法?</P> <P>  W三Q模式中的对象名Uͼ往往按照代码风格命名Q比如“BusinessObject”、“CustomerTO”等。如果对此完全不加翻译,那么很多充斥q类表达的段落就很难理解。我们的原则是,在每个自然段W一ơ出现某个这c表达方式时Q用括号注明Q比?“BusinessObjectQ业务对象)”、“CustomerTOQ客户传输对象)”等。希望这个做法能够维持易懂和z之间的q?</P> <P>  W四Q书中示例代码占有相当大的比重,而代码注释则是理解这些代码的关键。我们把所有代码注释译Z文。而对在视图中昄特定l果的代码(比如调试信息{)Q我们没有改Z文,只是在必要时对输Z息的涵义加以注解。如果读者更信赖代码原貌Q还可以从本书官方网站http //www.corej2eepatterns.com/下蝲?</P> <P>  W五Q原书不包含注释。目前的所有注解都是译注。书中申义未畅处Q译文中以方括号?”加以解释、补I略去生ӆ。这与上面两条原则一P都类g在原作讲话时的插嘴———但译d本nQ似乎本已l是一U“插嘴”了。在博学的读者看来,有时候译者或许还不如保持体面的沉默———但我们只能力图做到插嘴而不多嘴?</P> <P>  原书l多人、多版修订完成,隑օ存在打字、排印错误。译本根据本书官方网站的最新勘误表订正Qƈl合参照本书W一版,另外修正了数十处错误?</P> <P>  Q本文ؓ卛_?005q?月出版的《J2EE核心模式》中文版的译序,本报刊登时有删节Q?/P></DIV></DIV><img src ="http://www.tkk7.com/kukoo/aggbug/6572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kukoo/" target="_blank">kukooBlog</a> 2005-06-22 21:48 <a href="http://www.tkk7.com/kukoo/archive/2005/06/22/6572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title><IMG alt=PatternIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/o_PatternsIcon.gif" border=0 align=top> ?Design Principles from Design Patterns 心得http://www.tkk7.com/kukoo/archive/2005/06/11/5904.htmlkukooBlogkukooBlogSat, 11 Jun 2005 03:53:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/11/5904.htmlhttp://www.tkk7.com/kukoo/comments/5904.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/11/5904.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5904.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5904.htmlErich在他和Bill的访谈第三部分中谈到Q他希望支持Eclipse的整个社,可以l持10?0q的生命期(?We always keep in mind as we design Eclipse that it has to last ten or twenty years. ?. I really mean that Eclipse should still be able to support an active community in ten or twenty years. ”)Q甚x长(虽让他不敢奢望EclipseC会像埃及的金字塔一样保存上千年Q。这U想法,现在实已经非常普遍了,pSun的首席执行官Jonathan Schwartz也认为,“you can compete against a product, but it's close to impossible to compete against a community. Q和一个品竞争容易,但是和一个社竞争几乎接q不可能Q”(Ecology, Communities and Platform AdoptionQ。所以,Sun也在不断的培养Solaris和Netbean的开发和使用者的C?

Eclipse需要保持竞争力Q关键也在于开发和使用者的q个C֛?Eclipse的plug-in架构Q已l保证了q个C会很快的成长Q因Z有大量的开发者去写plug-inQ,大公司(如IBMQBEAQBorlandQ的加入和支持,也扩大了Eclipse的知名度Q得更多的开发者加入进厅R?但是如何更好的融合这个社,如何保证Eclipse的核心基架构不受外部的困惑(变得更加庞大Q或者臃肿)但又会不断创斎ͼ如何协调好Eclipse和其他Eclipse.org下面的顶U项目(如BIRTQWTPQAspectJ{)的整合关p,q些Q确实也值得思考?

对interface~程Q这个似乎是个老生常谈的问题了Q但是却从来没有思考过Q这U编E方式会影响到这个开发团队的协同工作Q特别是一个超q?0人的开发团队,而对一个分布在不同地方的开发团队(比如目外包以后Q不同的开发小l位于不同的城市Q甚臛_ӞQ这U编E方式带来的影响更大?

Z么会q样呢? 在一个只?-4人的开发团队里面,M的改动,可以快速的通知其他的hQ而且Q现在IDE中的重构工具会解军_部分的工作?但是Q当一个开发团队变大的时候,通常׃分成组Q不同的组对不同的部分负责?在这U情况下Q你在自q模块中发布了APIQ你必ȝ保这个API是稳定的。“Once you have published an API then it is your responsibility to keep them stable. Otherwise you will break the other components and nobody is able to make progress. Having stable APIs is a key to making progress in a project of this size.?所以这是一个是否把API发布以及发布了以后如何维护的问题Q“So it's the difference, as Martin Fowler would say, between public and published. Something can be public, but that doesn't mean you have published it. ?即定义了APIQ公开发布(publish)和这个API是公q(public)是有区别的:API公开发布以后Q就需要非常的心Q因ZQ何的API改动都可能会破坏其他在用这个API的代码?


Email this store to a friend
(send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story

Yourit Q?A rel=tag align="top">Design Pattern Technorati cosmos refresh.gif
Mycat Programming



kukooBlog 2005-06-11 11:53 发表评论
]]>
<IMG alt=PatternIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/o_PatternsIcon.gif" border=0 align=top> Design Principles from Design Patternshttp://www.tkk7.com/kukoo/archive/2005/06/07/5704.htmlkukooBlogkukooBlogTue, 07 Jun 2005 11:37:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/07/5704.htmlhttp://www.tkk7.com/kukoo/comments/5704.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/07/5704.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5704.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5704.html如何思考和使用Design Pattern?A href="http://www.tkk7.com/kukoo/archive/2005/05/31/5369.html">灉|性以及可重用?/U>?

陆l更C些心得?

W三部分的原?/U>?



Yourit Q?A rel=tag align="top">Design Pattern Technorati cosmos
Mycat Programming



kukooBlog 2005-06-07 19:37 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> [转译]Pay less for Stringshttp://www.tkk7.com/kukoo/archive/2005/06/03/5496.htmlkukooBlogkukooBlogFri, 03 Jun 2005 01:04:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/03/5496.htmlhttp://www.tkk7.com/kukoo/comments/5496.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/03/5496.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5496.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5496.htmlq是在eclipsepowered上看到的?Ed提到?A >eclipse-dev committers mailing list中,Jerome Lanneluc 指出的一个String#substring和String(String)的问题。按照Jerome的说法,使用String#substring()的时候,原有的长字符串所占据的空间仍然被占据Qƈ没有释放Q用String(String)可以解决q个问题。Jerome的原文:

I just noticed that String#substring(? shares the underlying char array. So if you have a big string, take a substring of it, throw away the big string, you will still hold on the big char array. A simple way to solve this is to make a copy of the substring using the String(String) constructor.

I saved 550KB in JDT Core by changing the following code:

String simpleName =
fullyQualifiedName.substring(fullQualifiedName.lastIndexOf(
'.'));

to

String simpleName = new
String(fullyQualifiedName.substring(fullQualifiedName.lastIndexOf(
'.'))); 

Eclipse3.1发布以后Q用者发玎ͼ3.1占据了大量的HeapQ大U?00-300MQ?/U>。Eclipse的开发小l正在不断地解决q个问题Q而String#substing的改q,在Eclipse 3.1M6中发?4???

q个提示Q其实也可以q用在我们自q目之中

[Note: This blog was migrated from my old CSDN blog.]

Z么重发这个blog呢?因ؓ昨天看到Eclipse.org|站上关?A >Eclipse Performance的一个文档。这份文档主要是提示Q在开发基于Eclipse的应用时Q不是EclipseE序本nQ还是Plug-inQ,在性能问题上需要注意的一些地斏V其中,W一条就是如何用substring()的问题。Eclipse 3.1M7以及RC1Q都已经q行了这斚w的调_所以现在的EclipseQ对Heap的占用已l大q减,从而在性能上也有所提高?




Eclipse.org
eclipsepowered.org

Email this store to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story

Yourit Q?A rel=tag align="top">Java
Mycat EclipseQ?A href="http://www.tkk7.com/kukoo/category/1245.html">Programming



kukooBlog 2005-06-03 09:04 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> Ruby IDE in Eclipsehttp://www.tkk7.com/kukoo/archive/2005/06/02/5465.htmlkukooBlogkukooBlogThu, 02 Jun 2005 05:47:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/02/5465.htmlhttp://www.tkk7.com/kukoo/comments/5465.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/02/5465.html#Feedback3http://www.tkk7.com/kukoo/comments/commentRss/5465.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5465.htmlLuckily, today I found another Ruby IDE which is based on Eclipse, which name is RDE (Ruby Development Environment).




RDE
About Ruby

Yourit Q?A rel=tag align="top">Ruby
Mycat Programming



kukooBlog 2005-06-02 13:47 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> The Business Layerhttp://www.tkk7.com/kukoo/archive/2005/06/02/5445.htmlkukooBlogkukooBlogThu, 02 Jun 2005 01:19:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/02/5445.htmlhttp://www.tkk7.com/kukoo/comments/5445.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/02/5445.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5445.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5445.htmlThe middle component of a typical web application is the business or service layer. This service layer is often the most ignored layer from a coding perspective. It is not uncommon to find this type of code scattered around in the UI layer or in the persistence layer. This is not the correct place because it leads to tightly coupled applications and code that can be hard to maintain over time. Fortunately, several frameworks exist that address these issues. Two of the most popular frameworks in this space are Spring and PicoContainer. ........

 

..... The business layer should be responsible for the following:

 

  • Handling application business logic and business validation
  • Managing transactions
  • Allowing interfaces for interaction with other layers
  • Managing dependencies between business level objects
  • Adding flexibility between the presentation and the persistence layer so they do not directly communicate with each other
  • Exposing a context to the business layer from the presentation layer to obtain business services
    Managing implementations from the business logic to the persistence layer

 

Excerpt from "Wiring Your Web Application with Open Source Java" by Mark Eagle

 

[NoteQ?/SPAN>This blog was migrated from my very old blog which was in the blogspirit.]


Yourit Q?A rel=tag align="top">Open Source
Mycat Programming



kukooBlog 2005-06-02 09:19 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> The Presentation Layerhttp://www.tkk7.com/kukoo/archive/2005/06/02/5444.htmlkukooBlogkukooBlogThu, 02 Jun 2005 01:17:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/02/5444.htmlhttp://www.tkk7.com/kukoo/comments/5444.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/02/5444.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5444.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5444.htmlAt one end of a typical web application is the presentation layer. Many Java developers understand what Struts provides. However, too often, coupled code such as business logic is placed into an org.apache.struts.Action. So, let's agree on what a framework like Struts should provide. Here is what Struts is responsible for:

 

  • Managing requests and responses for a user.
  • Providing a controller to delegate calls to business logic and other upstream processes.
  • Handling exceptions from other tiers that throw exceptions to a Struts Action.
  • Assembling a model that can be presented in a view.
  • Performing UI validation.

 

Here are some items that are often coded using Struts but should not be associated with the presentation layer:

 

  • Direct communication with the database, such as JDBC calls.
  • Business logic and validation related to your application.
  • Transaction management.
  • Introducing this type of code in the presentation layer leads to type coupling and cumbersome maintenance.

 

Excerpt from "Wiring Your Web Application with Open Source Java" by Mark Eagle

 

[NoteQ?/SPAN>This blog was migrated from my very old blog which was in the blogspirit.]


Yourit Q?A rel=tag align="top">Open Source
Mycat Programming



kukooBlog 2005-06-02 09:17 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> The Persistence Layerhttp://www.tkk7.com/kukoo/archive/2005/06/02/5443.htmlkukooBlogkukooBlogThu, 02 Jun 2005 01:14:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/02/5443.htmlhttp://www.tkk7.com/kukoo/comments/5443.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/02/5443.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5443.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5443.html.... At the other end of a typical web application is the persistence layer. .... There are several open source object-to-relational mapping (ORM) frameworks that solve much of this problem. In particular, the Hibernate framework allows object-to-relational persistence and query service for Java. Hibernate has a medium learning curve for Java developers who are already familiar with SQL and the JDBC API. Hibernate persistent objects are based on plain-old Java objects and Java collections. ..... The following list contains the type of code that you would write inside a persistence framework:

 

  • Querying relational information into objects. Hibernate does this through an OO query language called HQL, or by using an expressive criteria API. HQL is very similar to SQL except you use objects instead of tables and fields instead of columns. There are some new specific HQL language elements to learn; however, they are easy to understand and well documented. HQL is a natural language to use for querying objects that require a small learning curve.
  • Saving, updating, and deleting information stored in a database.
  • Advanced object-to-relational mapping frameworks like Hibernate have support for most major SQL databases, and they support parent/child relationships, transactions, inheritance, and polymorphism.

 

Here are some items that should be avoided in the persistence layer:

 

  • Business logic should be in a higher layer of your application. Only data access operations should be permitted.
  • You should not have persistence logic coupled with your presentation logic. Avoid logic in presentation components such as JSPs or servlet-based classes that communicate with data access directly.

 

By isolating persistence logic into its own layer, the application becomes flexible to change without affecting code in other layers. For example, Hibernate could be replaced with another persistence framework or API without modification to the code in any other layer.

 

Excerpt from "Wiring Your Web Application with Open Source Java" by Mark Eagle

 

[NoteQ?/SPAN>This blog was migrated from my very old blog which was in the blogspirit.]


Yourit ,
Mycat Programming



kukooBlog 2005-06-02 09:14 发表评论
]]>
<IMG alt=AllIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/o_AllIcon.gif" border=0 align=top> Computing Thoughts - Bruce Eckel ?Webloghttp://www.tkk7.com/kukoo/archive/2005/06/01/5416.htmlkukooBlogkukooBlogWed, 01 Jun 2005 07:20:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/01/5416.htmlhttp://www.tkk7.com/kukoo/comments/5416.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/01/5416.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5416.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5416.htmlBruce Eckel QThink in Java ?Think in C++的作者,被Eric RaymondUCؓ未公开发表的书在网上发表的“第二h”)他的WeblogUd了Artima的blogpȝ中?

Bruce原来的blog: On the Thought是我常看的一个blog之一Q原因不仅仅是因为Bruce是Think in Java的作者,他也在blog中发表了相当有意思的帖子?

而Aitima的blogpȝ也挺有意思的Q你发表评论的时候,像是在一个论坛里面(那种很像BBS的论坛)。我没有扑ֈ如何trackeback Bruce的weblogQ但是这U发表评论的作法Q确实新颖。按照Bruce的介l,在发表评论的时候,也不是Q何东襉K可以发表的(要不变成了“blog spam”)Q因为Aritima Blog建立了一U机Ӟ“keep the discussions civilized ”,而且Artima更注重开发者。这两点Q是Bruceq移他的blog的原因?

如果你也xBruce EckelQ去他新?A >Webblog吧?




Bruce Eckel的homepage
Bruce Eckel的Weblog Feed

Yourit Q?/FONT>
Mycat Blog/RSSQ?/FONT>Programming



kukooBlog 2005-06-01 15:20 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> Struts 5 岁了!http://www.tkk7.com/kukoo/archive/2005/06/01/5405.htmlkukooBlogkukooBlogWed, 01 Jun 2005 05:18:00 GMThttp://www.tkk7.com/kukoo/archive/2005/06/01/5405.htmlhttp://www.tkk7.com/kukoo/comments/5405.htmlhttp://www.tkk7.com/kukoo/archive/2005/06/01/5405.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5405.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5405.htmlCraig R. McClanahan _Struts的第一个版本,是在5q前的那个纪忉|QMemorial Day Q美国的公共假日Q的周末Q大U是2000q?月底的时候)Q在他的一ơ旅行中Q在他笔记本电脑中写的( "the first version of the actual code (for Struts) was written (on) my laptop (during) a Memorial Day weekend vacation trip (end of May, 2000)" Q摘?http://struts.apache.org/volunteers.html )

我第一接触StrutsQ大U在2001q的q中。那时候,我刚好结束了一个项目(我的W一个J2EE目Q,基本上是以Sun的PetStore的设计思想开发的Q其实,PetStore已经含有MVC 2的思想了)。我的一个朋友推荐我看看Struts。我一下子pStruts单,灉|而又高效的设计思\吸引了,特别是看到ActionForm可以“自动的”得到页面的输入Q而不需要自己写大量的request.getAttribute()的时候,几乎喜出望外了。当Ӟq没有够多的Struts的资料,市面上可以买到的Q也只有O'Reilley出版的唯一的一本关于Struts的书c。但是我q是毫不犹U地在W二个项目中使用了Struts。到如今Q我参与的所有的目Q都是基于Struts的?

5岁的p孩儿Q会赎ͼ会说话,刚刚q幼儿园。?岁的StrutsQ现在是Java世界里,开发Web应用E序的默认框架标准。在书店里,你可以找到大量的关于Struts的书QStruts的资料也是浩如烟说它“如日中天”可能也不ؓq?

然而,Struts也有它不的地方Q比如重用ActionForm和Action比较ȝQ,而同时新的技术又在不断涌玎ͼ5q_或者说3q_以后Q会是什么样子呢Q下一代的Web应用框架Q会是JSF?QJSF的作者就是Craig R. McClanahanQ或者,真的如Craig说的QJSF应该和Struts协同工作Q而不是替换掉Struts?

看看TheServerside上面大家的评?/U>吧?


Struts on Apache
Comments on TheServerside
5 Year Anniversary of the Birth of Struts
Sean's stack trace on Struts 5 Years .


Yourit Q?/FONT> Technorati cosmos
Mycat EclipseQ?Programming



kukooBlog 2005-06-01 13:18 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> 灉|性和可重?[Eric Gamma]http://www.tkk7.com/kukoo/archive/2005/05/31/5369.htmlkukooBlogkukooBlogTue, 31 May 2005 06:20:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/31/5369.htmlhttp://www.tkk7.com/kukoo/comments/5369.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/31/5369.html#Feedback1http://www.tkk7.com/kukoo/comments/commentRss/5369.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5369.html如何思考Design Pattern?中,转蝲了Eric Gamma对于Design Pattern 的论qͼq是Artima Developer的ȝ Bill Venners对Erich Gamma的采访中?A >W一部分Q。而第二部分中QBill ?Eric 则讨Z重用性的重要?Qimportance of reusabilityQ?

      重用的最高境界是什么?我们创徏一个非帔R层的Q面向具体应用的框架Q然后只要做单的客户化,q且重用q个框架中现有的设计。(“We thought the way to create software was to build high-level, domain-specific frameworks, and then you just customize them and reuse all the design that is codified into them. That was the reuse nirvana.”)但是Q连Eric都意识到Q这太理惛_了,因ؓ ?I have learned that it's hard to create highly reusable frameworks.?

      在谈到可重用的framework的时候,Eric提到?A href="http://www.tkk7.com/kukoo/admin/www.eclipse.org">Eclipse:

    “A good example of how I like to see reuse at work is Eclipse. It's built of components we call plug-ins. A plug-in bundles your code and there is a separate manifest where you define which other plug-ins you extend and which points of extension your plug-in offers. Plug-ins provide reusable code following explicit conventions to separate API from internal code. The Eclipse component model is simple and consistent too. It has this kernel characteristic. Eclipse has a small kernel, and everything is done the same way via extension points. The combination of a component model and the focus on APIs is one of the key ingredients of Eclipse. Controlled extensibility is another important one. QEclipse是构构徏在我们称之ؓplug-in的组件上面的。一个plug-in含有你的代码Q而且详细定义了你从哪些其他的plug-in扩展而来Q以及你的plug-in提供了哪些扩展点l别Z用。Plug-in提供了可重用的代码,而且遵@API和内部的代码分离开。同ӞEclipse的组件模式简单而且一致。Eclipse只有一个很的核心Q所有其他的都市通过扩展点这U同L方式来做的。Eclipse中的一个重要组成部分就是组件模型和面向API的方式的l合。另一个重要点则是受到控制的扩展性。)?/SPAN>


      那么Q什么又是Controlled extensibility呢?Z么要Ҏ展性进行控制呢Q?

    “You can go and expose everything, and people can change anything. The original Smalltalks had some of this flavor. The problems start when the next version comes along. If you have exposed everything, you cannot change anything or you break all your clients. ?nbsp;Also when you study the Eclipse API you will find that we go further than just specifying which classes are published API. The Eclipse API also specifies whether a class is intended to be subclassed. Q你可以把一切都公布出来QSmallTalk是q样做的。但是,当下一个版本出来的时候,可能׃到问题。如果你公布了一切,那么你就不能做改动了Q活着你可能会破坏你的客户端用的东西?在Eclipse里面Q我们不仅仅定义了哪些类是公开的APIQ我们处理得更深层次Q我们甚臛_义了哪些API是可以被扩展的,哪些不可以。?nbsp;


      Eric对于重用Q定义了三个U别Q最低一U,重用c(classesQ;最高一U,框架QframeworkQ;而中间一U,是设计模式QDesign PatternQ(“This is where I see patterns. Design patterns are both smaller and more abstract than frameworks. They're really a description about how a couple of classes can relate to each other and interact with each other. The level of reuse increases when you move from classes to patterns and finally frameworks. ?

      Eric提到了一个有的现象。通常Q我们拿C个需求,会先做设计,做设计的时候,我们会用设计模式(Design PatternQ。但是,使用XP QeXtreme ProgrammingQ方式的Zq样做,他们先写试Q“They write a test”)

      那么Q设计一个framework的时候,要注意什么呢Q要避免frameworkitis. Q?Frameworks abstract and provide higher level default functionality. To do so the framework needs to be in control. This loss of control can lead to what is sometimes called frameworkitis. ”)

     Frameworkitis是_一个framework惌做的东西太多Q或者它q不是按照你设想的做的而你又不能去改动它。(“Frameworkitis is the disease that a framework wants to do too much for you or it does it in a way that you don't want but you can't change it.”)

      而且Q一个framework要做的比较小Q因为,如果framework太大了,那么它可能就会做太多Q可能会frameworkitisQ,而且Q不Ҏ学习Q学习曲U太长,也不Ҏl护?

      Eria的论q真是非常精彩,而且也解释了Eclipse的一些内部设计。一定要阅读全文


[Update] 感谢lxwde的中文翻译。我的中文翻译可能不完全准确。中文翻译,请参考Related Links中给出的lxwde的中文翻译链接?BR>



Artima developer
访谈的第一部分
如何思考Design Pattern?
CSDN上的中文译

Email this store to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story

Yourit Q?/FONT>Q?/FONT> Technorati cosmos
Mycat Programming, Eclipse



kukooBlog 2005-05-31 14:20 发表评论
]]>
<IMG alt=ProgrammingIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> 严格的敏h法定义?http://www.tkk7.com/kukoo/archive/2005/05/31/5356.htmlkukooBlogkukooBlogTue, 31 May 2005 03:04:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/31/5356.htmlhttp://www.tkk7.com/kukoo/comments/5356.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/31/5356.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/5356.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5356.htmlMartin Fowler在他最新的blikiQRigorousAgile 中提刎ͼ

“The complainer may talk about how this means that you can't tell if a particular team is using an agile method or not. They may also say that this makes it hard to teach people how to do agile methods - what's the curriculum?”(q些抱怨者指Z们很隑֌分是否在使用敏捷ҎQ也很难用固定的评L授如何用敏h法)

然而,没有一个严格的定义Q正是敏h法的核心哲学 Q“This lack of rigorousness is part of the defining nature of agile methods, part of its core philosophy.”)

Martin接着指出Q?

“Different kinds of systems have different kinds of pressures and forces, which makes it very difficult to come up with a rigorous statement of what to do that's sufficient to cover them.”(不同的系l有来自不同斚w的压力,q种情况使得很难定义Z个严格的q程Q去定义如何有效的解册些问题)

而另一关键的问题是QhQY件开发的MQ是一个最大的可变的因?Q“This effect is compounded by the fact that software development is such a people-oriented activity, and people are naturally inconsistent and highly variable. ”)

倡导敏捷Ҏ的hQ之所以没有ؓ敏捷Ҏ制定Z个严格的定义Q就是ؓ了将软g开发中最大的可变因素Q而又是过E的执行者:人,忽略掉。(?that's its not effective to try and bind software development to a rigorous process, because that's ignoring the essential nature of the primary (human) components that will execute that process”)

阅读全文


Martin Fowler
inconsistent and highly variable

Email this store to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story

Yourit Q?A rel=tag align="top">Agile Programming Technorati cosmos
Mycat Programming



kukooBlog 2005-05-31 11:04 发表评论
]]>
<IMG alt=EclipseIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/EclipseIcon.GIF" border=0 align=top> Eclipse 的RCP是“胖客户端”的回归标志吗?http://www.tkk7.com/kukoo/archive/2005/05/28/5302.htmlkukooBlogkukooBlogSat, 28 May 2005 10:29:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/28/5302.htmlhttp://www.tkk7.com/kukoo/comments/5302.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/28/5302.html#Feedback2http://www.tkk7.com/kukoo/comments/commentRss/5302.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5302.html今天看到一挺有意思的blog: Does Eclipse's RCP mark the return of the fat client or didn't they just hear about the South Beach Diet yet? 大意是,Eclipse的RCP是否标志着“胖客户端”(或者说“富客户端”)的回归?

作者提C几个有趣的事实。首先,Z览器的Web Application让IT部门的员工爱不释手,因ؓ真正的“零客户端管理”实CQ服务器端的M一Ҏ动在客户端立d可以使用了,而不需要每个客L都再ȝ护了。但是,除了q个好处之外Q还有其他什么吗Q用P包括IT部门的员工逐渐意识到了,有了易于理的好处,但是牺牲了可用性,许多非常好用的功能,比如鼠标右键的快捯单,按列重新排序Q调节列的宽度等{,都在Web Application中失M。而事实上Q仔l想惻IZ么大多数的用h愿意使用OutlookQThunderBirdq样的邮件客LQ而不是mail.yahoo.comq样的浏览器邮g客户端。而同Ӟ览器下的Web Application没有一个统一的应用程序的风格Q菜单放哪里Q上面,底下Q左下角Q?

再回来看看所谓的“零理”。J2SE 1.4中加ZJava WebStart的功能。这U分布式的做法,使得客户端每ơ启动执行的时候,都会从服务器下蝲最新的版本。这P不是解决了“零理”的问题了吗Q其实还有一些需要注意的问题Q下载多?如果每次都要下蝲好几兆的更新Q通常用户的接受不了。想xơ更新Windows的补丁,q道下载好几兆的更新是一U什么感受了?

所以,真正的网l客LQ应该是“瘦”的Q但是“功能丰富的”,或者说Q是“thin”而且“rich”。“thin”是指相对于传统的“fat”客LQ象Officeq样的“胖客户端”)Q在客户端不需要太多的安装Q“rich”则是指相对于当前的Web ApplicationQ应该是功能丰富的。当前的Web Application是“thin”的Q但是不够“rich”?

那么何去何从呢?
一个选择是Mozilla 的XULQ一个跨q_的UI解决ҎQ?BR>一个选择是Eclipse的RCPQ够的“rich”了Q但是不够“thin? RCP的运行库pC6.7M了,g胖了炏V?

看完q个blogQ只有两个想法:

其一QRCP应该会是一个很大的发展方向。需要下载安装的客户端对于高速的宽带|络来说Q不是问题;
其二QJava WebStart的应用,每次客户端启动,只会更新改动q的部分Q除非客h除了客户端的~存Q。这L话,6.7M的RCPq行库ƈ不是每次都需要更新的?

有了Java WebStartQWeb Application所U道的“零客户端管理”就不再是一个显著的优势了。而RCP却带来了Web Application所不具备的用户易用性,l一的风格和传统桌面E序中所熟悉的功能?

Wolfgang Paulus ?SwixML Q一个开源的XUL引擎Q的创始者和主要作者。也许Wolfgang更乐于看到XUL ?RCP 都会健康的发展,提供开发真正的“Thin Rich Web Application”的q_?


Wolfgang Paulus's blog
SwixML

Email this store to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story

Yourit Q?A rel=tag align="top">RCP Technorati cosmos
Mycat EclipseQ?A href="http://www.tkk7.com/kukoo/category/1245.html">Programming



kukooBlog 2005-05-28 18:29 发表评论
]]>
<IMG alt=EclipseIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/ProgrammingIcon.gif" border=0 align=top> SmallTalkl于要退出历史舞Chttp://www.tkk7.com/kukoo/archive/2005/05/27/5248.htmlkukooBlogkukooBlogFri, 27 May 2005 02:18:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/27/5248.htmlhttp://www.tkk7.com/kukoo/comments/5248.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/27/5248.html#Feedback6http://www.tkk7.com/kukoo/comments/commentRss/5248.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5248.htmlSWT和Swing的blogQ?

SmallTalk快要完成它的历史命了Q而Q何一U语aQ不是Javaq是C#Q都不可能永q存zMȝ。技术主g了市场,新的需求会催生新的语言?


Richard Monson-Haefel?/FONT>BlogQ?/FONT>IBM abandons Smalltalk

Email this story to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story

Yourit



kukooBlog 2005-05-27 10:18 发表评论
]]>
<IMG alt=PatternIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/o_PatternsIcon.gif" border=0 align=top> Pattern: Data Obfuscatorhttp://www.tkk7.com/kukoo/archive/2005/05/26/5229.htmlkukooBlogkukooBlogThu, 26 May 2005 07:25:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/26/5229.htmlhttp://www.tkk7.com/kukoo/comments/5229.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/26/5229.html#Feedback1http://www.tkk7.com/kukoo/comments/commentRss/5229.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5229.html你如何解册个问题呢Q你如何得到一l数据,既不会泄露用L机密数据Q也保证了够的数据量和复杂度?

Bobby Woolf 在他的blog中提Z使用Data ObfuscatorQ؜淆数据)Q即通过一个特定的E序Q特定的一l算法和规则Q从用户的数据中摘取_的数据量Q同Ӟ把一些敏感的数据Q如姓名Q薪_保险L{)替换成一些不重要Q或者不敏感Q的数据Q比如,把姓名用A001, A002来替换掉Q?


Data Obfuscator 原文参?/A>

Yourit Technorati cosmos
Yourit Programming



kukooBlog 2005-05-26 15:25 发表评论
]]>
<IMG alt=PatternIcon src="http://www.tkk7.com/images/blogjava_net/kukoo/1547/o_PatternsIcon.gif" border=0 align=top/> 如何思考Design Pattern?http://www.tkk7.com/kukoo/archive/2005/05/25/5198.htmlkukooBlogkukooBlogWed, 25 May 2005 10:13:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/25/5198.htmlhttp://www.tkk7.com/kukoo/comments/5198.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/25/5198.html#Feedback8http://www.tkk7.com/kukoo/comments/commentRss/5198.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/5198.htmlArtima Developer的ȝ Bill Venners在对Erich Gamma的一ơ采访中Q?A >仔细讨论了Design PatternQ设计模式)的问?/A>。当我们做设计的时候,我们首先会想C用设计模式。那么如何用设计模式?如何用设计模式进行思考?是否当你解决一个问题的时候,必须要用设计模式?

Bill Venners把q次访谈的内容分多次Q发表在Artima Developer上。Erich Gamma的论q确实精彩,他不仅谈C当初如何q入Design Patternq个领域的过E,也谈C在他开发JUnit的过E中Q如何设计JUnitQ以及如何在JUnit中用Design Pattern?

“I think patterns as a whole can help people learn object-oriented thinking: how you can leverage polymorphism, design for composition, delegation, balance responsibilities, and provide pluggable behavior. Patterns go beyond applying objects to some graphical shape example, with a shape class hierarchy and some polymorphic draw method. You really learn about polymorphism when you've understood the patterns. So patterns are good for learning OO and design in general.?/SPAN>

“Patterns are distilled from the experiences of experts. They enable you to repeat a successful design done by someone else. By doing so you can stand on the shoulders of the experts and do not have to re-invent the wheel. ?nbsp;

“Do not start immediately throwing patterns into a design, but use them as you go and understand more of the problem. Because of this I really like to use patterns after the fact, refactoring to patterns. ?. Trying to use all the patterns is a bad thing, because you will end up with synthetic designs—speculative designs that have flexibility that no one needs. These days software is too complex. We can't afford to speculate what else it should do. We need to really focus on what it needs. ?nbsp;

“We didn't just string patterns together when we designed JUnit. We did it test-driven, starting with a test that we wanted to succeed and once it passed we looked into how we could improve the code. ?/SPAN>

Who is Erich Gamma?Q这个问题好像问的有些傻Q?BR>
《Design Patterns: Elements of Reusable Object-Oriented Software》,《Contributing to Eclipse: Principles, Patterns, and Plug-Ins》的作者之一QJUnit的作者之一QEclipse JDT的负责h。他目前在IBM的瑞士苏黎世OTI实验室工作?nbsp;


[Update]感谢?A >lxwde中文译?BR>


W一ơ访谈的详细内容?/FONT>
Artima Developer
CSDN 上的中文译

Email this store to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story

Yourit Technorati cosmos
Yourit Programming



kukooBlog 2005-05-25 18:13 发表评论
]]>
dW上的Geronimohttp://www.tkk7.com/kukoo/archive/2005/05/19/4858.htmlkukooBlogkukooBlogThu, 19 May 2005 03:08:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/19/4858.htmlhttp://www.tkk7.com/kukoo/comments/4858.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/19/4858.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/4858.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/4858.html
  • 特别是Geronimo! Part1Q详l描qCGeronimo的系l结构。而Geronimo的开发,相比之前Q似乎加快了不少Q第二篇文章中就介绍了IBM开发的用于Geronimo的一个Eclipse构gQ但是需要和Eclipse WTP一同工作。希望Eclipse WTP可以把这个plug-in包含到WTP里面?

    Technorati Tags Q?A rel=tag>Geronimo



    kukooBlog 2005-05-19 11:08 发表评论
    ]]>
    Introduction to Spring Frameworkhttp://www.tkk7.com/kukoo/archive/2005/05/18/4751.htmlkukooBlogkukooBlogWed, 18 May 2005 05:43:00 GMThttp://www.tkk7.com/kukoo/archive/2005/05/18/4751.htmlhttp://www.tkk7.com/kukoo/comments/4751.htmlhttp://www.tkk7.com/kukoo/archive/2005/05/18/4751.html#Feedback0http://www.tkk7.com/kukoo/comments/commentRss/4751.htmlhttp://www.tkk7.com/kukoo/services/trackbacks/4751.htmlRod Johnson ?TheServerside 上面发表一新?A > Spring Framework的介l文?/A>。写的真是太好了?

    kukooBlog 2005-05-18 13:43 发表评论
    ]]>
    վ֩ģ壺 һƵ| ޹av߲| ŷ޿l| Ѹ߹ۿ| ŷ츾ۺϾþþþ | ڵƵ| ۺϼר| Ƭѹۿ| ޾ƷþþþþҲ| ƷŮþþ | պĻպ| ʮ˽Ļվ| ޾Ʒ | պƷϵר| ޾Ʒ˽Ĺ| ߹ۿƵԴ| һëƬ| ŮڵƵվ | ŮAëƬ| ޳aƬ߹ۿƷ| ѧŮëƬƵ| ŮƵվ| ޹Ʒһ | AV߲ | avۺɫ| 69avƵ| ƷþþþþӰ | | AV뾫Ʒһ| ޾Ʒtvþþþþþþþ| ۲Ƶwwwѹۿ | վ| þþŷղAV| ھƷƵ| aѸɫƬ| Ƶһ߹ۿ| Ұ¾þø| ĻѾþ| 㽶߹ۿ| ëƬ޾Ʒ| ѹƵվ|