﻿<?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-I am Thinking !-文章分类-JavaEE</title><link>http://www.blogjava.net/Juizes361/category/42156.html</link><description>路漫漫兮其修远矣,吾将上下而求索!</description><language>zh-cn</language><lastBuildDate>Fri, 23 Oct 2009 03:50:54 GMT</lastBuildDate><pubDate>Fri, 23 Oct 2009 03:50:54 GMT</pubDate><ttl>60</ttl><item><title>Java软件架构师所要需的东西(转)</title><link>http://www.blogjava.net/Juizes361/articles/299366.html</link><dc:creator>残叶舞风</dc:creator><author>残叶舞风</author><pubDate>Thu, 22 Oct 2009 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/Juizes361/articles/299366.html</guid><wfw:comment>http://www.blogjava.net/Juizes361/comments/299366.html</wfw:comment><comments>http://www.blogjava.net/Juizes361/articles/299366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Juizes361/comments/commentRss/299366.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Juizes361/services/trackbacks/299366.html</trackback:ping><description><![CDATA[<span style="font-family: Comic Sans MS;"><span style="font-size: 10pt;">作为Java程序员来说，最痛苦的事情莫过于可以选择的范围太广，可以读的书太多，往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些，按照学习的先后顺序，推荐给大家，特别是那些想不断提高自己技术水平的Java程序员们。<br />
<br />
<strong>一、Java编程入门类</strong><br />
<br />
对于没有Java编程经验的程序员要入门，随便读什么入门书籍都一样，这个阶段需要你快速的掌握Java基础语法和基本用法，宗旨就是&#8220;囫囵吞枣不求甚解&#8221;，先对Java熟悉起来再说。用很短的时间快速过一遍Java语法，连懵带猜多写写代码，要&#8220;知其然&#8221;。<br />
<br />
1、《Java编程思想》<br />
<br />
在有了一定的Java编程经验之后，你需要&#8220;知其所以然&#8221;了。这个时候《Java编程思想》是一本让你知其所以然的好书，它对于基本的面向对象知识有比较清楚的交待，对Java基本语法，基本类库有比较清楚的讲解，可以帮你打一个良好的Java编程基础。这本书的缺点是实在太厚，也比较罗嗦，不适合现代人快节奏学习，因此看这本书要懂得取舍，不是每章每节都值得一看的，挑重点的深入看就可以了。<br />
<br />
2、《Agile Java》中文版<br />
<br />
这本书是出版社送给我的，我一拿到就束之高阁，放在书柜一页都没有翻过，但是前两天整理书柜的时候，拿出来一翻，竟然发现这绝对是一本好书！这本书一大特点是以单元测试和TDD来贯穿全书的，在教你Java各种重要的基础知识的过程中，潜移默化的影响你的编程思维走向敏捷，走向TDD。另外这本书成书很新，以JDK5.0的语法为基础讲解，要学习JDK5.0的新语法也不错。还有这本书对于内容取舍也非常得当，Java语言毕竟类库庞大，可以讲的内容太多，这本书选择的内容以及内容的多寡都很得当，可以让你以最少的时间掌握Java最重要的知识，顺便培养出来优秀的编程思路，真是一本不可多得的好书。<br />
<br />
虽然作者自己把这本书定位在入门级别，但我不确定这本书用来入门是不是稍微深了点，我自己也准备有空的时候翻翻这本书，学习学习。<br />
<br />
<br />
<strong>二、Java编程进阶类</strong><br />
<br />
打下一个良好的Java基础，还需要更多的实践经验积累，我想没有什么捷径。有两本书值得你在编程生涯的这个阶段阅读，培养良好的编程习惯，提高你的代码质量。<br />
<br />
1、《重构 改善既有代码的设计》<br />
<br />
这本书名气很大，不用多介绍，可以在闲暇的时候多翻翻，多和自己的实践相互印证。这本书对你产生影响是潜移默化的。<br />
<br />
2、《测试驱动开发 by Example》<br />
本书最大特点是很薄，看起来没有什么负担。你可以找一个周末的下午，一边看，一边照做，一个下午就把书看完，这本书的所有例子跑完了。这本书的作用是通过实战让你培养TDD的思路。<br />
<br />
<strong>三、Java架构师之路</strong><br />
<br />
到这个阶段，你应该已经非常娴熟的运用Java编程，而且有了一个良好的编程思路和习惯了，但是你可能还缺乏对应用软件整体架构的把握，现在就是你迈向架构师的第一步。<br />
<br />
1、《Expert One-on-One J2EE Design and Development》<br />
<br />
这本书是Rod Johnson的成名著作，非常经典，从这本书中的代码诞生了springframework。但是好像这本书没有中译本。<br />
<br />
2、《Expert One-on-One J2EE Development without EJB》<br />
<br />
这本书由gigix组织翻译，多位业界专家参与，虽然署名译者是JavaEye，其实JavaEye出力不多，实在是忝居译者之名。<br />
<br />
以上两本书都是Rod Johnson的经典名著，Java架构师的必读书籍。在我所推荐的这些书籍当中，是我看过的最仔细，最认真的书，我当时读这本书几乎是废寝忘食的一气读完的，有小时候挑灯夜读金庸武侠小说的劲头，书中所讲内容和自己的经验知识一一印证，又被无比精辟的总结出来，读完这本书以后，我有种被打通经脉，功力爆增的感觉。<br />
<br />
但是后来我看过一些其他人的评价，似乎阅读体验并没有我那么high，也许是因为每个人的知识积累和经验不同导致的。我那个时候刚好是经验知识积累已经足够丰富，但是还没有系统的整理成型，让这本书一梳理，立刻形成完整的知识体系了。<br />
<br />
3、《企业应用架构模式》<br />
<br />
Martin的又一本名著，但这本书我只是泛泛的看了一遍，并没有仔细看。这本书似乎更适合做框架的人去看，例如如果你打算自己写一个ORM的话，这本书是一定要看的。但是做应用的人，不看貌似也无所谓，但是如果有空，我还是推荐认真看看，会让你知道框架为什么要这样设计，这样你的层次可以晋升到框架设计者的角度去思考问题。Martin的书我向来都是推崇，但是从来都没有像Rod Johnson的书那样非常认真去看。<br />
<br />
4、《敏捷软件开发原则、模式与实践》<br />
Uncle Bob的名著，敏捷的经典名著，这本书比较特别，与其说是讲软件开发过程的书，不如说讲软件架构的书，本书用了很大篇幅讲各种面向对象软件开发的各种模式，个人以为看了这本书，就不必看GoF的《设计模式》了。<br />
<br />
<br />
<strong>四、软件开发过程</strong><br />
<br />
了解软件开发过程不单纯是提高程序员个人的良好编程习惯，也是增强团队协作的基础。<br />
<br />
1、《UML精粹》<br />
<br />
UML其实和软件开发过程没有什么必然联系，却是软件团队协作沟通，撰写软件文档需要的工具。但是UML真正实用的图不多，看看这本书已经足够了，完全没有必要去啃《UML用户指南》之类的东西。要提醒大家的是，这本书的中译本翻译的非常之烂，建议有条件的看英文原版。<br />
<br />
2、《解析极限编程 拥抱变化》XP<br />
<br />
这是Kent Beck名著的第二版，中英文对照。没什么好说的，必读书籍。<br />
<br />
3、《统一软件开发过程》UP<br />
<br />
其实UP和敏捷并不一定冲突，UP也非常强调迭代，测试，但是UP强调的文档和过程驱动却是敏捷所不取的。不管怎么说，UP值得你去读，毕竟在中国真正接受敏捷的企业很少，你还是需要用UP来武装一下自己的，哪怕是披着UP的XP。<br />
<br />
4、《敏捷建模》AM<br />
<br />
Scott Ambler的名著，这本书非常的progmatic，告诉你怎么既敏捷又UP，把敏捷和UP统一起来了，又提出了很多progmatic的建议和做法。你可以把《解析极限编程拥抱变化》、《统一软件开发过程》和《敏捷建模》这三本书放在一起读，看XP和UP的不同点，再看AM是怎么统一XP和UP的，把这三种理论融为一炉，形成自己的理论体系，那么你也可以去写书了。<br />
<br />
<br />
<strong>五、软件项目管理</strong><br />
<br />
如果你突然被领导提拔为项目经理，而你完全没有项目管理经验，你肯定会心里没底；如果你觉得自己管理项目不善，很想改善你的项目管理能力，那么去考PMP肯定是远水不解近渴的。<br />
<br />
1、《快速软件开发》<br />
<br />
这也是一本名著。可以这样说，有本书在手，你就有了一个项目管理的高级参谋给你出谋划策，再也不必担心自己不能胜任的问题了。这本书不是讲管理的理论的，在实际的项目管理中，讲这些理论是不解决问题的，这本书有点类似于&#8220;软件项目点子大全&#8221;之类的东西，列举了种种软件项目当中面临的各种问题，以及应该如何解决问题的点子，你只需要稍加变通，找方抓药就行了。<br />
<br />
<br />
<strong>六、总结</strong><br />
<br />
在这份推荐阅读书籍的名单中，我没有列举流行的软件框架类学习书籍，例如Struts，Hibernate，Spring之类，也没有列举AJAX方面的书籍。是因为这类书籍容易过时，而上述的大半书籍的生命周期都足够长，值得你去购买和收藏。<br />
<br />
<br />
<br />
</span></span>
<img src ="http://www.blogjava.net/Juizes361/aggbug/299366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Juizes361/" target="_blank">残叶舞风</a> 2009-10-22 15:01 <a href="http://www.blogjava.net/Juizes361/articles/299366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PO.POJO.BO.DTO.VO的区别(转)</title><link>http://www.blogjava.net/Juizes361/articles/298064.html</link><dc:creator>残叶舞风</dc:creator><author>残叶舞风</author><pubDate>Tue, 13 Oct 2009 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/Juizes361/articles/298064.html</guid><wfw:comment>http://www.blogjava.net/Juizes361/comments/298064.html</wfw:comment><comments>http://www.blogjava.net/Juizes361/articles/298064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Juizes361/comments/commentRss/298064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Juizes361/services/trackbacks/298064.html</trackback:ping><description><![CDATA[<span style="font-size: 8pt;"><span style="font-family: Comic Sans MS;"><span style="font-size: 10pt;"><span style="font-size: 12pt;"><span style="font-size: 8pt;"><span style="font-size: 10pt;"><span style="font-size: 10pt;"><span style="font-size: 8pt;"><span style="font-family: Comic Sans MS;"><span style="font-size: 10pt;"><br />
PO ：persistent object持久对象 <br />
1 ．有时也被称为Data对象，对应数据库中的entity，可以简单认为一个PO对应数据库中的一条记录。<br />
2 ．在hibernate持久化框架中与insert/delet操作密切相关。 <br />
3 ．PO中不应该包含任何对数据库的操作。 <br />
<br />
<br />
POJO ：plain ordinary java object 无规则简单java对象 <br />
一个中间对象，可以转化为PO、DTO、VO。 <br />
1 ．POJO持久化之后==〉PO <br />
（在运行期，由Hibernate中的cglib动态把POJO转换为PO，PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。PO对于programmer来说完全透明，由于是运行期生成PO，所以可以支持增量编译，增量调试。） <br />
2 ．POJO传输过程中==〉DTO <br />
3 ．POJO用作表示层==〉VO <br />
PO 和VO都应该属于它。 <br />
<br />
<br />
BO ：business object 业务对象 <br />
封装业务逻辑为一个对象（可以包括多个PO，通常需要将BO转化成PO，才能进行数据的持久化，反之，从DB中得到的PO，需要转化成BO才能在业务层使用）。 <br />
关于BO主要有三种概念 <br />
1 、只包含业务对象的属性； <br />
2 、只包含业务方法； <br />
3 、两者都包含。 <br />
在实际使用中，认为哪一种概念正确并不重要，关键是实际应用中适合自己项目的需要。 <br />
<br />
<br />
VO ：value object值对象 / view object表现层对象 <br />
1 ．主要对应页面显示（web页面/swt、swing界面）的数据对象。 <br />
2 ．可以和表对应，也可以不，这根据业务的需要。 <br />
注 ：在struts中，用ActionForm做VO，需要做一个转换，因为PO是面向对象的，而ActionForm是和view对应的，要将几个PO要显示的属性合成一个ActionForm，可以使用BeanUtils的copy方法。 <br />
<br />
<br />
DTO （TO） ：Data Transfer Object数据传输对象 <br />
1 ．用在需要跨进程或远程传输时，它不应该包含业务逻辑。 <br />
2 ．比如一张表有100个字段，那么对应的PO就有100个属性（大多数情况下，DTO 内的数据来自多个表）。但view层只需显示10个字段，没有必要把整个PO对象传递到client，这时我们就可以用只有这10个属性的DTO来传输数据到client，这样也不会暴露server端表结构。到达客户端以后，如果用这个对象来对应界面显示，那此时它的身份就转为VO。 <br />
<br />
<br />
DAO ：data access object数据访问对象 <br />
1 ．主要用来封装对DB的访问（CRUD操作）。 <br />
2 ．通过接收Business层的数据，把POJO持久化为PO。 </span><br />
</span></span></span></span></span></span></span></span></span><br />
<br />
<br />
<img src ="http://www.blogjava.net/Juizes361/aggbug/298064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Juizes361/" target="_blank">残叶舞风</a> 2009-10-13 14:30 <a href="http://www.blogjava.net/Juizes361/articles/298064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>