每位老师的教学风格不同,也没有谁的好谁的不好,找到适合自己的很重要。我比较建议听一些课后可以自己学习。但是别听专门为了考试安排的课程,这是一张我认为比较好的学习流程。
入门之后,可以考虑以下学习路径和内容:
学习的基本路径,建立好开发环境非常重要。接下来你需要了解这三个术语,叫SDK、API跟Lib,分别表示软件开发套件,应用编程接口和库。总体来说,这些东西通常体现为我们所经常说的“框架”。
JSP/Servlet的相关内容。虽然现在各种成熟的MVC框架已经让Java Web开发基本很少使用JSP和Servlet的原生功能了,基本都做了一层封装。但是这部分基础知识建议初学者还是要认真学习。
数据库相关的内容。掌握了Servlet/JSP技术,我们已经可以创建动态的Web应用了。除了动态的Web界面,一个有价值的Web应用必然需要进行数据存储,开发上我们一般称之为数据持久化(Data Persistence)。
Spring相关的内容。Spring最重要的两个核心功能是依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect Oriented Programming)。其中DI用于管理Java对象之间的依赖关系,AOP用于解耦业务代码和公共服务代码(如日志,安全,事务等)。DI和AOP能够让代码更加简单,具有良好的松耦合特性和可测试性,极大地简化开发。理解这两者是使用Spring框架的基础。
Spring MVC相关内容。Spring作为Java系的全栈(full-stack)开发框架,当然也对Web开发有着非常好的支持。Spring的Web MVC框架能够使开发者非常容易的开发Web应用,同时能够无缝享受到Spring本身的诸多好处——IoC容器、AOP编程等等。
MyBatis相关内容。MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或标注,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
JPA。ORM框架的出现使得我们能够以面向对象的方式来操作关系数据库,但是长久以来实现应用系统中的数据访问层依然是一件非常繁琐的事情,简单的查询也往往涉及大量重复代码。Spring Data JPA在则基于JPA进一步简化了数据访问层的实现,它提供了一种类似于声明式编程的方式,开发者只需要编写数据访问接口(称为Repository),Spring Data JPA就能基于接口中的方法命名自动地生成实现。
JPA(Java Persistence API,Java持久化API),定义了对象关系映射(Object Relation Mapping,ORM)以及实体对象持久化的标准接口。 JPA是一套接口规范,JPA的实现主要包括 JBoss 的 Hibernate EntityManager、Oracle 捐献给 Eclipse 社区的 EclipseLink和Apache 的 OpenJPA 等。
Java虽然是一门程序语言,但是要想学好它,并非一日之寒。很多人开始学习Java时候会被突如其来的概念定义搞的晕头转向。类、对象、接口、构造函数、方法、继承、多态、各种修饰符等概念扑面而来的时候,脑子里顿时变成了一片浆糊,并直接导致了畏难心理,特别是对于自学的人,这种情况最常见。
所以这个时候的心态就是最重要的了,那么初学者应该保持一种什么的心态,才能更好地走上Java之路呢?
据大神指出,拥有一副不求甚解的心态显得尤为重要。
这一点要求跟我们传统的教育理念大相径庭,多年的学校教育给我们传输了一个毋庸置疑的学习理念:即要对学习的东西搞懂搞通,要知其然还要知其所以然,否则就不是学懂了,否则就是白学。因此刚开始学习Java时,对于很多概念、知识点,很多人就一定要搞清楚它的来龙去脉,要知其然还要知其所以然,比如面对一个“类”的概念,很多人就要翻遍手头所有书,查遍整个网络,最后貌似搞清楚了什么叫“类”,结果今天看到一个例子中“苹果”可以定义为一个类,明天看到一个例子“苹果”又可以作为一个对象,然后思维又开始乱了。
JAVA 的用途:80%以上的高端企业级应用都使用JAVA平台(电信、银行等)。JAVA是成熟的产品,已经有10年的历史。如果你想在Java行业有所建树,想要系统的进行java的学习,不是想学习的就不要加了。
因此,在这里提出,开始学习Java的时候一定要不求甚解,这是什么意思?意思就是学习一门新学科、新知识的时候,我们要考虑的是如何运用所学习的知识点,而不是去搞清楚这些知识点为什么要这么用。“学会如何运用知识点”和“知识点为什么要这么用”粗看起来好像意思一样,其实却天差地别。
比如一个人叫张三,对于“学会如何运用知识点”,那我知道他叫张三就行了。而对于“知识点为什么要这么用”,那就变成了“他为什么叫张三?” ,然后你非要刨根究底依照惯例,他爸姓张,他爷爷姓张……”,那就没完没了,关键的一点就是,你这样做有什么意义呢?
与之类似的一个例子,开始学习Java必然首先接触“类”,我只需要知道,“类”就是这样定义的,这就是“类”,“类”就是这样用的,就可以了,我们完全没有必要纠结于为什么这叫做“类”,它为什么不叫“物”?“类”为什么要这样定义?这样定义有什么好处?等诸如此类的问题。如果你面对这样的困惑,那么请你先回复这个问题:在你开始学习英语的时候,苹果的英文单词是“apple”,那个时候你为什么没有产生“苹果的单词为什么是“apple” 而不是 “cat”,你可能会回答,因为从开始创造中文英语单词互译的第一个人就是这么定义。这个回复就很好,因为最初设计面向对象程序设计语言的人也是这样定义“类”的,并且定义好“类”这个概念后、这个规则后,就是要你去使用的,而不是让你去质疑并提出十万个为什么的。
在这里还是看我们每个人的心是不是够坚定,如果三天打鱼两天晒网基本无果,什么事情都需要我们自己认准的目标一头扎进去
对于不求甚解,换个角度来讲就是,请刚开始学习Java的时候,让自己的思维停留在小孩子的水平,不要问为什么,而是书上这么说,我们就怎么做。这时候我们无需精明。
如果能做到这一点,学习Java就会变得很轻松,你会很快的入门。而等到你开始入门后,回过头你会发现,原先的问题都不在是问题。有一种豁然开朗的感觉。