标题：Java程序员职场全攻略：从小工到专家
宣传语
懵懂菜鸟如何成长为一名成功的开发人员？
如何在“血雨腥风”的求职大战中脱颖而出？
职场中只要技术过硬就可以吃遍天下吗？
是学招式重要，还是练内功重要？
掌握了哪些技能，才算是真正的高手？
……
资深技术专家，娓娓道来。
内 容 简 介
贾岛的《剑客》一诗有言：“十年磨一剑，霜刃未曾试，今日把示君，谁有不平事？”，从1998年首次接触Java算起，到现在也是十年有余。笔者希望用十年的知识和经验磨出的利剑能够帮助广大读者朋友在实际工作中披荆斩棘、奋勇杀敌。
本书适合于尚在学校对前途感到迷茫的大学生，同时也是初入职场的菜鸟不可多得的修炼指南。对于那些已经在IT江湖闯荡数年的老鸟，本书也提供了很多新的思路与策略。
本书精彩内容导读
◎初窥门径——行业揭秘  ◎雾里看花——职场误区
◎下山之路——有备无患  ◎必须通关的游戏——求职之旅
◎步入江湖——做事的学问 ◎立足江湖——做人的学问
◎百尺竿头，更进一步  ◎江湖多歧路
◎天下功夫出少林  ◎几种自废武功的做法
◎没有必杀技，怎么敢出来混 ◎新锐兵器谱
◎武学奥义   ◎杂项
书 评
作者是一位有才气的人，也是一位技术牛人。他给大家奉献了一本生动有趣、读来轻松活泼、让人大呼过瘾的作品。他不仅告诉我们如何学习Java，更重要的是告诉我们如何能更好地在程序开发这个行业发展得更好，实现个人价值。
——中软集团SOA架构师  王鑫磊
当作者让我给这本书写点评价时，我还真不确定是否应该这么做。但当我看过内容后，我的一切担心都烟消云散了。这本书内容很好，对于那些打算要在Java开发领域发展的人非常有用。这本书和一般的技术图书不同，它更加侧重于从职场角度来探讨Java程序员需要具备的知识和经验。
——用友软件 ERP开发工程师  李迪锋
怎样从一个Java新手过渡到资深工程师？这是每个职场新人的疑惑。我也是从Hello World开始编程的，对其中的辛酸深有体会。看到这本书感觉很亲切，相信“菜Java”们一定能从这本书中受到很多启发。
——北京中科软科技股份有限公司项目经理  段洁男
有人的地方就有江湖，程序员也不例外。如果仅仅很会编程，而不懂得职场的一些奥妙，那也不会得到大的发展。因为现在的系统不可能由一个人独立完成，而必须要有数十人甚至上百人的配合才行。开发类的图书很多，而能给读者介绍职场经验的却很少，《Java程序员职场全攻略——从小工到专家》就很好，给出了很多有益的建议，值得一读。
——广州好易电子联行服务有限公司技术总监  纪超
作者介绍
吴亚峰，毕业于北京邮电大学，后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java开发，有十多年的Java开发与培训经验，主要研究方向是Java EE。现在为Java EE独立软件开发工程师，同时兼任Sun授权Java培训中心认证教师，为数十家著名企业培训了上千名高级软件开发人员，曾编写过《精通NetBeans——Java桌面、Web与企业级程序开发详解》、《Java SE 6.0编程指南》及《30天学通Java项目案例开发》、《30天学通Java Web项目案例开发》等畅销技术书籍。
前 言
每当坐在自己的工作室里看着书架上林林总总的书籍，使用着高性能的工作站进行开发时，我都会回忆起1998年自己刚刚从事Java编程时的探索和艰辛。回想当初，仅仅有一台主频133MHz的组装机，就敢在上面进行企业级程序的开发，就敢在上面跑Oracle。由于缺乏有效的技术指导，同时难以像现在这样获得丰富的技术资料，那时候的学习和开发都是很痛苦的。有时连续熬夜很多天也无法将一个小小的程序调通，开发过程中常常伴随着沮丧和郁闷。
而现在的情况已经大不一样了，目前市面上的IT技术书籍可谓是铺天盖地，广大读者已经不再需要担心无书可读，而是该担心如何选本好书了。但是纵观浩瀚书海，几乎无不例外地将技术讲解作为重点，这样就忽视了一些更值得关注的问题。
· 懵懂菜鸟如何才能成长为一名成功的开发人员？
· 如何在“血雨腥风”的求职大战中脱颖而出？
· 职场中只要技术过硬就可以吃遍天下吗？
· 是学招式重要，还是练内功重要？
· 掌握了哪些技能，才算是真正的高手？
目前市面上能够回答以上这些问题的书籍可谓寥寥无几。不得不承认，对于许多未入门的Java菜鸟和已在Java江湖闯荡数年的开发人员来说，目前最缺少的不是技术书籍，而是职业生涯的规划指南及项目开发思想与经验的分享。
多年的Java开发经历对我自己来说是一笔宝贵的财富，现在有幸将这些闪光的宝贝写进书中。希望那些曾经启发和指导过自己的不论是技术还是非技术上的点点滴滴，也能够和广大读者朋友产生一些共鸣，更好地帮助大家在Java的海洋里乘风破浪。或许海子的那句诗最能表达本书的写作意图：“那幸福的闪电告诉我的，我将告诉每一个人。”
本书内容及特色
本书中有两位主人公：职场新手蔡佳娃和业内高人牛开复。而本书也主要以蔡佳娃的成长历程为主线，通过向读者讲述笨手笨脚的蔡佳娃如何在师兄牛开复的帮助下一步一步成长为独当一面的开发人员，把从菜鸟到大牛这个过程像电影般立体地展示给读者，这其实就是我自己的成长经历。
本书力求将Java开发人员从菜鸟到大牛成长过程中的方方面面都呈现出来，在内容的组织上花费了较长时间。本书分为上下两篇，上篇主要讲述了如何从Java职场的门外汉成功杀入这个英雄辈出的江湖并在其中安身立命、功成名就。其中既有对职场现状的揭秘及行业误区的排除，也有着求职游戏中的详细攻略指南，同时介绍了在职场这个复杂环境中做人和做事的学问。这虽然都是些技术之外的东西，但是却在很大程度上决定了一名开发人员在自己的“职途”上能走多远。
本书的下篇则主要将自己从事Java开发十余年来积累的心得体会分门别类地进行了介绍。有一些是在开发工作中必须精通和掌握的知识，有一些则是从多年编程实践中总结出的“必杀技”，还有一些是在工作中必须杜绝的错误做法。但愿这些技术积累能够帮助读者朋友们在工作中实现鲤鱼跃龙门式的提升，同时也希望那些曾让自己迷茫和困惑的地方，不再成为广大读者朋友前进道路上的绊脚石。
IT行业是个瞬息万变、发展极快的行业，各种新技术层出不穷，跟不上技术车轮的转动就会在前进的道路上与他人渐行渐远，最终彻底消失在大家的视线中。本书中有一章专门介绍当前Java技术中的最新行情，对其或复杂或高深的原理做了简约而完整的介绍，并相应地附以经典示例。读者朋友们可以了解当前江湖中的新锐兵器，并据此确定自己的努力方向。
在编写的过程中，为了让不同水平的读者都能看懂，本书尽量做到讲解通俗，把一些高高在上的技术思想及原理翻译成菜鸟也能看懂的语言，这的确不是一项轻松的工作。在语言的斟酌上，也花费了较多的精力，这是为了让读者朋友不会在阅读的时候感到boring。读者若能从本书生动却不乏深刻的语言中感受到学习的乐趣和享受之处，便是对本书的莫大鼓励了。
这本书虽然主要探讨的是从事Java开发的心得体会，但是一些程序的示例还是要有的。为了不让本书落入一般技术书籍的俗套，在举例的时候尽量保证其简约和经典。因为本书最主要的目的不是让读者朋友们学会表面的技术，而是让大家领悟其中的思想。学习招式在次，提升内力才是最主要的。
经过几个月见缝插针式的奋战，本书终于要交稿了。回顾写书的这几个月时间，不禁为自己能最终完成这个耗时费力的“大制作”而感到欣慰。同时也为自己能将从事Java开发多年积累的宝贵经验以及编程感悟分享给正在开发阵线上埋头苦干的广大Java人而感到高兴。
贾岛的《剑客》一诗有言：“十年磨一剑，霜刃未曾试，今日把示君，谁有不平事？”，从1998年首次接触Java算起，到现在也是十年有余。笔者希望用十年的知识和经验磨出的利剑能够帮助广大读者朋友在实际工作中披荆斩棘、奋勇杀敌。
本书面向的读者
· Java初学者
对于未入门的菜鸟，本书首先介绍了当今IT职场中Java的地位以及Java开发人员的生存现状，并为在校大学生指出了一条从学校到职场的明路。这些内容非常有助于读者朋友快速地了解Java职场并准确定位自己，同时本书介绍的一些求职攻略也可以为求职者成功挺入职场保驾护航。
· 有一定基础的Java开发人员
对于已经在职场立足的新手，本书逐一列举了在职场中Java开发人员所必知必会的能力和一些鲜为人知的编程心法与口诀。除了这些高手之路，本书还指出了一些在工作中会让自己武功全废的错误做法。同时，本书还和读者探讨了在职场中如何更好地为人处世的问题。
· 高级开发人员
对于职场中的高级开发人员，本书所介绍的一些进行Java高级开发的技巧和有关新技术的讨论非常适合高手之间进行分享和交流。高级开发人员也可以通过本书拾遗补漏，在技术水平上精益求精。
关于作者
吴亚峰，毕业于北京邮电大学，后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java开发，有十多年的Java开发与培训经验，主要研究方向是Java EE。现在为Java EE独立软件开发工程师，同时兼任Sun授权Java培训中心认证教师，为数十家著名企业培训了上千名高级软件开发人员，曾编写过《精通NetBeans——Java桌面、Web与企业级程序开发详解》、《Java SE 6.0编程指南》及《30天学通Java项目案例开发》、《30天学通Java Web项目案例开发》等畅销技术书籍。
另外，昊燃、方振宇、陈冠佐、傅奎、陈勤、梁洋洋、毕梦飞、陈庆、柴相花、陈非凡、陈华、陈嵩、承卓、陈先在也参与了本书的编写，在此表示感谢！
致谢
本书在编写过程中得到了唐山百纳科技有限公司Java培训中心的大力支持，同时魏鹏飞、王海峰、苏亚光以及作者的家人为本书的编写提供了很多帮助，在此表示衷心感谢！
本书作者
2009年11月
目 录
上篇  我与江湖
第1章  初窥门径——行业揭秘 2
1.1  IT精英在中国的生存现状 2
1.1.1  外行人眼中的IT人 2
1.1.2  IT行情分布 5
1.1.3  IT语言平台 7
1.1.4  你说我容易吗 10
1.1.5  我挨踢我骄傲 12
1.2  当今主流公司的企业文化 12
1.2.1  欧美企业的特色文化 12
1.2.2  日韩企业的工作模式 14
1.2.3  中资企业的传统特色 15
1.2.4  两种不同的软件外包方式 16
1.2.5  加入什么样的公司 18
1.3  散兵游勇还是团队作战 18
1.3.1  哪样多一些 18
1.3.2  团队和单兵 19
1.3.3  不要停止思考 20
1.4  这条路大家都是怎么走的 20
1.4.1  职位和待遇是怎么升的 20
1.4.2  有干不动的时候吗 23
1.4.3  走的人多了，还会有路吗 24
1.5  大公司，小公司 26
1.5.1  大公司爱专才 26
1.5.2  小公司爱多面手 27
1.6  本章小结 28
第2章  雾里看花——职场误区 29
2.1  到底差不差钱 29
2.1.1  大家都是个什么身价 29
2.1.2  给自己估个好价 32
2.1.3  先挣的是资本，后挣的是钱 34
2.2  谁给我解决户口问题 35
2.2.1  讲讲户口的故事 35
2.2.2  各地户口政策面面观 37
2.2.3  别怕，咱有暂住证呢 39
2.2.4  户口问题小结 40
2.3  我们不是爱加班 40
2.3.1  常态加班是为何 40
2.3.2  你为什么加班 43
2.3.3  让自己不再加班 43
2.4  莫学狗熊掰棒子 44
2.4.1  做过的这辈子永远都不会忘吗 44
2.4.2  为自己维护一个小仓库 46
2.4.3  多写开发心得 48
2.5  本章小结 49
第3章  下山之路——有备无患 50 
3.1  从学生升级到开发人员 50
3.1.1  学校给了你什么 50
3.1.2  咱们还缺啥 54
3.1.3  经验，还是经验 56
3.2  为自己定下目标 58
3.2.1  目标的意义 58
3.2.2  树立目标的学问 59
3.2.3  让自己知道今天该干什么 61
3.3  IT认证的问题 63
3.3.1  认证那点事 63
3.3.2  现在的认证 65
3.3.3  该不该考个证 69
3.4  本章小结 70
第4章  必须通关的游戏——求职之旅 71
4.1  简历靓起来 71
4.1.1  简历不是这样写的 71
4.1.2  写出出色的简历 74
4.1.3  如果是机器筛选简历 77
4.1.4  简历小结 77
4.2  笔试，混可不行 78
4.2.1  初识笔试 78
4.2.2  牛刀初试 80
4.2.3  笔试小结 83
4.3  面试——最难的BOSS 83
4.3.1  面试面什么 83
4.3.2  支招面试 85
4.3.3  面试演习 87
4.3.4  面试小结 92
4.4  试用期——这才是最后一关 92
4.4.1  试用期考查什么 92
4.4.2  多做什么，少做什么 93
4.4.3  试用期小结 94
4.5  本章小结 94
第5章  步入江湖——做事的学问 95
5.1  身为菜鸟 95
5.1.1  打碎牙齿往肚里咽 95
5.1.2  菜鸟不应该自卑 97
5.1.3  一叶障目，不见泰山 99
5.2  锐意进取，菜鸟无敌 101
5.2.1  既是初生牛犊，就别怕虎 101
5.2.2  勤于学习，落后就要挨打 104
5.2.3  菜鸟应该懂得的几件事 106
5.3  知足常乐，健康心态 109
5.3.1  总有你达不到的高度 109
5.3.2  职场爬山论 110
5.3.2  做最好的自己 112
5.4  菜鸟何以菜，大牛何以牛 113
5.4.1  代码量的问题 113
5.4.2  敢于往上走一步 115
5.4.3  升天不成，掉下来也是个半仙 116
5.5  酒香也怕巷子深 117
5.5.1  找到你的优势 117
5.5.2  学会竞争 118
5.5.3  发展才是硬道理 120
5.6  本章小结 121
第6章  立足江湖——做人的学问 122
6.1  新环境有新态度 122
6.1.1  开发人员和厨师 122
6.1.2  做人是为了做事 123
6.2  同事——战友和对手 124
6.2.1  竞争与合作中的做人智慧 124
6.2.2  做一个好同事 127
6.3  上级，不是校长或家长 130
6.3.1  是员工，不是学生 130
6.3.2  上级讨厌的员工 130
6.3.3  怎样与上级处理好关系 135
6.4  新人和下属，曾经的你 136
6.4.1  准备工作 136
6.4.2  学着做个好领导 137
6.4.3  被夹在自己的上级和下级之间怎么办 139
6.5  客户，领导内行的外行上帝 140
6.5.1  如何招待上帝 140
6.5.2  不要这样对待上帝 142
6.5.3  如何对付不可能完成的任务 144
6.6  学着处理和MM的关系 145
6.6.1  这个行业的男女比例 145
6.6.2  如何面对异性员工 146
6.7  本章小节 146
第7章  百尺竿头，更进一步 147
7.1  技术不是万能的 147
7.1.1  为何IT是个服务业 147
7.1.2  业务流程要清楚 147
7.1.3  专业领域的知识要了解 149
7.1.4  软件系统的操作方式 149
7.2  书是人类进步的阶梯 150
7.2.1  还要不要读书学习 150
7.2.2  选本好书不容易 151
7.3  解决问题的方法 152
7.3.1  正招和歪招 153
7.3.2  优先使用正招 154
7.3.3  正招不够，歪招也可以上 156
7.4  软件产品的目标 159
7.4.1  实现功能是底线 159
7.4.2  提升性能带来质的飞跃 160
7.5  多多参加技术大会和沙龙 164
7.5.1  何为技术大会 164
7.5.2  我们为什么去技术大会 165
7.5.3  技术大会PK 165
7.5.4  技术沙龙 169
7.6  本章小结 169
第8章  江湖多歧路 170 
8.1 “学院”派和“企业”派 170
8.1.1  何为“学院”派 170
8.1.2 “企业”派的实干 173
8.1.3  一起来做“企业”派 176
8.2  关于“剑宗”和“气宗”的讨论 177
8.2.1  何为“剑宗” 177
8.2.2  何为“气宗” 178
8.2.3  奇技淫巧不如提升修为 180
8.3  有自己的平台才是王道 181
8.3.1  关于框架的纯“拿来主义” 181
8.3.2  项目的分割 184
8.4 “大而全”还是“精而深” 186
8.4.1 “大而全”和“精而深”矛盾吗 186
8.4.2 “大而全”托出“精而深” 188
8.5  本章小结 189
下篇  笑傲江湖
第9章  天下功夫出少林 192 
9.1  Java EE开发人员必知必会 192
9.1.1  坚实的基础——核心Java 192
9.1.2  只会Java可不行——大牛的百宝囊 195
9.2  Java ME开发人员必知必会 197
9.2.1  了解不同平台对Java ME的支持 198
9.2.2  游戏开发的基础知识 200
9.2.3  网络编程知识 205
9.2.4  3G、Android对Java ME开发人员的挑战和机遇 206
9.3  当下流行EE框架揭秘 207
9.3.1  Struts和WebWork那点事 208
9.3.2  Tapestry框架 211
9.3.3  Spring——不可多得的好框架 212
9.3.4  Hibernate——从关系世界到对象世界 215
9.4  大型项目青睐的技术与平台 217
9.4.1  JSF框架 217
9.4.2  EJB 3.0业务层技术 219
9.4.3  JPA持久层技术 223
9.4.4  常见应用服务器简介 224
9.4.5  Java企业平台的荣耀之路 225
9.5  如何学好框架 226
9.5.1  全面了解各项功能 226
9.5.2  彻底研究工作机理 227
9.6  本章小结 228
第10章  几种自废武功的做法 229 
10.1  相信谬论 229
10.1.1  说出来别不信——链表和数组的速度问题 229
10.1.2  Java真的比C/C++慢吗 232
10.2  迷信工具，缺乏纯代码能力 234
10.2.1  迷信ORM 235
10.2.2  神化IDE 237
10.3  浅尝辄止，孤陋寡闻 240
10.3.1  finally的忽视 240
10.3.2  PreparedStatement的误解 243
10.3.3  管理数据库连接不知连接池 246
10.4  忽视内存管理 250
10.4.1  对象的3种引用 251
10.4.2 “小肥猪”问题 255
10.5  看了就不要再犯的错误 256
10.5.1 “+”惹的祸 256
10.5.2  魔法数字 258
10.5.3  代码复制师的渺茫前途 259
10.5.4  老寿星变量 260
10.6  本章小结 262
第11章  没有必杀技，怎么敢出来混 263 
11.1  精通SQL 263
11.1.1  掀起SQL的盖头来 263
11.1.2  强大的SQL 265
11.1.3  SQL优化问题 268
11.1.4  当下主流的数据库产品 270
11.2  拿下正则式 272
11.2.1  细说正则式 273
11.2.2  正则式在Java中的运用 277
11.2.3  正则式在JavaScript中的运用 281
11.3  不会用Ant的开发人员不是好Developer 284
11.3.1  Why Ant 284
11.3.2  Ant初体验 286
11.4  浅谈设计模式 288
11.4.1  设计模式的重要性 288
11.4.2  MVC设计模式 289
11.4.3  单例模式 292
11.4.4  最终守护者模式 293
11.5  本章小结 295
第12章  新锐兵器谱 296
12.1  面向服务的体系架构（SOA） 296
12.1.1  对面的SOA看过来 296
12.1.2  零距离接触Web Service开发 299
12.1.3  博采众长之集大成者——CXF 302
12.1.4  英雄不问岁数——Axis 2 306
12.1.5  走近ESB——企业服务总线 309
12.2  富客户端应用（RIA） 313
12.2.1  从平淡到酷炫——RIA与AJAX 313
12.2.2  酷炫背后的基石——核心JavaScript 316
12.2.3  AJAX的开发利器——Dojo 319
12.2.4  AJAX的最酷代表作——GoogleMap 323
12.2.5  Web 2.0时代的异军突起——Mashup 326
12.2.6  RIA殿堂的技术新贵——JavaFX 328
12.3  搜索引擎技术 337
12.3.1  Lucene开源项目 337
12.3.2  Nutch框架 342
12.4  本章小结 345
第13章  武学奥义 346 
13.1  单元测试的利器——JUnit 346
13.1.1  JUnit简介 346
13.1.2  单枪匹马，赤膊上阵——JUnit的单独使用 347
13.1.3  岂曰无衣，与子同袍——JUnit和Ant的联合 350
13.1.4  得道者多助——JUnit在Eclipse和NetBeans中的使用 352
13.2  版本管理 354
13.2.1  版本不可一日不控 354
13.2.2  沙场秋点兵之版本控制系统 355
13.2.3  版本控制系统与IDE的协作 356
13.3  UML建模语言 357
13.3.1  UML就这么回事 358
13.3.2  UML之实战IDE 359
13.4  大型服务器操作系统 360
13.4.1  UNIX平台 360
13.4.2  Linux平台 361
13.4.3  Windows Server平台 362
13.5  集群与负载均衡 362
13.5.1  集群 363
13.5.2  幂等操作 364
13.5.3  我们的程序运行在哪 365
13.6  虚拟化与云计算 366
13.6.1  举杯邀明月，对影成三人——虚拟化 367
13.6.2  云中谁寄锦书来——云计算 368
13.7  本章小结 370
第14章  杂项 371 
14.1  专业英语不能不熟练 371
14.1.1  向高新技术看齐 371
14.1.2  等到中文版的时候 372
14.1.3  做一个大牛的需要 373
14.2  维护大脑这个数据库 373
14.2.1  书到用时方恨少 373
14.2.2  让积累成为一种习惯 374
14.2.3  搜索引擎的使用 375
14.3  IT人也要不务正业 379
14.3.1  不懂数学岂不是很糟糕 380
14.3.2  谁说物理是白学了 382
14.3.3  一起来不务正业吧 383
14.4  读学术论文 383
14.4.1  别怕我，我是好人 383
14.4.2  醍醐灌顶，如坐春风 385
14.5  本章小结 386