入门/基础篇:
《 Java2核心技术(第6版)卷I:基础知识 》(CORE JAVA)
初学Java的经典著作!通过它可以快速掌握Java编程,这本书也同样适合Java程序员用作参考书,因为它涵盖的范围非常广,包括从正则表达式到高性能I/O这样的主要新特性。
《 Java编程思想(第2版) 》(Thinking in Java)
这本书受到全球程序员的广泛认同,它的前两版曾多次荣获Software Development , JavaWorld等机构颁发的大奖,《 Java编程思想(第2版) 》在2003年《程序员》举办的年度评选活动中获得冠军。
这本书全面介绍了从Java的基础语法到最高级特性,并针对Java 1.4版做了更新。在内容上有广度,也有一定深度,不仅适合入门,也可供深入学习用,同时作者还着重阐释了面向对象设计的理念。
作者Eckel开放了这本书的电子版,很值得我们尊敬,树立了一个慈祥的教育家的形象,不过如果要系统学习的话最好买一本纸版,否则太累眼。
《 Java编程语言(第三版) 》(The Java Programming Language)
这本书由“Java之父”James Gosling亲自参与编写,完全覆盖了Java语言当前版本的特征和类库,可以作为Java语言的入门向导,也可作为高级Java开发及Java语言教学的参考用书。
《 Java技术手册(影印版) 》
用这本书也非常好!不过可惜的是目前还没有第四版的中文版。考虑到第三版中文版已经有不少时间,所以在这我们就不向大家推荐了。
个人建议:
初学编程:《 Java2核心技术(第6版)卷I:基础知识 》,如果英文好可看《 Java技术手册(影印版) 》
体会Java的思想:《 Java编程思想(第2版) 》
需要一本全面的参考手册:《 Java2核心技术(第6版)卷I:基础知识 》《 Java编程思想(第2版) 》《 Java编程语言(第三版) 》
提高篇:
《 Effective Java中文版 》
这本薄薄的小书不仅获得了2002年度Jolt大奖,还受到Java之父的推荐。它继承了《Effective C++》的名字和风格,Bloch为我们带来了57条极具实用价值的Java经验规则,书中每条规则都以简短、独立的小文章形式出现,这些小文章包含了详细而精确的建议,以及对语言中许多细微之处的深入分析,并通过例子代码加以进一步说明。这本书实践性很强,作者把开发中的经验和模式进行讲解,并举实例进行说明。中文版由潘爱民翻译,保证了译本的质量。
如果想对这本书了解更多可看下一本书Practical Java的评价
《 Practical Java中文版 》
这是本书译者之一刘永丹的推荐:
大家好!我是刘永丹,是本书的译者之一。
目前我的手上没有Practical Java的简体版,只有繁体版。大家比较关注的一个问题,是此书与Effective Java的关系,这也是我在翻译此书经常想到的问题。我想以这两本书的读者身份就这一点谈一些自己的体会。不是为了推销此书:),只是希望在大家选书的时候提供一些参考。
从原版出版的时间来看,Practical Java早于Effective Java,可以说是Java领域中Effective风格书籍的开山之作。此书之所以没有取名Effective Java,我猜测有两个原因:一个是Peter Haggar谦虚的性格,二是尽管编排体例模仿了Effective C++,但写作的角度与Effective C++稍有不同。可以说取名Practical Java是很贴切的,这个问题我后面会再说到。后来Joshua Bloch的Effective Java也采用了Effective的编排体例,可谓英雄所见略同,并获得了Jolt大奖,名头大大盖过了Practical Java。不过买书不应完全凭借名气和奖项,还是要考虑读者本身的实际需要。下面我就简单比较一下这两本书。
预期的读者。这两本书都不是面向初学者的,而是面向中级读者。但我的体会,二者还有些许差别。Effective Java秉承了Effective C++的一贯特色,专门挖掘有深度的专题,读者最好具有较好的编程基础和经验,例如对设计模式的了解。Practical Java则侧重对程序员的实践的指导,一旦有了Java的基础,几乎就可以阅读此书了,并从中直接借鉴经验。如果说刚入门的读者经验值为1,编程专家经验值为10,那么Effective Java比较适合4、5以上经验值的读者,而3、4经验值的读者就已经可以从Practical Java享受到阅读的快乐了。
覆盖的范围。这两本书的取材确有重复,大约有一半的比例!但是(我一定会说“但是”的,对吧?:)),二者阐述的角度不同。Effective Java重在内容的深度剖析,Practical Java则在说理的浅白上下足功夫,一个“深入”,一个“潜出”,实在是难分伯仲。我有一个体会,无论我怎样在一本书上用功,在第二遍阅读时还是会发现原来遗漏的思维死角,一个有效的方法是同时阅读同一专题、不同风格的两本书,互相印证。当然,我不想引诱每个读者同时买这两本书,个人视自己的情况和喜好来定。
写作的风格。这个问题主要凭借每个人的感觉了。我认为Effective Java比较严谨,举例子也中规中矩,可以放在案头,仔细研读。Practical Java则轻松自然,书中的例子非常容易理解,即可放在床头随意阅读,也可放在计算机旁,需要时参考。Practical Java还有一个令我喜爱的特点,将代码生成的bytecode展示出来,使许多问题一目了然。
那么,说了这么多,到底该买不买Practical Java呢?我有如下建议:
1 如果你阅读过了Effective Java,并且感到轻松自如,那么不必破费了(当然买来收藏也不错:)),倘若在阅读时有一知半解之处,Practical Java或许是不错的选择。
2 如果你是刚入门的Java程序员,有过一段时间的编程经历,先考虑Practical Java,再考虑Effective Java,这样的阅读经历会顺畅一些。
3 如果你还没有Java经验,但是有较好的C++背景,首选Practical Java,因为Effective Java对你的帮助不会那么直接。(怎么说来说去都是Practical Java,显然是“托”:))
4 如果你有丰富的计算机编程经验,比较宽阔的专业知识面,Effective Java更适合你。
尽管我是本书的译者,但更多时候我只是个读者,上面的内容只是建议,仅供参考。
《 深入Java虚拟机(原书第2版) 》(Inside the Java Virtual Machine)
看名字就知道了,这本书告诉你Java虚拟机为你做了什么,如果要成为高手,这是一条必经之路。不过,如果你的时间很宝贵,就没有必要看它了。
《 Java与模式 》
这本书是阎宏博士写的,这书像一块巨大的砖头,即可学习知识又可以用来当武器。这本书最大的特点就是它将中国传统文化与最流行的设计概念??“模式”相结合,熊节经理曾经说过:由于缺乏一种文化沉淀,中国人对“模式”的理解通常会有些困难。看了这本书就没有这个问题了,中国人写中国事,讲解模式的例子是中国人耳熟能详的孙悟空之类的,凭只要搞过几个月面向对象,看懂这些东西都不成问题!但要能融为自己的知识,实际应用到开发中去还需要自己的理解、经验。