Java学习推荐书籍

Java学习推荐书籍

彭晨阳 2003年10月13日


书名:Java编程思想
URL: http://www.china-pub.com/computers/common/info.asp?id=7241
评论:
其实这本书并不适合作为Java入门使用,有位道友人为:看这种书有种看马克思选集的感觉,车轱辘话来回说,本来很简单的概念, 看过他的复杂的例子后,就云山雾绕了。当然,治疗失眠的效果是不错的。

我本人读这本书也是读了N多遍吧,总是感觉无法掌握其中一些概念, 不过在实践中遇到一些技术问题,会到书中查询,这样对书的理解不断加深, 但是一直无法理解这本书想说的编程思想到底是什么?已经隐隐约约地感觉到了,但是不能完全抓住。

只有我读了GoF的”设计模式“这本书以后,我才完全掌握这本书所说的编程思想, 应该说,这本书是介于Java基础技术和设计模式之间,因为是从技术细节角度出发,并且追求面向对象编程方法, 似乎将一些简单的事情搞得复杂化,主要是因为没有从OO设计高度深入阐明如此复杂化的原因。

书名:设计模式:可复用面向对象软件的基础
URL:http://www.china-pub.com/computers/common/info.asp?id=684
评论:
这本书应该说比Java编程思想还要难读的一本书,对于没有编程经验的初学者真是 犹如天书一样,这类读者我还是建议多理解一些Java源码,多练习做一些项目,多学习和掌握一些技术细节,当 技术掌握到一定程度,量变会产生质变,思维观点会更侧重于设计,这时读这本书会顺利得多。

很多有经验的程序员经常拥有自己朴素的编程思想,如:编程要有灵活性,要有可预见性,但是关键问题是如何实现呢? 读这本书应该说是从理论上帮助你解决这个问题,它提出了通过设计模式或框架来帮助程序实现系统的灵活性、可重用性、可拓展性和可伸缩性(预见性)。

这本书的引言部分很重要,也很通俗易懂,在引言部分阐述了设计是如何支持变化的,设计模式和框架从字面上理解 好像是限制,不变的意思,是与支持变化正好相反,实际不是这样,设计模式和框架正是用来支持变化的。

一个软件系统可以看成由两个部分组成:“新”和“旧”。所谓“新”就是针对具体应用的新设计和新代码;而所谓“旧”, 就是重用了以前类似功能的软件组件或软件设计,后者正是设计模式和框架大显身手的地方。

读了这本书,确实让有朴素的编程思想的程序员有一种质的飞跃和提高;外国人形容犹如“耶稣重生”感觉, 中国人说:好似练习武功中打通了六脉,重新上了一个新层次,又犹如禅的一次顿悟,思想的乐趣无不体现其中。

书名:实用J2EE设计模式编程指南
URL:http://www.china-pub.com/computers/common/info.asp?id=8368
评论:

前面两本应该说是OO编程基础,有了前面两本书的“功底”,在学习J2EE/EJB时要容易得多,因为J2EE/EJB就是一种框架, 可以从EJB/J2EE具体使用和技术学习中体会仔细框架的概念。

这本书是从J2EE具体实践角度重申了系统可重用性、可拓展性和可伸缩性重要性和如何具体实现,实际上,它是一本 教你如何解决具体问题的书,Wrox网站有其中“安全管理模式”一章的PDF版本,它系统阐述了用户注册系统中单点登陆和 和统一验证的J2EE容器实现,通过J2EE容器实现用户注册系统,就无需编制任何Servlet或ServletFilter代码自己来实现 这两个功能,因为它们已经作为模式融入了J2EE框架设计中了。

通过阅读这本书,将设计模式/框架+J2EE实战两者紧密结合起来,真正实现了编程的灵活性和可预见性。当然该书的实战实例还是少了一些,而且目前从设计模式和框架角度探讨实践应用的书籍不多,这里我就“自私”一下, 本人的“java实用系统开放指南”在这方面做了进一步的探索和论述,即将由机械工业出版社出版,敬请关注。


书名:精通EJB (第2版)
URL:http://www.china-pub.com/computers/common/info.asp?id=4515
评论:
前面三本书都是从设计角度考虑推荐的,设计是编程的灵魂,但是只有灵魂没有肉体支持也是虚的,这本书从具体技术原理角度 讨论了EJB的构成原理和使用方法,注意一定要阅读第2版,第2版是针对EJB 2.0,现在普遍使用的是EJB 2.0技术。

EJB的学习分两个方向:使用方法和构成原理,学习EJB使用方法相对简单一点,因此阅读这本书时,要明确你的宗旨,时刻 记住你的方向,推荐初学者先从学习EJB使用方法入手,因此书中有关原理方面的就跳过,等你学会使用EJB后,再返回研究 “为什么这样做”的问题。

EJB学习使用分Session Bean和Entity Bean以及MDB等几种,学习途径建议下列步骤:
1.Session Bean开始学习(不学习实体Bean),通过书中使用方法,在Session Bean中直接调用SQL语句操作数据库。
2.学习J2EE设计模式中的DAO,将第一步的Session直接调用JDBC升级为Session+DAO+JDBC。
3.选择一种持久层技术,如果愿意学习实体Bean,这时可以研究CMP 2.0或BMP,当然也可以学习其它持久层技术如Hibernate或JDO等, 实现Session+DAO+Hibernate等。

最后,该书还介绍EJB集群计算技术,该技术使用EJB的重要原因之一,通过集群技术,可以实现多台服务器的分布式计算,从而 增强系统的计算能力,而这些都无需开发者自己开发这些技术细节,通过EJB容器配置就自动完成,因此,一个EJB应用系统可以单机 运行,也可以迅速方便地扩展为多台甚至几百台服务器上运行,这就体现了EJB强大的伸缩性。

书名:Core J2EE Patterns (Core Design Series): Best Practices and Design Strategies第2版
URL:http://www.china-pub.com/computers/common/info.asp?id=13414
评论:
其实,EJB/J2EE技术本身不复杂,使用也很简单,之所以很多人认为不好用,我认为还是因为其中参入了设计模式和框架概念, 所以还是有必要了解一下J2EE的核心模式,这是第2版的J2EE核心模式。

曾经收购易趣30%左右股份的eBay公司首席架构师John Crupi参与了编写,eBay已经使用了多年的J2EE系统,在这本书中, John Crupi从eBay J2EE实践角度提出了一些新的设计模式,实际就是他们实践经验的总结。

要完全理解这本书,需要配合具体应用系统,对应Sun的Petstore(http://developer.java.sun.com/developer/releases/petstore/)
学习J2EE的设计模式,是一种好的方式,当然,除了设计模式以外,Petstore其它设计特点是有争议的,例如界面的WAF框架设计 (过于复杂,现在更多使用的是Struts);还有其Web与EJB接口调用框架,都存在一些问题。

个人认为这本书介绍的Service Locator模式、DAO模式、TO模式(DTO模式或VO)是非常实用和重要,几乎每个J2EE系统都必须使用到, 其它有关界面View模式,如果你选择Struts这样MVC模式框架,就不必太关心,因为Struts框架本身已经将这些模式包含进入。

小结:
由于Java/J2EE发展迅速,相关书籍的出版总是有一定滞后,而且理论结合实践的实战方面书籍相对比较少(当然,从一个角度 理解,设计模式可以看成是实践经验的总结),因此,第六本书就虚位以待吧,希望有更好的Java书籍出版。

哈哈,BANQ要出书了啊,到时一定买一本支持一下!

完全同意楼主意见。

另:Applying UML and Patterns.pdf
也是本好书,强烈建议有设计倾向的同仁看看。
这本书有附带的讲座,E文不错的建议听听

同时还有的是
oreilly的enterprise javabeans 第三版
随书带的有各种流行的服务器的workbbook
附:代码(注 :workbook 和代码是免费的)
对熟悉各种j2ee平台的开发很有帮助。


请问彭哥的新书什么时候出来。。?很想早点买本读读了,呵呵

多谢,年内出版。

到时一定捧场喽^_^

都是J2EE啊,呵呵。

目前我认为最好的书因该算是<j2ee设计开发编程指南>

??
加个标签就不能显示了?

书是J2EE设计开发编程指南

好,谢谢了,回家认真看书去...
核心设计模式2,那位大哥有电子书,能否给一份呀!谢谢!
wa_haha@2yo.cn

俺的感觉就是看着过瘾――不懂得煞过去,没准那天做梦就懂了。不过denq既然这样评,看来俺也该看看设计模式了。

关注。。。。

我是初学JAVA的学生,我花了99块大洋买了Bruce Eckel编著,侯捷翻译的《JAVA编程思想》(第二版),看起来那叫费劲,前七章勉强看懂,到了第八章,就怎么也看不下去了。
希望有高手能指点一二,推荐一两本对初级水平的读者来讲实用的JAVA书籍,小弟不胜感激!!!!!

彭哥 我是刚进来的小鸟 我对电脑就只会打游戏 聊天之类简单的常识 说到深的我什么都不会 我想学JAVA 但是我以前没学习个任何编程的内容 我看了下孙鑫的教程 根本就看不懂 不明白他说的那些是什么啊 而且感觉他说的那些东西好想很虚!请问我要学JAVA要学什么基础啊,如何我才能理解JAVA里的那些什么对象、多线程、动态的之类的东西的,给我指条路啊 我该如何学JAVA啊 并请你给我推荐几本书和JAVA的基础视频的(书和视频都要最基础的欧!) 在此谢谢彭哥了啊