目前,Java语言开发的就业前景相当明朗“钱”途一片大好,毕竟互联网企业对Java开发人才需求很旺盛。Java开发人才的薪资要比其他编程人才高出一大截,所以有很多朋友就都想来从事Java开发。那么学习Java需要什么基础?
其实有一定的编程语言基础,当然会让你学习Java变的更为容易,如果你是零基础,学起来可能会有一些困难,但只要有一定的逻辑思维,学习起来也不是很难。因为Java的核心思维就是面向对象的概念,只要你能理解了这部分知识,其他就不是问题了。
今天小编就来和大家分享Java程序员高手之路上的必备基础知识:
面向对象的知识:
Java是一个面向对象的开发语言,因此熟悉面向对象对学习Java很有必要,您要了解:什么是对象,什么是类;什么是封装,什么是多态,什么是继承;什么是抽象类,什么是接口。了解了概念后,您还需要这些概念是如何体现的,如类和对象有什么区别?类是如何封装的?
Java语法的知识:
如果您有C++等面向对象语言的开发经验,您只需简单的翻看一下介绍Java的相关书籍就可以了。如果您是新手,没有关系,您下些工夫,好好研究一本Java初级教程之类的书就可以了。
JSP和HTML的知识:
做Java程序员都少不了和JSP以及HTML打交道。因此,想成为Java程序员就不可避免的要熟悉JSP和HTML,您最好能知道JSP的几个内置对象,如Session,Request,Reponse,以及常用的JSP标签,如include,userBean等。如果您再熟悉一下JS和CSS就更好了,那会使您制作的页面更友好。
学习Java,可以参考小编前些天发过的学习路线,该学习路线对从零基础小白到Java初级开发工程师,Java高级开发工程师,后面的Java大神级开发工程师都有一个明确清晰的指导。
Java基础
Java是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的oop特性:封装、继承、多态。此外还有泛型、反射的特性,很多框架的技术都依赖它,比如Spring核心的Ioc和AOP,都用到了反射,而且Java自身的动态代理也是利用反射实现的。此外还有Java一些标准库也是非常常见,比如集合、I/O、并发,几乎在Web开发中无处不在,也是面试经常会被问到的,所以在自学Java后端之前,不妨先打好这些基础,另外还有Java8的一些新特性,也要重点关注,比如Lambda表达式、集合的Stream流操作、全新的DateAPI等等,关于新特性,我也写了几篇关于这方面的博客,请自行找吧,就不贴出来了。
关于书籍推荐,我是不建议初学者一开始就拿着「Java编程思想」啃的,因为当初我就是那个当天下午决定自学Java,晚上就抱着这本书啃的人,说实话,我当时真的不懂它在说啥,因为我没有一点的面向对象语言编程的基础,而这本书又写得太博大精深了,在当时的我来说,完全是天书,但是我认为它仍然是Java界的圣经,每读一次都有所收获。我在这里推荐你们一开始先看「Java核心技术」,这本书讲得比较通俗易懂,初学者比较能接受。
数据库
关于sql方面:SQL教程、MySQL教程
我是了解了一些基础语法之后,就直接跟着视频的老师做一些表操作实战练习了,比如单表查询、多表查询等。我建议学sql切勿眼高手低,需多加练习,不要只看懂了就行,因为工作中写得一手简练的sql是非常重要的。在这里我说下我在项目一直秉承着sql语句是能避免多表查询就避免多表查询,能够分开多条语句就分开多条语句,因为这里涉及到多表查询性能和数据库扩展的问题。
关于JDBC方面:JDBC教程、JDBC获取连接对象源码分析
你需要弄懂JDBCAPI的用法,其实它只是一组规范接口,所有数据库驱动只要实现了JDBC,那么我们就可以通过标准的API调用相应的驱动,完全不用知道驱动是怎么实现的,这就是面向接口编程的好处。而且对于JDBC我是直接看视频去理解的,跟着视频做了一个基于ApacheDbutils工具做了一个具有事务性的小工具,我特意用思维导图总结了一下:
Web基础
曾经开源中国创始人红薯写了一篇文章「初学JavaWeb开发,请远离各种框架,从Servlet开发」,我觉得他说的太对了,在如今Java开发中,很多开发者只知道怎么使用框架,但根本不懂Web的一些知识点,其实框架很多,但都基本是一个套路,所以在你学习任何框架前,请把Web基础打好,把Web基础打好了,看框架真的是如鱼得水。
关于Http协议,这篇文章就写得很清楚:Http协议
关于Web基础这方面数据推荐,我当时是看的是「Tomcat与JavaWeb开发技术详解」,很详细地讲解了整个JavaWeb开发的技术知识点,但现在看来,我觉得里面讲的有一些技术确实有点老旧了,不过可以了解一下JavaWeb开发的历史也是不错的。所以在Web基础这方面我都是看某客的崔老师讲的「超全面JavaWeb视频教程」,讲得很详细很生动,还有实战项目!
关于JSP,你只要了解它其实就是一个Servlet就行了,关于它的一些标签用法,我认为可以直接忽略,因为现在互联网几乎没哪间公司还用JSP,除了一些老旧的项目。现在都是流行前后端分离,单页应用,后端只做API接口的时代了,所以时间宝贵,把这些时间重点放在Servlet规范上面吧。
关于Tomcat,它是一个Web容器,我们写的后端项目都要部署到Web容器才能运行,它其实是一个遵循Http,通过Socket通信与客户端进行交互的服务端程序:Tomcat结构及处理请求过程
Web主流框架
JavaWeb框架多如牛毛,等你有一定经验了,你也可以写一个Web框架,网上很多说Spring、Struts2、Hibernate是Java三架马车,我只想说,那是很久远的事情了,我严重不推荐Struts2、Hibernate,相信我,一开始只需要上手Spring、SpringMVC、Mybatis就可以了,特别是Spring框架,其实Spring家族的框架都是很不错的。
但是提醒一点就是,千万不要沉迷于各种框架不能自拔,以会多种用法而沾沾自喜,导致知其然而不知其所以然。
Spring其核心思想就是IOC和AOP:
谈谈对SpringIOC的理解
Spring面向切面编程
SpringMVC它的思想是全部请求统一用一个Servlet去做请求转发与控制,这个Servlet叫DispatcherServlet:
SpringMVC初始化过程
SpringMVC处理请求过程
Mybatis它可实现动态拼装sql,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集:
mybatis入门教程
Mybatis深入浅出系列
Web框架进阶
使用了SSM框架后,你会觉得框架也不过这么回事,如果你对Spring有过大概了解,你也会产生想写一个「山寨版」Spring的心思了,一个轻量级Web框架主要具备以下功能:
可读取用户自定义配置文件,并以此来初始化框架;
具备Bean容器,管理项目的类的对象生命周期;
具备依赖注入,降低类之间的耦合性;
具备AOP功能,使项目可进行横向编程,可不改变原有代码的情况增加业务逻辑;
具备MVC框架模式。
其实除了SSM之外,Web框架可谓是百家齐放,其中以Spring全家桶最为耀眼,在这里我极力推荐两个Spring家族框架:SpringBoot和SpringCloud。
SpringBoot弥补了Spring配置上的缺点,再也不用为繁杂的xml费劲精力了,堪称是Java后端开发的颠覆者,推荐书籍「JavaEE开发的颠覆者:SpringBoot实战」
SpringBoot构建web项目
SpringBoot自动化配置源码分析
自定义SpringBootStarter
spring-boot-starter-tutorial