《深入分析Java Web技术内幕(修订版)》主要围绕Java Web 相关技术从三方面全面、深入地进行了阐述。首先介绍前端知识,即在JavaWeb 开发中涉及的一些基本知识,包括Web 请求过程、HTTP、DNS 技术和CDN 技术。其次深入介绍了Java 技术,包括I/O 技术、中文编码问题、Javac 编译原理、class 文件结构解析、ClassLoader 工作机制及JVM 的内存管理等。最后介绍了Java 服务端技术,主要包括Servlet、Session 与Cookie、Tomcat 与Jetty服务器、Spring 容器、iBatis 框架和Velocity 框架等原理介绍,并介绍了服务端的一些优化技术。
本书不仅介绍这些技术和框架的工作原理,而且结合示例来讲解,通过通俗易懂的文字和丰富、生动的配图,让读者充分并深入理解它们的内部工作原理,同时还结合了设计模式来介绍这些技术背后的架构思维。
阿里巴巴集团技术丛书重磅问世。大型互联网公司Java Web开发应用实践经验结晶,深入学习无线端应用开发实例。技术大牛范禹、玉伯、毕玄联合推荐!
从1亿到10亿,如何突破技术瓶颈?《深入分析Java Web技术内幕(修订版)》提供了思路、方法和技巧,深入原理细节与设计模式,并提供大量实例分享。
知其然,并知其所以然,值得拥有!
专 家 点 评
《深入分析Java Web技术内幕(修订版)》的内容涉及从HTTP、Servlet、模板渲染、数据层、容器到JVM 等Java Web开发的各个方面,这些问题是许令波在日常工作中经常遇到的,我想也是所有Java Web开发人员都会遇到的。《深入分析Java Web技术内幕(修订版)》最大的特点就是让Java Web 开发人员对整个开发过程所涉及的技术能有一个完整的脉络图,从前端浏览器到Java 技术,再到Java 服务端技术,还介绍了实现这些技术用到的设计模式;不仅详细总结了这些技术的工作原理,而且也结合了很多实际案例来进行阐述,将复杂、难懂的技术原理通过时序图和架构图的方式展现出来,更加便于读者理解。可以说如果你掌握了本书的知识,那么你就可以成为一个合格的JavaWeb 开发人员。
《深入分析Java Web技术内幕(修订版)》文笔流畅,图表清晰、易懂,值得推荐给Java Web 开发人员作为进阶学习的参考书。
——吴泽明(范禹),天猫产品技术部研究员
这是一本关于 Java 的书,里面讲述的大量基础知识对前端开发工程师非常有帮助。比如中文编码章节,作者以一个实践者的身份详细阐述了编码问题的方方面面。总之,这是一本很用心的书,是实践者的思考和总结。目前在国内很少看到这类书籍,强烈推荐从事 Web 开发工作的人员阅读并实践之。
——王保平(玉伯),开源前端类库KISSY、SeaJS 作者
作者在淘宝做了很多Java Web 方面的改造项目,在Java Web 的相关技术上有深入的掌握,并积累了丰富的经验。在这本书中作者不仅向读者展示了这类大改造项目所需的知识,还展示了Java Web 更为全景的技术知识体系。本书值得Java Web 开发人员阅读。
——林昊(毕玄),淘宝资深技术专家
从第1 次拜读相关内容开始,就可以感觉到作者并不是在简简单单地讲述一门技术或者一个概念, 他的分析和讲解十分深入, 并且可以很好地聚焦读者的思路, 尤其是在 Java Web 、Servlet 规范及字符串处理方面, 都有很优秀的内容。在众多向 developerWorks 投稿的国内作者中,无论是从文章的质量看,还是从内容的选题方向看,作者的文章都可称为上乘之作。同时,他的多篇文章还得到了广大网站读者的好评,其访问量、评分及评论的数量均名列前茅。
——刘达,developerWorks 中国Java 专区编辑 、技术工程师
推 荐 序
经过10多年的发展,Java Web从开发框架到社区都已经很成熟,在这些成熟的框架、工具的帮助下,开发人员的效率得到了很大的提高,但也造成了在原理性、整体性上的相对欠缺,很多人往往知其然、不知其所以然,特别是在解决一些系统问题的时候,不能很好地举一反三。
举个例子,我看到一些开发人员在使用Web框架后,基于约定的方法进行业务的代码实现,但不清楚自己写的代码是如何被调用执行的,如果他们很清楚Servlet规范,并看过容器的大致实现过程,对解决问题是很有帮助的。
许令波是我认识的一位很关注原理细节的工程师,同时很乐于分享,会把工作中使用到的技术进行分析并写成文章,分享给大家。他写的这本书中涉及的技术正是他自己在实际工作中遇到的问题的学习过程和解决过程的总结,是总结技术所涉及的知识,更是总结如何分析和解决问题的思路,以及这些技术背后的原理,让你知其所以然。
本书中的内容涉及从HTTP、Servlet、模板渲染、数据层到容器、JVM等Java Web开发的各个方面,这些问题是许令波在日常工作中经常遇到的,我想也是所有Java Web开发人员都会遇到的。本书最大的特点就是让Java Web开发人员对整个开发过程所涉及的技术能有一个完整的脉络图,从前端浏览器到Java技术,再到Java 服务端技术,还介绍了实现这些技术用到的设计模式。不仅详细总结了这些技术的工作原理,而且也结合了很多实际案例来进行阐述,将复杂难懂的技术原理通过时序图和架构图的方式展现出来,更加便于读者理解。可以说如果你掌握了本书的知识,那么就可以成为一个合格的Java Web开发人员。
本书文笔流畅,图表清晰易懂,值得推荐给Java Web开发人员作为进阶学习的参考书。
——吴泽明(范禹),天猫产品技术部研究员
再版序言
自《深入分析Java Web技术内幕》一书出版以来,我收到了不少读者的反馈,也很
感谢他们指出了书中的一些错误和不足。时隔两年,在电子工业出版社博文视点编辑的帮
助下,《深入分析Java Web 技术内幕》有了修订再版的机会。
这两年来,一些技术也在发生着变化:无线技术越来越成熟,我们的系统开始更多地
支持无线,并衍生出系统要进行多终端化改造等问题;同时我们也遇到了一些新的技术问
题如大流量、网络瓶颈及机房的电力短缺等,这给系统的部署和系统架构带来新的挑战。
所以我借这次再版的机会,将这方面的技术更新和实践尝试一并分享给读者。除了修正前
版的一些错漏之处,本次修订还主要做了以下更新。
第1 章增加了CDN 动态加速的内容,介绍了我们当前最新的想法和尝试。
第3 章增加一种繁简转换的实现方式的内容,介绍了我们在遇到多终端的情况下面临
的多语言的问题,将我们的思路和实践分享给大家。
第10 章增加了多终端Session 统一的内容,也介绍了在多终端的情况下如何解决
Session 统一的问题。
新增了第18 章,重点介绍了我们在近两年遇到大流量的情况下,如何跨越性能、网
络和一个地区的电力瓶颈等问题,并提供了一个比较完整的解决方案。
感谢刘皎和张国霞两位编辑,感谢阿里巴巴的几位大牛范禹、黄眉等对修订版提供的
一些有益建议,也感谢我们技术发展部恬玉同学的大力帮助。
许令波
2014.7
第1版序言
我第1次接触电脑应该是在10年前,记得当时连怎么开电脑都不会,当时感觉电脑真是一个让人着迷的东西,但是那时别说拥有一台电脑,就算是能玩上电脑也算是一件奢侈的事情了。人总是有好奇心的,而我也因为追随着这份好奇和电脑一起走过了将近10年的光阴,也是这份好奇让我接触了电脑,认识了电脑,到现在了解了电脑。但是到目前为止我仍然有很多好奇的东西,所以我将一直求解下去。
回想我开始学习编程的时候,在大学期间开始构建自己的第1个网页,然后是第1个网站,其中的复杂程度真是难以想象,要构建一个网页,需要学习当时的“网页三剑客”,页面布局需要学习Dreamweaver,图片处理需要学习Fireworks,动画制作需要学习Flash。有时候为了一个导航栏甚至通宵达旦。还有要自己搭建一个本地服务器,要学习IIS、Apache等。当时的我竟然能够一个人完成这一系列的事情,现在想想还真是有点儿佩服自己。
现在回想一下当时自己的学习过程,真是走了很多弯路,浪费了很多时间。当时的学习就像是在一个陌生的城市找路一样,不知道如何才能到达目的地,只能边走边问别人,这个人告诉你一点,那个人告诉你一点,一点一点往前走。但是虽然在往前走,但走的路并不是最近的,甚至有人指的方向是错的。当时缺少一个总揽全局的地图,所以不能画出一条最优的路。虽然走了很多弯路,但是这种不断自学的过程还是大大地提升了我的学习能力,这种好的自学能力也在我以后的学习工作中起到了关键作用。
IT行业的知识变化很快,需要不断地学习新东西,所以学习知识的能力比掌握知识本身更重要。这也是目前大公司招聘标准中很重要的一条。记得当时我的老大在招聘我进入淘宝时,面试时就问我如何学习一门新技术。你在学习的过程中会碰到很多难题,并会克服这些难题,很多这样的过程积累起来就是你无形的宝贵财富。因为你遇到的问题肯定也是其他人遇到的问题,从发现问题、分析问题再到解决问题的过程远比这个问题本身更有价值。
爱因斯坦说过:“发现问题比解决问题更重要。”对IT人员来说,发现Bug和重现Bug比解决这个Bug更有难度。这就好比一个外国人问周总理中国有多少厕所,总理回答说只有两个厕所:男厕所和女厕所。但是,什么人在什么时间、什么地点需要上厕所,考虑这样的情形恐怕需要多少厕所就很难计算了。同样,在电脑中也只有0和1两个选择,电脑中的程序也同样如此,每写一行代码就能增加甚至一个数量级的出错概率。但是我们还是要学习如何避免出现Bug,这就要求我们能有总理看问题的思维,将复杂的问题简单化,发现问题背后的本质,找到解决问题的背后的一些通用逻辑,按照这种思路来解决问题可能会让你事半功倍。
如何让学习知识的过程事半功倍,尤其是我们程序员如何做到,从我这么多年的学习过程来说,有一些经验可以分享给大家,这也是我写这本书的初衷,我真正想分享的不是我掌握的知识,更多的是我学习这个知识的过程,以及我对这些知识的一些总结和提炼。
虽然要掌握整个Web开发中涉及的所有知识是一件非常困难的事情,尤其是要掌握这些知识的实现原理,不仅知其然还要知其所以然。所以掌握学习它们的方法至关重要。如何快速高效地阅读它们的源码,有很多同学看到我在developerWorks上发表的文章时来信问我如何阅读各种框架的源码,很多同学都说不知道从哪里入手。其实,当你掌握了一些技巧,加上你的一点耐心,这并不是很难。
本书虽然介绍了很多开源框架,但是始终都在告诉你如何才能更深入和简单地掌握这个框架,告诉你学习的方法,而并不是告诉你这个框架有哪些类、怎么用这些零碎的知识。打个比喻,本书并不是告诉你1+1=2,1+2=3,2+2=4这个结果,然后你可以根据这个方式得出1+1+2=4,你要计算其他数必须根据它给你的公式才能计算,而是告诉你加减乘除的算法规则,然后你就可以根据这个规则自己做运算了。
另外本书为什么要选择介绍Web开发中这些技术的实现原理,因为只有你掌握它们的实现原理,才能够快速地解决一些意想不到的问题。例如,当你理解了 ClassLoader的工作机制后,遇到ClassNotFoundException时,你就能快速地判断,到底为什么会报这个错误,可能是哪个地方出错导致的。
另外还有一个很重要的原因是,如果你很想进入淘宝、腾讯、百度这样的大型互联网企业工作,不掌握本书讲到的这些技术的实现原理,是很难通过技术面试的。因为面试官不仅希望你会用这些技术,还要求你说出个所以然来。所以掌握这些技术的实现原理可以为你的职业发展提供更好的机会。
本书的组织结构
本书从结构上主要分为3部分:第1部分为基础知识,主要介绍Java Web开发中涉及的一些基本知识,例如一次HTTP请求是什么样的,HTTP协议本身是如何工作的;第2部分将深入介绍Java技术,帮助读者了解Java是如何工作的,在会用的基础上进一步理解Java;第3部分是Java服务端技术,主要介绍Web服务器的处理流程,包括Servlet容器的工作原理和Web框架是如何运转的,也就是从Web服务器接收到请求到返回请求这个过程中涉及的知识,最后介绍了针对大流量情况下的系统的一些优化技巧。
目标读者
如果你是学校刚毕业的学生或者刚刚准备学习Web开发并且不知道如何入手的人,那么这本书比较适合你;如果你已经工作1~2年,已经熟悉了Java Web开发的基本流程并且想进一步提高自己,那么这本书更适合你。
如果你已经知道了如何去学习Java Web开发技术,正准备入门去实际开发,也就是说你是一个开发新手,那么这本书不太适合你。但是当你知道了如何去开发一个Web应用并想知道它们是如何工作时,欢迎你再回来看本书,它能帮助你进一步提高。
总的来说,本书适合以下读者人群。
对Web技术感觉迷茫,不知道如何开始学习,对整个B/S工作机制不了解的同学。
Java技术爱好者,以及想深入学习Java技术内部实现细节的人。
有一定开发基础,但是不了解Web中一些容器和框架的内部工作原理的人。
对性能优化和分布式数据管理有兴趣的大型互联网工程师,这里介绍了淘宝的一些实践经验。
开源代码爱好者,喜欢研究开发代码的Coder可以从本书中找到一些分析源码的方法。
本书不会教你如何开发Web应用程序,也不会介绍Struts、Spring、Ibatis等框架如何使用。这些框架的使用参考手册在图书市场上有很多,本书没有再重复介绍。但是如果你已经掌握了如何使用并且不满足只会使用,想知道它们是如何工作的,想打开这些黑盒子,想以后告诉人家这些黑盒子里到底有些什么东西,对每种技术有强烈的好奇心,如果你是这样的人,本书值得你拥有。
本书特点
本书按照通常的学习习惯设计,为你展示了从浏览器发出请求到浏览器最终显示页面的整个过程,让你对Web开发的整个过程有个总体的理解。
本书虽然讲解的都是比较深入的技术,但是有关实践的示例和比较恰当的比喻将帮你更好地理解。
本书将结合淘宝网中真实使用的示例应用程序来讲解技术,让读者有更好的直观认识。
读者讨论
在本书出版后的任何时间,若你对本书有任何问题,你都可以通过xulingbo0201@163.com发送邮件给我,或者到http://xulingbo.net上向我提交你的建议和想法,我会对所有问题给予回复。
致谢
感谢我的父母,在我高考失败后仍然给我机会让我选择做自己想做的事,支持我选择了自己喜欢的电脑行业,在家庭并不富裕的情况下给我配置了第1台电脑,让我有机会继续追求自己的梦想,是你们的支持和鼓励让我在做自己一直喜欢做的事。
感谢我的莹,从大学你就一直陪伴在我身边,有你在我身边是我一直不断努力的最大动力,在本书的写作过程中,你完成初稿的审阅工作,同时也给了我很多鼓励和建议。
感谢电子工业出版社的策划编辑刘皎和张国霞编辑,你们严谨认真的工作态度让我非常敬佩。
感谢吴泽明(范禹)老大为本书写的序,不仅带我进入淘宝,而且也一直帮助我持续进步,感谢王保平、林昊和刘达在繁忙的工作中为我写推荐语。
感谢在本书写作过程中提出宝贵意见的同事们,他们的花名是:小凡、小邪、丹臣、哲别、景升、文通、向飞、凌弃、路奇、济城、大仁、常彬、旭天、韩章、小赌、雁声、索尼、凤豪、柳擎、华黎、空望、嗷嗷、渐飞、普智、胜衣、叔度、文景、撒迦、狄龙、祝幽、单通、承泽等。
感谢developerWorks上所有向我提出问题和建议的网友们。
许令波
2014.3
在哪里下载书中的代码?
堪称本类图书之翘楚