﻿<?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 CAN DO IT-随笔分类-Java</title><link>http://www.blogjava.net/kim/category/18849.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 04:05:10 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 04:05:10 GMT</pubDate><ttl>60</ttl><item><title>Java 专业人士必备的书籍和网站列表</title><link>http://www.blogjava.net/kim/archive/2007/01/27/96257.html</link><dc:creator>大熊猫</dc:creator><author>大熊猫</author><pubDate>Sat, 27 Jan 2007 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/kim/archive/2007/01/27/96257.html</guid><wfw:comment>http://www.blogjava.net/kim/comments/96257.html</wfw:comment><comments>http://www.blogjava.net/kim/archive/2007/01/27/96257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kim/comments/commentRss/96257.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kim/services/trackbacks/96257.html</trackback:ping><description><![CDATA[
		<span class="tpc_content">
				<font size="2">转：javathink.org<br /><br />对于 Java™ 语言开发人员来说，信息过量是一个真正的问题。每个新入行的程序员都要面临一个令人畏缩的挑战：要进入的行业是一个具有海量知识的行业。要了解的东西简直太多了。对于有经验的老手来说，情况只有些微好转。知识量总在增大，仅仅跟上进度就是一个挑战。如果有一份专业人士必备的书籍和网站列表该有多好！本文就是这个列表。它包含了每个专业的 Java 语言程序员在书架或浏览器书签中必备的最重要的书籍和网站。<br />这些都是您书架上必备的书和应该经常使用的 Web 链接。时间是一项重要的资源，本文帮您回避那些分心的事情，把时间专注于最有益于您作为Java 语言程序员职业生涯的信息源。尽管有多少程序员就有多少他们最喜欢的参考资料，但本文收集的这些都是优中选优，来源于我书架上的私家珍藏和许多 Java 专家的推荐。<br /><br />我考虑了两种组织这份参考资料列表的方法。我本可以通过主题领域来组织，这也许很有帮助，但主题列表很快就会变得不实用。相反，我选择了另一种方法：通过类型来组织，即书籍和 Web 站点。<br /><br />总的来讲，有经验的老手们用 Web 站点来跟踪行业的走势。书籍、文章和论文有助于跟上潮流，但它们总体上更适合于基础学习。极富创造性的书籍偶尔会撼动一两个基础性的东西。这样的书也在本列表之列。<br /><br />需要提出的一点警告是，专注于 Java 语言的书籍和 Web 站点数量巨大。您钟爱的未必在这份列表里。那并不意味着它们不好。它们只是不在这份列表里而已。可能是因为我还不知道它们。也可能是因为我不认为它们能够算得上是重要资源。不包含一些参考资料是一个评判问题，但如果不这样的话，您也许就要花几小时来拖动滚动条，还要花上成千上万美元来买书。如果您作为一个专业的 Java 程序员，有一些常用的优秀参考资料，一定要让我知道这些资料。这份列表一直都在更新中，您提出的那些也许就会被收录进去。<br /><br />书籍<br /><br />每个程序员都会有一些由于经常被当作专业资料参阅而磨坏的书。下列书籍应该是 Java 语言程序员的书架上必备的。书很贵，所以我有意将这份列表弄得很短，仅限于重要书籍。<br /><br />Thinking in Java (Bruce Eckel)<br /><br />Thinking in Java, 3rd edition （Bruce Eckel; Prentice Hall PTR，2002 年）<br />Java 编程思想：第3版 （陈昊鹏 等译; 机械工业出版社，2005 年）<br />Eckel 的书对于学习如何在 Java 语言环境中使用好面向对象技术极其实用。书中大量的代码样例解释了他所介绍的概念。文字出自一个并不认为 Java 技术总是正确答案的人，所以相当地实用。Eckel 具有多种语言的大量经验，还有用面向对象方式进行思考的扎实技能。本书将这些技能放到实用的 Java 语言环境中。他还在写一本新书，名为 Thinking in Enterprise Java。<br /><br />Effective Java (Joshua Bloch)<br /><br />Effective Java: Programming Language Guide （Joshua Bloch; Addison-Wesley，2001 年）<br />Effective Java 中文版 （潘爱民 译; 机械工业出版社，2003 年）<br />本书是理解优秀 Java 程序设计原则的最佳书籍。大多数材料从其他的 “学习 Java ” 的书中根本找不到。例如，Bloch 书中关于覆盖 equals() 这一章是我读过的最好的参考资料之一。他也在书中包括了很实用的建议：用接口替代抽象类和灵活使用异常。Bloch 是 Sun 公司 Java 平台库的架构师，所以他透彻地了解这门语言。事实上，他编写了该语言中大量有用的库。本书必读！<br /><br />The Java Programming Language (Ken Arnold, James Gosling, David Holmes)<br /><br />The Java Programming Language （Ken Arnold，James Gosling，David Holmes; Addison-Wesley，2000 年）<br />Java 编程语言（第 3 版） （虞万荣 等译，中国电力出版社，2003 年）<br />这也许是能弄到的最好的 Java 入门读物。它并不是一个标准规范，而是一本介绍每门语言特性的可读书籍。这本书在严谨性和教育性方面权衡得很好，能够让懂编程的人迅速被 Java 语言（和其丰富的类库）所吸引。<br /><br />Concurrent Programming in Java: Design Principles and Patterns (Doug Lea)<br /><br />Concurrent Programming in Java: Design Principles and Patterns, 2nd edition （Doug Lea; Addison-Wesley，1999 年）<br />Java 并发编程—设计原则与模式（第二版） （赵涌 等译，中国电力出版社，2004 年）<br />不是每个开发人员都需要如此细致地了解并发性，也不是每个工程师都能达到本书的水准，但却没有比本书更好的关于并发性编程的概述了。如果您对此感兴趣，请从这里开始。Lea 是 SUNY 的一名专业程序员，他的和并发性有关的作品和想法都包含在了 JDK 5.0 规范（引自 JSR166）中，所以您大可放心，他所说的关于有效使用 Java 语言的建议是值得一听的。他是一个很善于沟通的人。<br /><br />Expert One-On-One J2EE Design and Development (Rod Johnson)<br /><br />Expert One-On-One J2EE Design and Development （Rod Johnson）<br />WROX: J2EE 设计开发编程指南 （魏海萍 译，电子工业出版社，2003 年）<br />对于刚接触 J2EE 的人来说，这是唯一的一本如实反映这项技术的书。本书收录了多年的成功经验和失败经验，不同于其他许多作者，Johnson 乐于将失败的经验公诸于众。J2EE 常常都被过度使用。Johnson 的书能帮您避免这一点。 <br /><br />Refactoring (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts)<br /><br />Refactoring: Improving the Design of Existing Code （Martin Fowler，Kent Beck，John Brant，William Opdyke，Don Roberts; Addison-Wesley，1999 年）<br />重构：改善既有代码的设计（中文版） （侯捷 等译，中国电力出版社 ，2003 年）<br />Fowler 写了几本现已出版的最流行的编程书，包括 Analysis Patterns。他的关于重构 的书是这一主题的基本书籍。重构代码是被程序员忽略的训练，但却是程序员最直观的想法。重构是在不改变代码结果的前提下改进现有代码的设计。这是保持代码整洁的最佳方式，用这种方法设计的代码总是很容易修改。什么时候进行重构呢？当代码“散发出味道”时。Fowler 的书里满是 Java 语言代码的例子。许多 Java 语言集成开发环境（IDE）（包括了 IBM 的 Eclipse）都将 Fowler 的重构包含了进去，每一个都使用他的重构名命名，所以熟悉如extract method 等重构方法还是很值得的。<br /><br />Design Patterns (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)<br /><br />Design Patterns: Elements of Reusable Object Oriented Software （Erich Gamma，Richard Helm，Ralph Johnson，John Vlissides; Addison-Wesley，1997 年）<br />设计模式：可复用面向对象软件的基础 （李英军 等译，机械工业出版社 ，2005 年）<br />这是一本在专业程序员圈子里更为有名的书，基于作者共同的绰号，这本书被认为是 “四人帮（GOF）之书”。模式是思考和解决普通编程问题时可以重用的方式。学习模式是一门学科。使用好模式（或知道什么时候不 使用模式）是一项技能。忽略模式则是错误的。书中所有的例子都以 C++ 表示，但 Java 语言是从那里诞生的，让 Java 语言程序员由此联系到如何在 Java 语言中实现这些模式相对简单一些。熟悉模式并了解如何使用好模式使编程更加简单。这使得和其他程序员交流也更简单，因为在针对通用问题的通用解决方案中，模式是描述解决方案中彼此协作的大量相关编程概念的快捷方式。一些更为通用的方式，如工厂方法 则是普便存在的，甚至存在于 Java 语言本身。关于明智使用模式的这个主题，也可以阅读 Joshua Kerievsky 的 Refactoring to Patterns，该书称可以让代码来告诉您何时实现模式。<br /><br />Patterns of Enterprise Application Architecture (Martin Fowler)<br /><br />Patterns of Enterprise Application Architecture （Martin Fowler; Addison-Wesley，2002 年）<br />企业应用架构模式 （王怀民 等译，机械工业出版社 ，2004 年）<br />比起小型、一次性项目来说，企业开发当然代表了更大的挑战。那并不意味着企业开发带来的所有挑战都是新挑战。事实上有些时候，这项开发已经 是以前完成过的了。Fowler 做了很多个这样的项目。他的书提到了一些通用解决方案，并提供了关于使用、折中和可选方案的指导。Fowler 在书中包含了一些熟悉的模式，如模型视图控制器（MVC），他也提供了一些您也许不了解的模式，如处理 Web 站点上特定页面请求或行为请求的 Page Controller 模式。正如您对待大多数模式一样，一旦您读过许多模式，您就会认为 “我已经知道那个模式了” 。也许是这样，但有一个用来引用模式的通用表达方式还是很有帮助的。在有多个组件（由不同人开发）的大型项目中，该类引用是一项很好的帮助。<br /><br />UML Distilled (Martin Fowler)<br /><br />UML Distilled: A Brief Guide to the Standard Object Modeling Language （Martin Fowler; Addison-Wesley 2003 年）<br />UML精粹：标准对象语言简明指南（第3版） （徐家福 译，清华大学出版社 ，2005 年）<br />对于专业的程序员来说，UML 是一门很重要的通用可视化沟通语言，但是它被过度使用和草率地滥用了。您无需对使用 UML 沟通了解太多。Martin 对 UML 的提炼为您提供了最核心的东西。事实上，前后的封页提供了常规基础上可能使用到的所有东西。该书中 UML 例子的代码都是 Java 代码。<br /><br />Test-Driven Development: By Example (Kent Beck)<br /><br />Test-Driven Development: By Example （Kent Beck; Addison-Wesley 2002 年）<br />测试驱动开发（中文版） （崔凯 译，中国电力出版社 ，2004 年）<br />测试优先编程将使编程发生革命性变化，能助您成为更好的程序员。在写代码之前编写测试开始很难，但却是一项威力强大的技能。通过优先编写测试，可使代码更加简单，并确保从一开始它就能工作（Beck 实践着他提倡的测试优先，与人合写了 JUnit，这是 Java 语言最流行的测试框架）。Beck 的书是权威的参考资料，扩展了的 Money 例子也用 Java 语言写成。Beck 详述了如何用测试优先进行 思考（这也许是许多程序员首先遇到的障碍）。<br /><br />The Pragmatic Programmer: From Journeyman to Master (Andy Hunt and Dave Thomas)<br /><br />The Pragmatic Programmer: From Journeyman to Master （Andrew Hunt 和 David Thomas; Addison-Wesley 1999 年）<br />程序员修炼之道——从小工到专家 （马维达 译，电子工业出版社 ，2004 年）<br />做一个纯粹的面向对象开发人员有其优势所在。在当今复杂的社会中，作为 Java 语言开发人员，为完成任务常要妥协。Hunt 和 Thomas 探讨了如何不将真正重要的东西妥协掉而完成任务。这不是一本关于 Java 语言的书，而是 Java 语言开发人员重要的思想读物。例如，我认为没从“要解决问题，而不是推卸责任”这句忠言中受益的程序员，不能像个自豪的艺术家一样在他的杰作上签上大名。<br /><br />Peopleware: Productive Projects and Teams (Tom DeMarco and Timothy Lister)<br /><br />Peopleware: Productive Projects and Teams （Tom DeMarco，Timothy Lister; Dorset House，1999 年）<br />人件（第2版） （UMLChina 翻译组 译，清华大学出版社 ，2003 年）<br />这份列表中的其他所有书籍都至少和技术有些相关。这本书却不是。在所有技术行话和首字母缩略词的海洋中，有时软件开发人员和经理们会忘记：是人 制造了软件。DeMarco 和 Lister 向我们提醒了这一事实，也向我们提醒了形成这一区别的原因。这不是一本关于一门特定编程语言的书籍，但却是每个 Java 语言程序员都应该读的书。关于 “累死程序员如何让经理们适得其反” 还有许多其他的好书，但这是最好的一本。<br /><br /><br /><br />Web 站点<br /><br />Web 站点的数目浩如烟海，如果您想要消化其中的内容，穷毕生之力也难以全部访问。包含 Java 语言某方面内容的详尽的网站列表会大得离谱。下列站点都是可靠、真实的。<br /><br />Sun 的 Java 技术站点<br /><br />Sun 的 Java 语言站点 <br />这是 Sun 的 Java 语言主站。作为 Java 语言开发人员，您会发现自己频繁地访问此站点。下列链接特别重要，特别是对新入行的 Java 语言开发人员： <br /><br />New to Java Center <br />New to Java Center <br />New to Java Center 存放了许多循序渐进的 Java 技术资源链接。如果您刚接触这门语言，这是一个好的起点。 <br />教程和代码库 <br />Java Tutorial <br />这里有大名鼎鼎的 Java Tutorial，以及关于 Java 语言各个方面（例如 Collection）的其他教程。 <br /><br />IBM developerWorks<br /><br />IBM 的 developerWorks <br />推销自己也许有些厚脸皮，但 developerWorks 是一项巨大的资源，收录了大量 Java 语言工具和技术的教程和文章。其内容从初学者指南到学习这门语言到高级并发性技术。可以根据主题搜索内容，然后根据类型浏览。<br /><br />Apache Software Foundation <br /><br />Apache Software Foundation <br />Apache 站点是许多可重用库（通用领域）和工具的主页，这些库和工具帮助 Java 开发人员进行开发。这里的内容全都是开放源码，所以尽管下载想要的吧！许多极其流行的 Java 语言库和工具（如 Struts、Ant 和 Tomcat）都始于 Apache 项目。Jakarta 专区汇聚了大多数新兴的 Java 语言材料。<br /><br />Eclipse.org<br /><br />Eclipse <br />有几个好的 Java 语言集成开发环境（IDE）。Eclipse（来自 IBM）是最新的 IDE 之一，它很快成为 Java 语言开发的首要 IDE。它完全是开源的，这意味着它是免费的。该站包含了学习如何有效使用 Eclipse 的各种参考资料。这里还有关于 Standard Widget Toolkit（SWT）的信息，SWT 是相对于 Swing 来说更加轻量级的选择。<br /><br />Eclipse 插件中心和 Eclipse 插件<br /><br />Eclipse 插件中心 和 Eclipse 插件 <br />Eclipse 基于插件架构。事实上，插件是 Eclipse 的 Java 语言开发组件。但有差不多上千个插件，从 Web 开发的插件到在 Eclipse 环境中玩游戏的插件。这两个站点分类列出了大多数插件，可以进行搜索。它们是很棒的资源。如果您想在 Eclipse 开发环境中弄点新东西，幸运的话有某个插件可能已经实现，从这两个站点能找到想要的插件。这两个站点都允许评论插件，这样您就可以知道哪些插件好，哪些值得一试。<br /><br />JUnit.org<br /><br />JUnit.org <br />Junit 是 Java 语言中一个基本的单元测试框架。该站点包含了 Junit 最新最棒的版本，外加大量有关测试（Java 语言或者其他语言的）各个层面上（针对桌面应用程序、Web 应用程序、J2EE 应用程序等）的其他资源。如果您想找测试资源，这里就是最佳起点。 <br /><br />TheServerSide.com<br /><br />TheServerSide.com <br />如果您要(或将要)从事服务器端 Java 语言的开发，此站点是一处举足轻重的资源。您可以到这里找到有关 JBoss、J2EE、LDAP、Struts 和大量其他主题的文章，并且都是完全可检索的。这些文章不仅仅是简单描述 Java 语言的特征或者支持的库。它们更进一步地描述了库的新奇用法（如使用 Jakarta Velocity 作为规则引擎，而不是模板引擎）。它们也提供了有关 Java 语言现状的连续评论（当前的一篇文章是由 Tim Bray 所写的 Java is boring ）。该站点更好的通用功能之一是对 Java 语言工具和产品（应用服务器等）的矩阵式比较。 <br /><br />Bruce Eckel's MindView, Inc.<br /><br />Bruce Eckel's MindView, Inc. <br />Eckel 写了几本 “用 …… 进行思考” 的书，内容关于 Java 语言、Python 和 C++ ，当我学习 Java 语言时，他的 Thinking in Java 对我尤其有帮助。它很实用并切中要害，在“在 Java 语言环境中如何面向对象思考”方面具有卓识。您可以从此站点免费下载他所有书籍的电子版。他也写了许多好文章，并且他把这些文章的链接都放到了这里（包括关于 Jython、Java 和 .NET 比较等内容的文章）。<br /><br />ONJava.com<br /><br />ONJava.com <br />O'Reilley 历年来出版了一些有关编程语言和工具的优秀书籍。他们的专注于 Java 语言的网站也不错。它有些有关各种 Java 语言工具（如 JDOM 和 Hibernate）、Java 平台（如 J2SE 和 J2EE）不同领域不同部分的文章。全部都可以被检索到。他们有优秀的文章和教程。该站点按主题排列。例如有 Java 和 XML、Java Security、Wireless Java 和 Java SysAdmin。该站点也有到 O'Reilley Learning Lab 的链接，在那里您能获得在线参考资料（Java 语言相关和其他的）。那些不是免费的，但是许多都面向大学认证。因此您可以以一种很方便的方式来学习技能，并得到一些认证。 <br /><br />java.net<br /><br />java.net 社区 <br />java.net 社区有多个“社区”，有特定于主题的论坛和文章。例如 Java Desktop 社区有各类与 Java 语言桌面开发相关的资料。Java Patterns 社区作为一个门户，也许对提供 Java 语言的模式资源相当感兴趣。还有一个 Java User Groups (JUG) 社区，在那里能找到有关创建、加入和管理一个 JUG 的信息。 <br /><br /><br /><br /><br />结束语<br /><br />任何 “好的”、“关键性的” 或者 “重要的” 参考资料列表都注定是不完整的，本文的列表也未能例外。 Java 语言的书籍数目众多，当然，万维网也很庞大。除本文所列的参考资料之外，还有很多用于学习 Java 语言的参考资料。但如果您拥有了这里所提到的所有书籍、网站、文章或者教程，您应当已经拥有了一个使您良好开端并助您登堂入室的实用宝库。<br /><br />最后，要成为一个能力日增和高效的 Java 语言开发人员，方法就是用它工作，动手来尝试。如果有一个教程详细介绍了所需创建的软件的每一部分，您很可能并没得到多少好处。有时，您可能得走自己的路。在成功地尝试了一些新的东西之后，您可能想要写一篇文章、教程或者一本书来分享您所学到的。</font>
		</span>
<img src ="http://www.blogjava.net/kim/aggbug/96257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kim/" target="_blank">大熊猫</a> 2007-01-27 12:12 <a href="http://www.blogjava.net/kim/archive/2007/01/27/96257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>