Java Web是众多技术汇总形成的代名词,展开来说,包括了非常多相关技术。
Java发展了20年, 现在已经不仅仅是一个单纯的语言了, 而是一套完整的生态系统, 其中的术语像 HTML, XML, CSS, Javascript , AJAX, JQuery,Prototype, HTTP, Tomcat, JBoss, Nginx , Memecached , Redis, MVC ,Servlet, JSP, Struts, Hibernate, myBatis , Spring, JFinal, MySql, JDBC, EJB, JMS, Swing , AWT, Reflection, OSGi... 铺面而来, 搞的你头晕脑胀, 无所适从,很容易就Lost了。
这里放一张网上的学习路线图,虽然比较过时,但是还是有一定参考价值的。
其实在以前,JavaWeb开发需要兼顾前端和后端,Java程序员也要会前端技术,比如上述的html css和js等,并且表现层仍然使用着jsp,在后端进行渲染,而现在前端技术迅速发展,前端已经可以自己完成模板的渲染了,于是前后端逐渐分离,后端程序员只需要提供json数据接口即可,压根不需要负责模板的渲染。
于是乎,上述的内容很多都没那么重要了,但是一个完整的Java web项目或多或少都会用到这些技术,所以有一些根基的东西过了这么多年了都还没变,比如servlet,比如jdbc等等。
作为Java后端程序员,更加关注的是业务逻辑的开发以及服务端技术的学习,所以这里我们参考许令波老师的《深入分析JavaWeb技术内幕》,JavaWeb的技术体系大概可以分为以下几个部分。
即第一部分是web开发的基础知识,第二部分是Java的核心技术,第三部分是Java服务端的技术。
这里按照我自己的理解挑选本书比较核心的章节作为知识脉络。
0 JavaSE基础
既然使用Java语言做web开发,首先必须掌握的就是Java的核心技术,可以参考我的专栏文章:深入Java核心技术
1 web请求流程
这部分包括了http的基本知识,以及计算机网络相关基础知识,将在网络专栏详细介绍。
2 JavaIO技术
这部分包括了JavaIO的基本知识以及NIO的相关知识,这部分知识可以参考我的专栏:Java网络编程与NIO,其中详细了介绍NIO的相关知识。
3 Java Web中的中文编码问题
这部分虽然内容不多但是深究起来还是一块比较重要的内容,后续会在补充。
4 JVM基础,class字节码,类加载机制,javac编译原理等
这部分主要是JVM相关的技术内容,会在我的专栏: 深入理解JVM虚拟机 中陆续发表。
5 servlet,jsp , jdbc,session,cookie,Tomcat,jetty等,都是java web服务端的核心技术,将在本系列文章中讲述。当然在此之前最好看一下之前的内容,特别是Java网络编程和NIO的内容,是奠定后面内容学习的基础。
6 Spring,SpringMVC以及mybatis,velocity等内容,是在之前基础上设计出来的框架和模板技术,也是现在比较流行的技术。Spring相关的内容会在专栏 Spring源码解析 中详细介绍。而mybatis和velocity的内容会在本系列文章中放出。
7 另外,在Javaweb开发过程中常用到的Maven,git,甚至是ide等工具,也会有所介绍。
但是在此之前,我想说,学习这些技术基础,不妨先了解一下这些技术的历史,以及他们为什么产生,为什么消亡,了解一下过去的开发流程和现在的开发流程有何却别,产生这些变化的原因是什么,为什么会出现这些框架,为什么程序员会被区分为前端和后端。带着这些问题,在本专栏的前几章,你会找到答案。