??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕在线观看亚洲视频,亚洲国产日韩在线人成下载,亚洲av无码专区首页http://m.tkk7.com/uiiang/category/4177.html世h皆有悲哀Q只有你不明?/description>zh-cnTue, 27 Feb 2007 11:43:42 GMTTue, 27 Feb 2007 11:43:42 GMT60css模板http://m.tkk7.com/uiiang/articles/78864.htmlFri, 03 Nov 2006 02:23:00 GMThttp://m.tkk7.com/uiiang/articles/78864.htmlhttp://m.tkk7.com/uiiang/comments/78864.htmlhttp://m.tkk7.com/uiiang/articles/78864.html#Feedback0http://m.tkk7.com/uiiang/comments/commentRss/78864.htmlhttp://m.tkk7.com/uiiang/services/trackbacks/78864.htmlhttp://www.csswebs.org/
css模板?Q?a >http://tools.i-use.it/index.aspx
css模板?Q?a >http://www.intensivstation.ch/en/templates/
css例子 http://qjjerry.bokee.com/5236112.html

2006-11-03 10:23 发表评论
]]>
prototype.js开发者手?/title><link>http://m.tkk7.com/uiiang/articles/78486.html</link><dc:creator>强</dc:creator><author>强</author><pubDate>Wed, 01 Nov 2006 08:04:00 GMT</pubDate><guid>http://m.tkk7.com/uiiang/articles/78486.html</guid><wfw:comment>http://m.tkk7.com/uiiang/comments/78486.html</wfw:comment><comments>http://m.tkk7.com/uiiang/articles/78486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/uiiang/comments/commentRss/78486.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/uiiang/services/trackbacks/78486.html</trackback:ping><description><![CDATA[     摘要: 转自http://www.cnblogs.com/thinhunan/archive/2006/04/01/DeveloperNotesForPrototype.htmlC个很好的东西在国内没有被很多Z用v来,实在是不爽,所以花了很大功夫把q个手册译成中文,׃q篇文章很长Q所以,译的工作量很大而且有些地方英文版也没有说清楚,虽得查看源代码,好在不是坚持做完了,大家鼓励下啊Q^o^prot...  <a href='http://m.tkk7.com/uiiang/articles/78486.html'>阅读全文</a><img src ="http://m.tkk7.com/uiiang/aggbug/78486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/uiiang/" target="_blank">强</a> 2006-11-01 16:04 <a href="http://m.tkk7.com/uiiang/articles/78486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Weblogic服务器性能调优http://m.tkk7.com/uiiang/articles/26083.htmlFri, 30 Dec 2005 08:27:00 GMThttp://m.tkk7.com/uiiang/articles/26083.htmlhttp://m.tkk7.com/uiiang/comments/26083.htmlhttp://m.tkk7.com/uiiang/articles/26083.html#Feedback0http://m.tkk7.com/uiiang/comments/commentRss/26083.htmlhttp://m.tkk7.com/uiiang/services/trackbacks/26083.htmlWeblogic服务器性能调优

       注:在下面做的介l都是以Weblogic8.1Z的,其它版本?/span>Weblogic可能会有些许不同?span lang="EN-US">

       1) JAVA参数Q?span lang="EN-US">

       a) ~辑Weblogic Server启动脚本文gQ?span lang="EN-US">

         BEA_HOME\user_projects\domains\domain-name\startWebLogic.cmd(startWebLogic.sh on Unix)

         BEA_HOME\user_projects\domains\domain-name\startManagedWebLogic.cmd(startManagedWebLogic.sh on Unix)

b) ~辑set JAVA_OPTIONS命oQ如Q?/span>set JAVA_OPTIONS=-Xms256m –Xmx256mQ?span lang="EN-US">

c) 保存Q重启即可?span lang="EN-US">

注:?/span>WebLogic中,Z获得更好的性能Q?/span>BEA公司推荐最?/span>Java堆等于最?/span>Java堆?/span>

2) 开发模?/span> vs. 产品模式Q?span lang="EN-US">

开发模式和产品模式的一些参数的默认g同,可能会对性能造成影响Q下面是Ҏ能有媄响的参数列表Q?span lang="EN-US">

参数

开发模式默认?span lang="EN-US">

产品模式默认?span lang="EN-US">

Execute Queue: Thread Count

15 threads

25 threads

JDBC Connection Pool: MaxCapacity

15 connnections

25 connections

       通过启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 配置 > 常规选择产品模式?span lang="EN-US">

3) 量开启本?/span>I/OQ?span lang="EN-US">

通过启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 服务?/span> > server实例Q如Q?/span>myserverQ?/span>> 配置 > 调整选择启用本地I/O?span lang="EN-US">

注:此g可通过手动的修?/span>config.xml配置文g?/span>

4) 调优执行队列U程Q?span lang="EN-US">

a) 修改默认执行U程?span lang="EN-US">

在这里,执行队列的线E数表示执行队列能够同时执行的操作的数量。但此g是设的越大越好,应该恰到好处的去讄它,太小了,执行队列中将会积累很多待处理的Q务,太大了,则会消耗大量的pȝ资源从而媄响整体的性能。在产品模式下默认ؓ25个执行线E?span lang="EN-US">

Z讄理想的执行队列的U程敎ͼ我们可以启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 服务?/span> > server实例Q如Q?/span>myserverQ?/span>> 监视 > 性能中监控最大负载时执行队列的吞吐量和队列中的等待请求数Q据此确定理想的数倹{?span lang="EN-US">

       理想的默认执行线E数是由多方面的因素军_的,比如机器CPU性能、M体系架构?/span>I/O、操作系l的q程调度机制?/span>JVM的线E调度机制。随着CPU个数的增加,WebLogic可以q乎U性地提高U程数。线E数多Q花费在U程切换的时间也p多;U程数越,CPU可能无法得到充分的利用。ؓ获取一个理想的U程敎ͼ需要经q反复的试。在试中,可以?/span>25*CPU个数为基准进行调整。当I闲U程较少Q?/span>CPU利用率较低时Q可以适当增加U程数的大小Q每五个递增Q。对?/span>PC Server?/span>Windows 2000Q则最好每?/span>CPU50个线E,?/span>CPU利用率ؓ90%左右为最佟?span lang="EN-US">

       通过启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 服务?/span> > server实例Q如Q?/span>myserverQ?/span>> Execute Queue > weblogic.kernel.Defalt > 配置中修改线E计数?span lang="EN-US">

       b) 讑֮执行队列的溢出条Ӟ

       Weblogic Server提供l默认的执行队列或用戯定义的执行队列自定义溢出条g的功能,当满x溢出条gӞ服务器改变其状态ؓ“警告”状态,q且额外的再分配一些线E去处理在队列中的请求,而达到降低队列长度的目的?span lang="EN-US">

       通过启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 服务?/span> > server实例Q如Q?/span>myserverQ?/span>> Execute Queue > weblogic.kernel.Defalt > 配置下面几项Q?span lang="EN-US">

         队列长度Q此DC执行队列中可容U的最大请求数Q默认值是65536Q最后不要手动改变此倹{?span lang="EN-US">

         队列长度阈值百分比Q此DC溢出条Ӟ在此服务器指出队列溢Z前可以达到的队列长度大小的百分比?span lang="EN-US">

         U程数增加:当检到溢出条gӞ增加到执行队列中的U程数量。如?/span>CPU和内存不是够的高,量不要改变默认值?/span>0”。因?/span>Weblogic一旦增加后不会自动~减Q虽然最l可能确实vC降低h的作用,但在来的运行中媄响程序的性能?span lang="EN-US">

         最大线E数Qؓ了防止创多的U程数量Q可以通过讑֮最大的U程数进行控制?span lang="EN-US">

在实际的应用场景中,应根据具体情况适当的调整以上参数?span lang="EN-US">

c) 讑֮执行队列监测行ؓ

Weblogic Server能够自动监测到当一个执行线E变为“阻塞”。变为“阻塞”状态的执行U程无法完成当前的工作Q也无法再执行新h。如果执行队列中的所有执行线E都变ؓ“阻塞”状态,Weblogic server可能改变状态ؓ“警告”或“严重”状态。如?/span>Weblogic server变ؓ“严重”状态,可以通过Node Manager来自动关闭此服务器ƈ重新启动它。具体请参考:Node Manager Capabilities文档?/span>

通过启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 服务?/span> > server实例Q如Q?/span>myserverQ?/span>>配置 > 调整下可配置下面几项Q?span lang="EN-US">

         dU程最长时_在此服务器将U程诊断为阻塞线E之前,U程必须q箋工作的时间长?/span>(U?/span>)。默认情况下Q?/span>WebLogic Server 认ؓU程在连l工?/span> 600 U后成ؓdU程?span lang="EN-US">

         dU程计时器间隔:WebLogic Server 定期扫描U程以查看它们是否已l连l工作了 "dU程最长时?/span>" 字段中指定的旉长度的间隔时?/span>(U?/span>)。默认情况下Q?/span>WebLogic Server 此旉间隔讄?/span> 600 U?span lang="EN-US">

5) 调优TCPq接~存敎ͼ

WebLogic Server?/span>Accept Backlog参数规定服务器向操作pȝh的队列大,默认gؓ50。当pȝ重蝲负荷?/span>,q个值可能过?/span>,日志中报Connection Refused,D有效q接h遭到拒绝,此时可以提高Accept Backlog 25%直到q接拒绝错误消失。对?/span>Portalcd的应?/span>,默认值往往是不够的?/span>Login Timeout?/span>SSL Login Timeout参数表示普通连接和SSLq接的超时时?/span>,如果客户q接被服务器中断或?/span>SSL定w?/span>,可以试增加该倹{?span lang="EN-US">

通过启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 服务?/span> > server实例Q如Q?/span>myserverQ?/span>>配置 > 调整下可配置“接受预备连接”?span lang="EN-US">

6) 改变Java~译器;

标准?/span>Java~译器是javacQ但~译JSP servlets速度太慢Qؓ了提高编译速度Q可以?/span>sj?/span>jikes~译器取?/span>javac~译器。下面说说更?/span>Java~译器:

通过启动理控制収ͼ在域Q如Q?/span>mydomainQ?/span>> 服务?/span> > server实例Q如Q?/span>myserverQ?/span>>配置 > 常规下改?/span>Java ~译?/span>Q默认ؓjavac。输入完整\径,如:c:\visualcafe31\bin\sj.exe。然后打开高选项Q在预规划到c\径填?/span>~译 Java 代码时ؓ Java ~译器类路径预规划的选项Q如Q?/span>BEA_HOME\jdk141_02\jre\lib\rt.jar?span lang="EN-US">

7) 使用Webogic Server集群提高性能Q?span lang="EN-US">

具体关于如何配置Weblogic集群Q我׃l说了。详情可参考:Introduction to WebLogic Server Clustering?span lang="EN-US">

8) Weblogic EJB调优

׃EJB2.0已经很少目在用了,EJB3.0再成熟一点,我再补充q一部分吧!

9) JDBC应用调优

JDBC Connection Pool的调优受制于WebLogic ServerU程数的讄和数据库q程?/span>,游标的大。通常我们在一个线E中使用一个连?/span>,所以连接数q不是越多越?/span>,为避免两边的资源消耗,讄q接池的最大值等于或者略于U程数。同时ؓ了减新接的开销,最值和最大DZ致?span lang="EN-US">

增加Statement Cache Size对于大量使用PreparedStatement对象的应用程序很有帮?/span>,WebLogic能够为每一个连接缓存这些对?/span>,此值默认ؓ10。在保证数据库游标大够的前提?/span>,可以Ҏ需要提?/span>Statement Cache Size。比如当你设|连接数?/span>25,Cache Size?/span>10?/span>,数据库可能需要打开25*10=250个游标。不q的?/span>,当遇CPreparedStatement Cache有关的应用程序错误时,你需要将Cache Size讄?/span>0?span lang="EN-US">

JDBC Connection Pool提供了很多高U参?/span>,在开发模式下比较有用,但大部分在生产环境下不需调整。这里徏议最好不要设|测试表, 同时Test Reserved Connections?/span>Test Released Connections也无需勾上?/span> 当然如果你的数据库不E_,时断时箋,你就可能需要上q的参数打开?span lang="EN-US">

最后提一下驱动程序类型的选择,?/span>OracleZ,Oracle提供thin驱动?/span>oci驱动,从性能上来?/span>,oci驱动Zthin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不大,随着thin驱动的不断改q?/span>,q一弱势得到I补。?/span>thin驱动的移植性明昑ּ?/span>oci驱动。所以在通常情况下徏议?/span>thin驱动。而最新驱动器׃WebLogic server/bin目录下的cd可能不是最新的,请以Oracle|站为准: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html?o:p>

10) JSP调优

         jsp-param pageCheckSeconds=-1Q?span lang="EN-US">

         serlet-reload-check=-1?/span>ServletReloadCheckSecs=-1Q?span lang="EN-US">

         jsp-param precompile=trueQ关?/span>JSP预编译选项?span lang="EN-US">



2005-12-30 16:27 发表评论
]]>
一已l忘记的文章http://m.tkk7.com/uiiang/articles/21750.htmlMon, 28 Nov 2005 15:43:00 GMThttp://m.tkk7.com/uiiang/articles/21750.htmlhttp://m.tkk7.com/uiiang/comments/21750.htmlhttp://m.tkk7.com/uiiang/articles/21750.html#Feedback0http://m.tkk7.com/uiiang/comments/commentRss/21750.htmlhttp://m.tkk7.com/uiiang/services/trackbacks/21750.html
今天听到了webwork加入struts的消息,不知道文章的作者有何感惟?BR>
整理一下技术\U?BR>q是Java视线论坛 robbin斑竹2005-6-28 发的帖子Q希望能对大家将来技术发展有所帮助?BR>
一、Y件开发技?

1Q服务器?

在最q?q内QJavaq是LQ不光是因ؓ当前的普及程度和遗留pȝ问题Q而且除Microsoft几乎所有大公司都投资到Java上面的原因,此外开源也是一股无法忽略的力量Q除了Java斚w的开源框架在推动JavaQ也有Linux在带动java企业应用在普及(别忘记dotnet只能?Windows Server上面q行Q?

dotnet有自q优势Q但是在五年内无法和Java取得均势Q不光是因ؓJava普及带来的优势,也不光因为开源界对java的推动,也不光因为其他大公司在java上面的投资,而是很多公司的行业性质军_了dotnet的出局Q例如电信行业,金融行业Q电子政务行业等{,是根本没有可能采?dotnet的?

Python和Ruby不上后P但是很有竞争实力Q不q基于上面的原因Q仍然不能成Z?

在Java服务器端技术中Q清晰的分ؓ两条路线Q高端的商业路线Q这条\U是EJB3QJ2EE5.0Q低端的开源\U,q条路线是HibernateQ?Spring。这两条路线也有重叠的地方,例如开源的Struts几乎成ؓJ2EE Web层的标准Q开源的Hibernate奠定了EJB3的基。但是划分\U不是基于技术上的区别,而是Z商业q作上的区别。注重技术支持和商业服务的公怼选择前者,注重成本控制和选择自由的公怼选择后者?

商业路线的技术方案是QEJB3QStrutsQ?
开源\U的技术方案是QSpringQHibernateQStruts/Webwork

Struts是一个很成功的开源框Ӟ它的C短期内还无法动摇QJavaEye有一命,是动摇Struts在Java Web领域的地位,把它赶下王Q把Webwork扶上位!

商业的Web层技术,JSTL是一个不错的东西Q但是和灉|的模板语a如FreeMarker相比Q却有很大的差距。JSF基本上是一个没有前途的东西。商业Web层技术因Z直没有出现好的应用,q样也导致了Struts的上位?

服务器端业务层和持久层框Ӟ我非常看好EJB3Q原因也不用多谈了,从商业上来说Q需要这样一个东西,跨国公司们也需要这样一个品来卖,来取代糟p的 EJB2。开源的Ҏ里面QSpringQHibenrate是一个很好的商业Ҏ的开源替代,他们不存在很直接的竞争,而是一个互补的关系。这里比较尴的反而是JDOQJDO是商业品(目前没有好的开源实玎ͼQ造成开源应用不会对它感兴趣QJDO没有一个像EJB容器那样的脱环境,造成商业Ҏ对它不感兴趣。不q有了JDOQ我觉得是对EJB3Q对Hibernate形成一个良好的竞争环境Q这一Ҏ非常有利的?

2Q客L技?

准确的说是RIA应用。虽然我前面对XAMLq行了正面的评hQ但是我认ؓ我前面有些结论给错了。经q这D|_我觉得,XAMLx在多q之后,也未必能够成Z个非常成功的解决Ҏ。道理很二:

1、XAML会带来比ActiveX更严重的安全性问题?
XAML本质上就是一个本地应用程序,虽然L可以在IE览器里面运行,但IE是一个皮而已QXAML应用具备Ҏ地资源完全的讉K能力Q就IE限制也没有用QIE限制׃失功能,那样的话Q功能ƈ不会比Javascript来得更多Q不限制的话Q就为所Ʋؓ了)Q因此只要IE具备了运行XAML的能力,黑客可以非常轻易的通过IEq行入RQ这仅仅需要引导用户在不知不觉中访问一个恶意的|页搞定了Q用户必面临选择Q要么禁止IE对XAML的运行能力,要么接受随时被攻ȝ危险?

2、XAML应用本质上也是RIA应用Q因此必进行大量的RPC调用
当前XAML采用XML Web Servicesq行通讯Q这是一U低效的RPC。当前的XAML案例中ƈ没有注意到RPC领域Q实际上Ҏ我现在做RIA的体验来_RPCl对不是一个简单的事情Q要考虑的问题非常多?

从当前的阶段来说Q最实际可用的方案有两个Q?

1、AJAX
实际上就是基于XMLHTTP的JS异步交互Q这个东西已l出现很多年了,最q随着Google应用和Sun Blueprint的推出开始火热。我原来对这个东西持否定态度Q但是后来{变了。我原来否定态度的一个前提就是:XMLHTTP~Z成熟的组件库Q但是没有想到的是,现在XMLHTTP从去q下半年开始,如雨后春W般冒出来。AJAX应用最大的好处是充分利用现有资源Q我认ؓ应成为RIA应用的首选?

2、Flash
Flash的优势也很明显,强大的AS支持Q强大的lg可视化设计,强大的交互能力和很炫的用户体验,q且Flash Remoting也已l非常成熟了。Flash的缺点就是Flash虽然嵌入|页Q但是和|页没有数据交互能力QFlash另一个缺点就是不适合处理大量文本内容QHTML最适合Q。现在有些h开始滥用Flash了?

因此比较好的方式可能是两U؜用,一般不q度复杂的交互交lAJAXQ非常复杂,甚至需要托拽操作的Q交lFlash?

ȝ一下:

软g开发领域服务器端技术Java是主,两个技术\U,一个是EJB3Q一个是SpringQHibernateQ此外iBATIS也有一席之圎ͼ客户端技术就是AJAX和Flash?

二、数据库技?

基本上格局不会发生多大变化QOracleq是高高在上QSQL Serverq一步蚕食NTq_其他数据库的领地。开源方面,MySQL一枝独UQ但是开源数据库在很多方面还是和商业数据库有无法拉近的巨大差距。这也得商业数据库的地位不可替代。我会比较关注OracleQMySQLq两个数据库。面向对象数据库仍然不会有什么v艌Ӏ?

三、桌面编E技?

我还是相信一点,对于桌面应用来说Q本C码的位置永远无法被取代,所以我总觉得XAML那样的东西效率实在很成问题。Longhorn要像成熟Q也不是W一个版本就可以辑ֈ的。当前桌面应用开发技术,q是首推DelphiQ不q我觉得Python是后起之UQ非常有可能在未来取代Delphi?BR>初探在下一?Windows 中编写和部v应用E序
http://www.microsoft.com/china/MSDN/library/windev/longhorn/DevelopAppLonghorn.mspx

首先Q以Microsoft公司的实力和Windows操作pȝ的占有率来说QLonghornq早会被普及Q而XAML的开发方式也有可能普及的。记得当初WindowsXP刚出来的时候,因ؓ资源占用率和新的Ȁzd度招致一片骂壎ͼ但是慢慢的,现在也都接受了下来。由此可以推断,Longhorn以其更加丰富的桌面功能和׃h的外观,会在来成ؓL?

但是Longhorn什么时候才会全面普及,q是很值得琢磨的问题。WindowsXP?001q推出的Q在随后的几q_Microsoft采用了一些商业手D|q用户升Q例如企囑֏消Windows98的技术支持,不再提供WindowsNT技术支持,不再销?WindowsNT/Windows98Q将Windows2000保持在一个比较高的售L同时Q对WindowsXP推出优惠hQ让 WindowsXP的售价低于Windows2000{等手段。但是直到现在,Windows2000仍然占据了非帔R的䆾额,据我个h的观察是?WindowsXP略高。按照这U情冉|推断QLonghorn要普及,恐怕难度更大,非常多的用户现在仍然是Windows2000的死忠派Q?WindowsXP推广了四q还未能过Windows2000Q那么LonghornI竟要几q才能超qWindowsXP呢?我估计四q以上是L的?

XAML应用E序不同以往Q它只能跑在Longhorn上面Q甚xJava和dotnet要求更严|后者仅仅下载安装一个运行环境就可以了,但是前者要求你必须更新操作pȝ。XAML在IE览器中q行虽然肯定是下一代RIA的主,但是不可忽视的问题是Q只要Longhorn没有d淘汰 Windows2000/XPQY件开发商和网站开发商׃敢大面积采用XAML。而根据我的观察,现在企业中,Windows98仍有部分市Z额。因此Longhorn必须要等待到d的,毫不D留的淘汰Windows98QWindows2000QWindowsXP之后Q才会全面普及,而在此之前,不得不经历一个O长的q渡期?

好像现在,假设你开发桌面应用程序,你敢只针对WindowsXP开发吗Q而彻底不支持98?000吗?我想Q没有哪个Y件开发商敢这样做。除?Windows2000几乎被彻底淘CQ你才敢q样做,但是WindowsXP已经推出四年了,q没有Windows2000占用率高Q哪全面淘汰I竟要几q呢Q再看看现在dotnet winforms应用Q推Z已经五年旉了,但是到现在仍然没有普及开来,Ҏ的原因就是Windows2000/WindowsXP没有预装 dotnet framework。仅仅是需要打包安装一个运行环境就使得winforms五年都推q不了,更何况要求你升操作pȝ呢?

我个人的估计是,假设2006qLonghorn如期上市Q那么将需?-9q时间来d淘汰Windows2000/WindowsXP?Longhorm上面XAML应用的初步普及也臛_需?-5q时间以后才会有软g开发商大量dQ想向dotnet?000q开始宣传和推广的,?2004q开始普及,今年和明q才会全面普?。因此,ZXAML应用的普及可能是?010q以后!上面的估计中q没有包括MacOS 和Linux在桌面会否有什么表现?

先说说服务器端吧Q?

从可预见的未来来看,服务器和客户端TCP通讯的主方式一定是HTTP协议Q即旉讯软g走UDP端口Q不在讨_。在ZHTTP协议之上Q又分ؓ两类Q一cLSOAP协议Q异构系l支持良好,但是性能很差Q目前Microsoft很喜Ƣ用q种方式Q一cL轻量U二q制协议Q例如Flash?AMF协议QResin的Hessian协议。值得一提的是,不管哪种方式Q他们都支持异构的系l,所以完全可用在客户端采用dotnetQ在服务器端采用Java或者Python。因此,XAML的流行不会对服务器端技术生致命的影响Q肯定会提高dotnet的服务器的市Z额)。所以我们可用抛开客户端媄响,单独来看服务器端技术:

1、Java
Java是当前服务器端技术当之无愧的王者,在未来五q内Q也不会有Q何动摇(受到dotnet和python的媄响,市场份额会下降一些)。Java特别有利的一ҎQ现在有太多的现存系l基于JavaQ这些系l都不会Lq移到其他^C。另外还有一个决定因素是除了Microsoft之外的几乎全?IT大公叔R在Java斚w的投资巨大,攑ּJava对他们来说也意味着沉重的打击,甚至毁灭性的打击。这些公司可以列很长很长QIBMQHPQ?OracleQSAPQSunQBEAQMacromedia{等?

2、dotnet
׃Microsoft的媄响力Qdotnet会成Zؓ仅次于Java的第二大服务器端技术,但是Microsoft有一个隐忧,是Linux操作pȝ在服务器端的高速成ѝ虽然现在Linux在整个服务器端市场的量只?3%左右Q但是成长率惊hQ根据我看到的资料显C,?008q_占?25%以上的市Z额。考虑到很多公司是自己安装LinuxQ因此不会被g服务器厂商统计进来,因此Linux的服务器端的市场份额应该?5%高一些。ƈ且现在主要的服务器厂商都对Linux有非常巨大的投入和支持,q些公司包括IBMQHPQDellQ只有Sun不支持)Q因此Linux在未来会对Windows在服务器端的市场构成最严重的威胁?

不要忘记dotnet只能在Windowsq_上面跑,虽然有monoQ但是你不可能移植MTSQCOM+QSQL Server etc。所以只要Linux在服务器市场对Windows构成持箋的威胁,dotnet׃可能过JavaQJava的地位还是稳E的老大。从某种E度上来_Java的命q是和Linux联系在一LQ只要Linux在服务器端不输于WindowsQJavaqE_制dotnet?

BTW:从未来来看,Linux和Windows会在低端和中端服务器市场成ؓ主要竞争ҎQ由于各自都有其不可替代性,所以双斚w不可能彻底消灭对方,最大的可能性是Linux和Windowsq_市场Q或者Windows市场份额略高一炏V?

3、Python
我个为Python会成长ؓW三大服务器端技术,Python成长于开源,但是又有商业公司来商业运作,q且背后q有大公司的支持Q在Ƨ洲普及的非常好。当然最重要的原因是我觉得Python在技术上非常先进Qƈ且技术发展方向上比较l一Q不会出现Java那种吉|的事情?

4、PHP
PHPq东西是不错QYahoo也在用,IBM现在也对他感兴趣Q但是我q是要说PHP没有太广阔的前途,原因很简单,PHP没有服务端中间gQ例?Java有App ServerQdotnet有IIS/MTSQPython有ZopeQ但是PHP他就是一个脚本,没有自己的中间g是致命问题。Yahoo用PHP有其特定的原因,主要是从原先自己的技术迁UdPHP很方便,而IBM支持PHPQ显焉之意不在酒QIBM意不在推qPHPQ而在于争取到那些使用 PHP的商业大客户们,向他们卖服务?

BTWQ感觉欧z用Python/PHP的很多,g开源在Ƨ洲非常深入人心?

从服务器端技术来_Javaq是我们最需要下功夫d习和掌握的,此外Q我会比较們֐于钻研和应用PythonQ而不是dotnet。原因也很简单,跟随Micorsoft的技术会很辛苦,Microsoft产生的新概念多,他L会猛的推出n多种技术,然后让他们在市场上自q存,最后根据市场反馈,无情的抛弃某些东西,大力推进有市场前景的东西Q这L例子太多了,举不胜D了。我的感觉就是这U方式会让Microsftl过市场试在技术竞争中{选最优秀的技术,但是对于Microsoft技术的跟随者来_未免有点太不公^Q整天吭哧吭哧被Microsoft拿来当免费的试验品来用。我特别不理解的是MSDN宇宙版,MicrosoftL把无Ih的文档灌给你,让你永远学不完,但实际上我真的不需要那么多概念Q我只需要能够很好的完成我工作的技术,q且q个技术可以持l的完善好了。而不是今天给我这样一个东西,明天灌给我无IL文档Q后天当我用手以后Q又告诉我这东西作废了,你给我重新学习新东西Q然后又是无IL文档QM很恼火?

所以就是:重点学习JavaQ有旉d习PythonQ保持对dotnet的关注即可?


客户端:

前面说了那么多XAML的东西,都是和这有关Q七q以后肯定是XAML的天下,但是五到七年之内q不是:

1、Java
Java在客L真的是扶不v的阿斗,q都怪Sun。Sun造就了Java的成功,又一手毁了Java在客L的市场。那些个Swing和SWT的死忠团也不要和我争什么,我也懒得和你们争Q你们觉得好好吧,道不同不怸谋,你觉得好你就用你的,我觉得不好我q别的。用不着~着我非逼我说Java做客L好,没必要,况且q你逼我承认又怎样Q我是玉皇大帝金口玉言了?得到我的承认QJava有前途了Q我好像q没有那么大本领吧?是IBMQ?Sun也没有那么大本领Q所以好不好也不是我说了,用不着逼我?

2、dotnet winforms
׃Windows2000/WindowsXP不带dotnet CLRQ所以winforms一直没有能够普及得很好Q等Longhorn一出来Q又变成了XAML了,winforms又被淘汰了,所?winforms的地位特别尴,但是在这5-7q中Q你惛_发既能够在Windows2000/WindowsXPQ又能够在Longhorn上面跑的桌面E序Qwinforms好像又是Microsoft技术中最好的选择。所以只好一直尴下厅R?

3、VCQVB
dotnet出来以后开始尴了Q说用吧Q好像很落伍了,都dotnet时代了,说不用吧Q又没有好的替代品,现阶D开发桌面程序,q真得不得不用,而且q挺好用的。所以VC6SP5QVB6的死忠团也比较多?

4、Delphi
dotnet出来以后Borland开始跟风了Q这一跟风Q连老本都跟没有了。未来的XAML时代Q我也不知道Borland怎样找自q定位Q但不管怎么_从历史来看,本地代码的应用程序永q有它一席之圎ͼqXAML又如何如何做得漂亮了Q关键的地方Q和特定资源处理相关的部分,q是本地代码的程序管用。你看VB出来多少q了Q用VB开发的都是一些上层的目U别的应用YӞ一旦涉及品领域,q是VC和Delphi用。所以现在大家还是不得不用Delphi7ѝ?

BTWQXAML应用致力于快速开发项目别的应用Q特别是可以跑在IE览器里面的Q因此是RIA的首选。但是毕竟也有很多不适合用RIA的场所Q特别是例如我要备䆾某些文gQ你用XAMLQ那性能׃用提了。所以Delphi如果好好发展VCLQ封装Windows32 APIQ我觉得也是一条\Q未必比现在跟随dotnet差?

5、Flash RIA
其实我觉得Flash不适合做RIA的,但是Flash普及率太高,XAML又离普及太遥q,而Flash现在可以用了,所以是当前RIA的首选。不q我对Macromedia公司比较失望Q如果Macromedia能够公布Flash实现l节Q作Z个公开的标准向ISO提交Q同时免费开源FlexQ我敢说QFlash RIA会迅速普及的。等5-7qXAML的时代,׃Flash的市场占有率QXAML未必能拼得qFlash。可惜的是Macromedia公司目光q于短浅Q只知道赚眼前的钱?

6、Python
q?-7q内QRIA应用和RCP应用不会l一QXAML才具备将RIA和RCPl一的实力。从q?-7q来看,Flash是RIA的首选,而RCP的首选,我要推荐Python。原因前面已l提q,单ȝ一下:
1QwxWidgets是一个比MFC优雅的库QTortoiseCVS用wxWidges而不用MFCQ就是因为wxWidgets好用Q而不是ؓ了可以移植?
2QPython的面向对象脚本语a~程适合快速界面开?
3QPython在服务器端和客户端都非常有前途,可以形成一个统一的解x案,q一Ҏ显比Java有优?
4QPython桌面应用E序可以完全~译为本C码,qPythonq行环境Q这一Ҏdotnet winforms都有优势
5QPython可以不受限制的Q意调用Windows32 APIQ所以凡是VC6可以做的事情QPython可以做

试想一下,现在我们开发桌面应用程序有什么要求?
一、不要附带一个JRE或者CLR的篏?
二、可以快速开?
三、性能要有保证
四、方便的q程Ҏ调用支持
此外如果能够跨^台就最好了

Java前三炚w不符合;dotnet winforms不符合一QVC6不符合二和四QVB6不符合三和四QDelphi7W合前四点;Flash RIA不符合三QPython全部都符合!q且误住Python是一个完全开源免费的ҎQ?

客户端技术在q?-7q中Q在RIA领域我会学习一下FlashQ在RCP领域我会重点学习PythonQ此外会观望一下XAML


2005-11-28 23:43 发表评论
]]>
轻量U开发的成功U诀Q第 1 部分: 核心原则及原?/title><link>http://m.tkk7.com/uiiang/articles/16946.html</link><dc:creator>强</dc:creator><author>强</author><pubDate>Thu, 27 Oct 2005 01:14:00 GMT</pubDate><guid>http://m.tkk7.com/uiiang/articles/16946.html</guid><wfw:comment>http://m.tkk7.com/uiiang/comments/16946.html</wfw:comment><comments>http://m.tkk7.com/uiiang/articles/16946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/uiiang/comments/commentRss/16946.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/uiiang/services/trackbacks/16946.html</trackback:ping><description><![CDATA[<span id="pnfr9fx" class=atitle2>打基</SPAN><BR> <TABLE cellSpacing=0 cellPadding=0 border=0> <TBODY> <TR vAlign=top align=left> <TD> <P>U别: 初</P></TD></TR></TBODY></TABLE> <P><A ><NAME>Bruce Tate</NAME></A><BR>总裁, J2Life, LLC<BR>2005 q?5 ?30 ?/P> <BLOCKQUOTE>轻量U开发是一个很大的主题Q开发h员经常提到这个术语,但却很难讲明它的意思。本文是一pd讲述轻量U开发的文章中的首篇Q介l了该技术背后的核心原则及原理?/BLOCKQUOTE> <P>1990 q_我发C白水漂流q深q上了它。我们哪怕是l过最的湍流Q都会留一个h在湍尾部,两个人在岸边用索拽着。我们认可以防止Mp糕的事情发生。虽然看h一切尽在掌握,只是有些不太实际。我们还学会了从船舱观察普通的湍流Qƈ设法互相协作。对于大多数危险的湍,我们p了更多的旉来保障安全,但是只有数情况下,q些措施才v到重大的作用?/P> <P>在漂过E中Q用一Uv源于东南部湍急河的轻量U策略,为我节省了时_使我可以划得更远Q玩得更开心,而无需q多考虑安全问题。在业务领域Q轻量开发让您可以按时完工,U极响应客户Q从而节省时间和金钱?/P> <P>在本pd的文章中Q我x于轻量开发(曄有太多含义的术语Q的基础。本文章作为第一,者打好基Q同时对轻量U开发做出定义。后面的文章由浅入深地讲qCq程到原则最后到工具的知识。我也将在更高的U别上关注原理和架构的实玎ͼq且提供具体实现的代码?/P> <P>本系列面向没有经q太多轻量开发的读者。如果您已用了两年?Spring 轻量U容器和敏捷q程Q您可能会收h多。如果您在传l的开发过E中使用 Enterprise JavaBeans™(EJBQ,但想要{向轻量开发,那么本系列就是ؓ您准备的?/P> <P>我更多地是想在这场席h?Java?技术社区的潮流中,做一些自q贡献?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">轻量U?/I> q个噱头?Spring ?Pico q样的容器增M几分优雅。ƈ且,一些源自轻量q程的技术,如自动化单元试Q现在也渗透到了很多开发工作室中?/P> <P><A name=IDATC2FB><span id="r999xlt" class=atitle2>戳穿针对轻量U开发的谣言</SPAN></A><BR>“轻量开发”通常与一套开发方法、框架和设计原理一起用?/P> <UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <LI>轻量U?I>Ҏ</I> 包括敏捷q程Q例?I>极限~程</I>QXPQ和 Scrum。它们强调开发中试W一Q积极调动客户和重构? <LI>轻量U?I>框架</I> 鼓励Z使用单原始的 Java 对象QPOJOQ编E,而不是类?EJB 的重量面向lg模型? <LI>轻量U?I>设计模式</I> 使您可以在对象和集成服务之间q行松散耦合Q而无需艰苦地编写业务逻辑或领域模型?/LI></UL> <P>当我们研I这些思想和技术时Q您会学到更多关于它们的知识。但是首先让我们戳穿一些谣a?/P> <P><A name=IDAKD2FB><span id="d79p9f7" class=atitle3>谣言Q轻量开发只是一U“玩具”技术?/SPAN></A><BR>许多开发工P?Microsoft] Visual Basic ?PHPQ它们通常不能N或管理大型企业项目,因此得到?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">“玩具?/I>的称受像 Spring ?Hebernate q样的轻量技术就常常因此而黯淡。实际上Q大多数轻量U技术用于了企业开发,因ؓ其他技术都使我们非常失望。Spring 框架是作ؓ代替 EJB 的一U轻量技术。同PXP Ҏ吸收改进了企业中的错误设|。我在获?Jolt 大奖?<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Better, Faster, Lighter Java</I> 一书中Qؓ大家讲述了有x功部|在我的客户站点上的一些工L信息Q客h一些是财富 500 Z的公司。轻量技术在企业领域内,正在蓬勃发展着?/P> <P><A name=IDAVD2FB><span id="dfxvhrr" class=atitle3>谣言Q轻量开发策略构建的是“玩具”?/SPAN></A><BR>也许您更們֐于相信轻量开发只Ҏ建“玩具”应用程序有益。而您的目标是_地满_L需求。让我们首先明确一下:轻量U技术完全可以构U规模的应用E序。实际上Q这U巨大的反差l常发生Q因为只有简单、简z、无状态的设计才能使基设施更好地工作?/P> <P><A name=IDA1D2FB><span id="9dbxzxx" class=atitle3>谣言Q轻量q程使您忽视规范?/SPAN></A><BR>在轻量开发中Q您需要认真地规划q与客户商需求。您必须构徏严格的自动化单元试Q以优化重构。当攑ּ变更Ӟ仍可以保持程序完整。而且Q测试用例失败或变更引发错误Ӟ自动化构Z通知您。轻量开发必L其他技术更加注意规范,但这U规范源于不同方面?/P> <P>我认U开发风D了单一的技术或q程。如果您惌松一些,那么需要选择使它易于工作的原则、过E和技术?/P> <P><A name=IDACE2FB><span id="xzdpj99" class=atitle2>原则</SPAN></A><BR>该说的也说了Q该做的也做了,您现在需要决定哪些需要重视,q据此制定决{。如果我觉得客户被误导或漠不兛_Q我通常会首先帮助他们徏立核心原则。下面的列表是一个不错的LQ?</P> <UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <LI><B>争取单?/B>。这U观念应该渗入到您所有的工作中。您的过E应该刚好生成够完成工作的工g。开发h员应该尽量用最单的Ҏ解决问题。您的工具应该您构Z个清晰、简z的解决Ҏ? <LI><B>修补漏洞</B>。许多开发方法可能不鼓励在过E中q行重构或变_因ؓq些行ؓ不直接用于生客户代码。轻量开发要求可以自由地修补太复杂或充斥 bug 的代码。您需要ؓ它做出预? <LI><B>自动化单元测?/B>。您应该优先~写试用例。您可能q没有在试W一的开发中成功q,但测试会间接l您带来重构代码的便利。我以后会进一步讲qͼq泛的单元测试改善您的客户体验,q提高代码的设计水^Q这是因为它您解耦联p过于紧密的代码? <LI><B>使用短开发周期ƈU极调动客户参与其中</B>。许多顶U的软g工作室通过剔除不必要的工g来简化开发周期。如果您已经利得到客户的参与,那么很多的功能规范会变得来没必要。客户会很满意这U交互,q感Ȁ您的短周期开发,因ؓq稳步提高了客户的业务h倹{?/LI></UL> <P>q些原则q不能完全包含您的技术抉择和开发过E,但它有利于您描述开发体验。如果经理也了解q循这些原则,开发h员就不至于做出无效技术选择Q或者开发一些不必要的工件。确立原则后Q就该规划一个有效过E了?/P> <P><A name=IDAXE2FB><span id="71pl9zz" class=atitle2>q程</SPAN></A><BR>紧凑、快速的开发过E通常?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">敏捷开发方?/I> 当中得到灉|。然而,q些Ҏq不针对每个人。如果您有一个大型团队,q且没有实际讉K客户或合适的代理人,那么传统Ҏ更适合您一些。但多数目都有团?—?不超q?12 个hQ他们可以充分访问客P以灵zM用这U方法。通常Q敏捷开发包括下列原则:</P> <UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <LI>专注现场客户和代码,而不是其他设计技巧。您可以使用其他技巧,但只在它们对您确实有益的情况下。本q程不需要它? <LI>化您需要的文档。ؓ了需要,宁可使用电子表格中的一行来描述Q也不用o人困惑的用例图? <LI>只做以完成工作的设计工作。不要对设计或性能q分忧心忡忡Q自己陷入l境? <LI>Z开发,努力q行化ƈ保证臛_每天都集成您所构徏的程序,必要时进行重构? <LI>自动化测试?/LI></UL> <P>即您工作在传统的机构,您也可以利用已裁减的开发过E。技巧是推广<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">原则</I> 而不?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Ҏ</I>。推q极限编E管理器 —?或其他冠?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">极限</I> 的东西,q可能会很艰难。但推广cM单元试的原则通常更有意义。实际上Q我的许多客户用这U技术同敏捷开发过E一起ؓ保守的机构服务,但他们的老板丝毫不知道有什么发生了改变?/P> <P>用修辞手法描qC下这U技术?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">原则</I> 是重招_ȝ轻量U思想?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">q程</I>是重量的,实现h会很困难?/P> <P><A name=IDAVF2FB><span id="z7fzvh9" class=atitle2>技?/SPAN></A><BR>我已l概qC大多数轻量开发h员需要了解的设计原理Q以及利用这些原理的重要开源技术?/P> <P><A name=IDA2F2FB><span id="77f7fpn" class=atitle3>依赖注入</SPAN></A><BR>最C代容器称?I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">轻量U容?/I>Q它们用一个共同设计原理:<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">依赖注入</I>?对这个简单思想来说Q这是一个复杂的术语。依赖注入让您将对象和它所依赖的东西交l第三方。然后第三方创徏所有对象ƈ它们绑在一赗比方说Q称?<CODE>myDao</CODE> 的数据访问对象需要一个称?<CODE>ds</CODE> 的数据源。那么该容器会一同创建它们,q设|一个属性: </P><A name=IDASG2FB><B>清单 1. 创徏一个第三方汇编E序</B></A><BR> <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc border=1> <TBODY> <TR> <TD><PRE><CODE> myDao = new Dao(); ds = new DataSource(); myDao.setDataSource(ds); </CODE></PRE></TD></TR></TBODY></TABLE> <P>当然Q不创徏q种W三Ҏ~程序的话,您也可以使用框架来做其他附加的工作(如提供配|支持)。Spring 框架、Pico ?HiveMind 扮演了q个角色。其他像 JavaServer Faces(JSF) 框架也利用了依赖注入?/P> <P><A name=IDAZG2FB><span id="tt7f9n7" class=atitle3>面向对象~程</SPAN></A><BR>使用面向对象~程QAOPQ,您可以编写通用的功能性模块(UCؓ<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">斚w</I>Q?—?例如Q日志、事务、安全或持久性。AOP 使您可以这些方面联pd POJOQ然后指定一个时间点Q如Ҏ开始时或生异常时Q和另一个需要联pȝ斚w。例如,您可能想要创Z个外观事务对象。您可以在调用方法时?<CODE>TransactionBegin</CODE> 斚w兌到外观方法。然后在产生异常时将 <CODE>RollBack</CODE> 斚w兌到外观的异常。最后,在方法结束时?<CODE>Commit</CODE> 斚w兌到外观的Ҏ。您在配|中完成q些工作Q而不是通过~写代码。依靠这U能力,您可以创Z个简单的 POJO 事务、安全或q程讉K?/P> <P>您现在已l得C关于 POJO 的声明性事务,q对企业应用E序非常有用。用这些工P您可以完全放?EJBQ或者最化它的作用。而这正是轻量U组件所要做的?/P> <P><A name=IDAPH2FB><span id="9xr9vl7" class=atitle3>透明持久?/SPAN></A><BR>持久性也是徏立在较简单的~程模型之上。透明持久性框枉过配置而不是编写代码,来您ؓ应用E序d持久性。因为大多数应用E序是面向对象的Qƈ且访问一个关pL据库Q所以一些专家断aQ我们最l将q入对象关系映射的时代。我目前发现的顶U持久性解x案是 SolarMetric ?Kodo JDO ?HibernateQ参?<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">参考资?/A>Q。在后面的文章中我将详细比较q些解决Ҏ。其他轻量解决ҎQ例?iBATIS ?Active Record 设计模式Q根本不会试图进行对象关pL?/P> <P><A name=IDA0H2FB><span id="17x9lnh" class=atitle2>l束?/SPAN></A><BR>在轻量开发中Q您基本上可以:</P> <UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <LI>合ƈq程、技术和原理? <LI>优先选择较简单的技术? <LI>在一个稳固、轻量的基上,q行构徏? <LI>量争取最可能的透明性? <LI>使用您可以利用的技术,如依赖注入和 AOP?/LI></UL> <P>一定要明白Q无论技术还是过E都不能完整定义轻量U开发。它是一个包|万象的概念。伴随本pd的文章,您将看到对轻量技术和原理的各U各L讨论。我首先关注开源框Ӟq着重讲q轻量容器。后面的文章Q我会讨Z守公司内的轻量Ҏ实现Q甚臌有一些超了 Java 技术的替代Ҏ。我非常喜欢q个pd的文章,希望您也一栗?/P> <P><A name=resources><span id="1bxd717" class=atitle2>参考资?</SPAN></A> <UL> <LI>您可以参阅本文在 developerWorks 全球站点上的 <A target=_blank xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">英文原文</A>?BR> <LI>阅读 Bruce Tate ?Justin Gehtland ~写?<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><A >Better, Faster, Lighter Java</A></I> 一书,此书更好地概qC轻量U开发?BR> <LI><I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Bruce Tate ?Justin Gehtland ~写?<A >Spring: A Developer's Notebook</A></I> 一书可以帮您快速入?Spring?BR> <LI>想了解更全面?Spring 知识Q请阅读 Rob Harrop ?Jan Machacek ~写?<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><A >Pro Spring</A></I>Q以?Craig Walls ?Ryan Breidenbach ~写?<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><A >Spring in Action</A></I>?BR> <LI>developerWorks 题ؓ?A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">无需容器的对象关pL?/A>”的文章为您展示了如何与 Hibernate 一起?Spring 持久性?BR> <LI>阅读 developerWorks 关于 AOP 的一文章?A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">AOP@Work: AOP 工具比较Q第 1 部分</A>”,它是提供更佳透明性的轻量U技术?BR> <LI>讉K <A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">developerWorks 的开源专?/A> 获取大量 how-to 信息、工具和目更新Q以帮助您用开源技术进行开发,q学会如何与 IBM 产品一起用?BR> <LI>使用 <A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">IBM 试用软g</A> 改进您的下一个开源开发项目,q些软g可以通过下蝲或购?DVD 获得?BR> <LI>?Developer Bookstore 的开源专区,可以扑ֈ数百?<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">开源主题的打折书籍</A>?BR> <LI>通过参与 <A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">developerWorks blog</A> 加入 developerWorks C֌?BR></LI></UL> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD><A name=author1></A><span id="zbp7br9" class=atitle2>关于作?/SPAN><BR>Bruce Tate 居住在d克萨斯州的首府奥斯汀Q他是一位父Ԍ同时也是山地车手和皮艇手。他?3 本最畅销 Java 书籍的作者,其中包括荣获 Jolt 大奖?<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Better, Faster, Lighter Java</I> 一书,最q又出版?<I xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Spring: A Developer's Notebook</I> 一书。他?IBM 工作?13 q_现在?J2Life、LLC 的创始h兼顾问。他潜心研究Z Java ?Ruby 的轻量开发策略和架构?/TD></TR></TBODY></TABLE><img src ="http://m.tkk7.com/uiiang/aggbug/16946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/uiiang/" target="_blank">强</a> 2005-10-27 09:14 <a href="http://m.tkk7.com/uiiang/articles/16946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://5c7m.com" target="_blank">һþþþþþþ</a>| <a href="http://qvod-player.com" target="_blank">JIZZJIZZŮ</a>| <a href="http://chenglide.com" target="_blank">Ů˿ƬƵ</a>| <a href="http://tzfzs.com" target="_blank">˾þô߽AV</a>| <a href="http://mtripmall.com" target="_blank">AƵһ</a>| <a href="http://jsky163.com" target="_blank">99þùƷһ </a>| <a href="http://51porn3.com" target="_blank">jlzzjlzzjzjzjz</a>| <a href="http://livejimmy.com" target="_blank">AVƬ߲</a>| <a href="http://boyipark.com" target="_blank">һëƬ߹ۿվ</a>| <a href="http://aierphoto.com" target="_blank">һ</a>| <a href="http://yangguang882.com" target="_blank">ĻӰwwwĻ</a>| <a href="http://773311h.com" target="_blank">ձ߹ۿ1</a>| <a href="http://ebuy668.com" target="_blank">Ļ</a>| <a href="http://128313.com" target="_blank">һƵ</a>| <a href="http://zgfxshop.com" target="_blank">޳ַ</a>| <a href="http://8833655.com" target="_blank">һػɫѴƬƵ</a>| <a href="http://www-741.com" target="_blank">޸Ӱһ?</a>| <a href="http://kmc19.com" target="_blank">޹ƷԲ߲</a>| <a href="http://yuase.com" target="_blank">޻ɫַ</a>| <a href="http://hylaowu.com" target="_blank">VƬ߲</a>| <a href="http://2828228.com" target="_blank">޹Ʒ߹ۿ</a>| <a href="http://mt181.com" target="_blank">ۺɫ߹ۿ</a>| <a href="http://www-7479.com" target="_blank">ɫ7777Ƶ߹ۿ</a>| <a href="http://sx97zc.com" target="_blank">㽶Ƶѿ</a>| <a href="http://huakangweicai.com" target="_blank">޳AVƬWWW</a>| <a href="http://da666f.com" target="_blank">޻ɫߵӰ</a>| <a href="http://cqshangshu.com" target="_blank">ŮƷþþ</a>| <a href="http://323799.com" target="_blank">ĻѴƬ</a>| <a href="http://niutextile.com" target="_blank">þƵ</a>| <a href="http://wwwxue1888.com" target="_blank">һaëƬƵ</a>| <a href="http://b2bautoparts.com" target="_blank">33333</a>| <a href="http://www55nana.com" target="_blank">޳վ</a>| <a href="http://9xcb.com" target="_blank">Ļ޵һ </a>| <a href="http://ittenyear.com" target="_blank">ŮƵ</a>| <a href="http://701807.com" target="_blank">ٸ̫ˬ߹ۿƵ</a>| <a href="http://8xcb.com" target="_blank">һɫaƬþëƬ</a>| <a href="http://3y0r.com" target="_blank">츾V߲</a>| <a href="http://yzddcpj.com" target="_blank">ɫʮʮɫ</a>| <a href="http://xdxdl.com" target="_blank">츾þþ</a>| <a href="http://adcaes.com" target="_blank">ѿһƬ</a>| <a href="http://fuzhiwushu.com" target="_blank">ëƬ18ŮëƬ96</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>