序
已有的统计表明,Java 是目前世界上应用最为广泛的程序设计语言,而Java Web 则是Java语言的重要组成部分,也是基于Web 程序设计最重要的语言工具,这是因为Java 语言本身就是因互联网的出现而产生的。随着网络应用的普及,越来越多的程序设计工作都与网络有关。在此背景下,一个缺少Web 程序设计能力、不了解Java Web 知识及其发展历程的计算机及其相关专业的毕业生是难以找到理想工作的。同时,一个有志于在Web 领域大显身手的程序员,如果不能熟练应用Java Web 语言工具进行程序设计也是难以满足Web 领域的工作需求的。本书的作者既有985 高校的计算机专业教师,也有Java Web 程序设计第一线的网络程序设计人员和系统工程师。作为教师,作者承担着为计算机专业的本科生和研究生主讲面向对象程序设计和分布式对象技术等课程的教学任务,其中Java 语言是课程的主线内容。同时,承担着大量与国内外合作的基于Web 的研发课题,所培养的学生在阿里巴巴、腾讯和百度等公司就业的不占少数。作为一线的网络程序设计人员和系统工程师,作者既肩负着繁重的Java Web程序设计任务,同时又担当着对应聘者的面试工作和对新员工的培训任务。因此,熟知这一领域对相关人才的专业需求和能力要求。在此专业背景下,我们相信本书的出版不但能为读者提供扎实的Java Web 领域的理论教学内容和实践应用范本,同时,也能够为应聘此领域工作的同学们和寻求进入此领域的社会人员提供有价值的面试导引。
本书共11 章,按照循序渐进的原则逐步介绍Java Web 程序设计的基本概念、基本内容和基本过程。由于Web 程序设计离不开数据库的支持,因此本书还专门利用一章的篇幅来详细介绍数据库的设计原则,相信本章的内容对于那些仅对数据库感兴趣的读者也会受益匪浅。书中所有完整的程序都是在MyEclipse 环境下调试通过的。要学好Java Web 程序设计方法,除了需要掌握其基本理论,还必须要加强实践环节。读者可以边学习边上机,刚开始时可以调试本书中的程序,待学习一段时间之后,就可以调试自己编写的程序了,只有这样,才能加快学习进度,提高学习效率。
孟宪福
2017 年6 月于大连理工大学
前言
为什么要从诸多的Java 书籍里选择这本?为什么在当前网络信息量如此大的情况下还要买这本书,而不是自己通过查阅网络资料学习?我已经会开发Java Web 程序了,有没有必要买这本书?
笔者有12 年的Java 经验,目前是某大型公司的架构师,知道软件公司对高级程序员的实际需求;而且笔者在大公司里有过5 年的技术面试经验,面试过的人数上百,所以知道毕业生和初级程序员的普遍情况。笔者更有过5 年多的Java 培训经验,知道如何在短时间内把有毅力、有决心,但暂时缺乏技能经验的人培养成高级程序员的方法。
我在工作和培训中接触过不少刚走出校园的大学生和工作经验少于3 年的初级程序员,发现他们虽然很上进,平时都会上网查找资料学习,但普遍会走弯路,比如学了目前用不到的知识点,或者对重要的知识点了解不深,或者干脆不知道该学哪些以及学习的进阶路线,这就导致他们掌握的技能和公司的需求(主要体现在面试上)不匹配。我也见过不少人项目经验足够,能力也不差,但他们就是通不过高级程序员的面试。
在Java Web 方面,笔者从事了十多年的开发和培训工作,所以对于这方面的技术点,我大致知道哪些是不学就找不到工作,也知道哪些可以推迟到成功进阶后再学,更知道哪些可以不用了解。此外,我还从培训和带领毕业生和初级程序员的实践效果中总结出了一套适用于大多数初级程序员的能少走弯路的进阶路线,以此由浅入深地构建了本书的知识体系。
大多数初级程序员都能升级到高级,只是时间问题,而本书的目的就是让大家缩短升级的时间。
第一,本书列出了在Web 方面初级程序员升级到高级的必备知识点,以多数人升级时遇到的陷阱为警示,确保大家不在众多的知识点里迷失,而最终导致方向性错误。
第二,以公司对高级程序员的实际需求告诉大家必备的知识点应该怎么学。
第三,本书更从语法之外,告诉读者应该怎么从"性能调优"和"框架"的角度往更高的目标发展。
本书还从面试官的角度,在准备简历和面试方面写了一些能帮助读者的攻略,从而让读者能真正地把技能和经验转化成为金钱(升级进入好公司后钱就多了),这套攻略的实践效果是,每次我的培训班结束,总会有一批学生成功跳槽。
话说回来,"时间"还真是个大问题,我知道大家工作后一般都很忙,能给学习挤出的时间并不像上学时那样多,针对这个现状,本书只给出了常用的必需的知识点,能让大家用较短的时间代价完成到高级程序员的升级。
从内容和叙述方式来看,本书的案例和文字都是根据初级程序员的现状而原创的,尤其提到了初级程序员会忽视的技术要点。本书摒弃了大段华而不实的理论描述,这样能让大家不为无用的篇幅买单。而且,本书给出的技术描述和实践建议对于初级程序员来说,不是高深的,而是确保在当前知识储备下能看懂的。对于那些能帮助到高级程序员和架构师但现阶段帮不到初级程序员的高深知识点,本书不讲。
从案例角度来看,本书一个知识点会配置一个案例,并且每个案例都有视频教学,保证大家能通过观看视频调试出来,而且保证能从案例中学到关联的知识点。
在面试过程中,本人一定"错杀"过一些有技能但表述能力不强的候选人,不过也错误地招过一些能力偏差但会面试的候选人。本人也约谈过这些人,从而了解到一些怎样"假装自己是高级程序员"的方式,以此来提升本人的甄别水平。技术上不能弄虚作假,为了帮助技术好但不擅长面试的踏实程序员,在描述各技术点时,我参考了诸多程序员的面试经验,尽可能多地加上了"能证明自己懂"的叙述。
这本书的价值不仅在于提供的若干代码案例和若干视频,更体现在能帮助大家在进阶过程中少走弯路,体现在能切实有效地帮助大家面试,在讲述知识点时,总是尽可能地告诉大家如何有效展示自己了解这部分知识点的方法,而且在本书的最后一章--第11 章中,以技术面试官的直接经验,不仅讲述了在简历中如何展示自己能力的方法,而且还通过分析面试流程,给出了如何准备面试的攻略,以保证大家能在掌握技能的前提下有效地证明自己行,从而让你的学习得到应得的回报。
本书没有展示Java Web 方面的所有知识点,而是选择性地讲了"足够能证明自己能力"的知识点,从而避免大家把时间用在"现阶段用不到的知识点"的学习上。而且,这些知识点的选择以及讲述方式是根据多年的培训经验精炼出来的,从而保证大家花较少的时间和精力就能掌握Java Web 方面高级程序员所必备的知识点。所以对于在校大学生、毕业生和工作经验少于3 年的初级程序员而言,本书是个不错的选择。
笔者的邮箱是hsm_computer@163.com,如果大家在下载视频和案例代码时有问题,请及时联系我,另外,如果大家在学习过程中有任何的问题,也请及时告诉我。
最后特别说明,对于高级程序员以及架构师而言,虽然从这本书中你们能看到当年自己升级的路线和知识体系,但其中的知识点你们已经掌握了,建议不要去买!但如果你们愿意分享自己的升级经验,帮助我们进一步完善这本书的文字代码和视频,那么我们将感激不尽。