推荐一个国外大佬的Java学习路线:
有条件的可以看看完整视频:油管链接
Then,Java相关学习资源,请收好~
CodeGym :一个在线Java编程课程,80%的内容是练习,适合一窍不通的入门者。
Wibit Online Java Courses :一个非常有趣的编程学习网站,各种生动的动画形象能让人忘记学习的枯燥。在线视频学习,非常适合零基础。
stanford CS106A: Programming Methodology :斯坦福经典课程系列,完全没有编程经验,想学Java语言的,可以看看这个课程。
Bloombenc :一个在线交互式学习平台,老师可以根据你的学习能力和节奏修改他们的教学方法,还可以在平台上编码。
CodeAcademy :比较实用的Java在线课程,注重的是在找工作时非常有用的技术能力。
PLURALSIGHT:整合了很多Java的视频课程,部分免费,部分付费,可以根据自己的需要挑选。
Lynda Online Java Training Videos:Java进阶课程,包括如何使用JDBC来集成MySQL数据库,Reflection API,管理文件和目录等。
九章算法基础班(Java):中文在线互动课,是Java和算法的结合课程,由硅谷资深Java工程师讲授,非常适合从零开始学习Java、算法与数据结构,或有转专业找工作需求的小伙伴们。
BeginnersBook:Java初学者免费教程,有稍微一些编程基础之后,可以跟着文档里的代码练习。
docs.oracle.com/javase/tutorial:官方Java指南,对了解几乎所有的java技术特性都非常有帮助。
JournalDev:Java相关教程及问答
JavaWorld:最早的一个Java站点,每周更新Java技术文章。
developer.com/java :由http://Gamelan.com 维护的Java技术文章网站。
IBM Developerworks技术网站:IBM的Develperworks技术网站,这是其中的Java技术主页
Java语言本身:
真正的入门书籍,轻松搞笑,可以通过玩游戏、拼图、解谜题以及一些意想不到的方式与Java交互,再也不怕“从入门到放弃”。
如果你没有学过其他语言亦或是转行到计算机行业,可以先看看这本书。这本书图文并茂条理清晰,非常容易理解,练习也足够,可以让你一口气读很久而不会觉得有什么地方遗漏或者根本没记住。而且这本书可以让你从语言基础开始一直学习到包括线程、网络与分布式程序等项目,最重要的是,你将学会如何像个面向对象开发者一样去思考。
《疯狂Java讲义》
可以算是国人原创必读经典了,同样非常适合初学者。讲解内容细致全面,系统通俗,目录划分和查找非常方便,就算完全没有基础也可以学的没有什么压力。同时这本书还考虑了Java的版本升级,非常贴心。
《Java编程思想》
这是一本所有的Java学习者都无法避开的经典之作,被誉为全球最好的Java书籍。不同水平的人读这本书也会有不同的感觉,初学Java的时候也许会觉得学的非常慢,当你编程了一段时间之后再看这本书,你就会发现,你编程中遇到的问题在这本书中有很多的体现,这时候大概就是你进阶的时候了,你读这本书也会变得比从前轻松和愉快了。编程几年之后再看这本又会是怎样的感觉呢?不妨拭目以待。
《Java核心技术》
作为与《Java编程思想》齐名的大全式图书,这本书的内容更加细致,偏重与讲解Java计数,举例说明了大量API,内容翔实、客观准确,不拖泥带水,所以相比于《Java编程思想》,更注重于实用性。而且这本书全面而且易懂,放在案旁用到的时候查一查、看一看,也是Java初学者和Java程序员的必备参考书。
谷歌首席架构师的大作,也是一本经典。介绍了在Java编程中78条极具实用价值的经验规则,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码,并通过例子代码加以进一步说明,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。
初学者读这本书可能没有太深的体会,当你有那么一两个项目的经验,再读这本书,就会发现书中提到的某个规则就是你在很多次工作经验后总结出来的最准确的描述方式
不过,这本书的中文版翻译不太好,有能力的话可以看原版。
Java性能方面可能最好的一本书。深入介绍了JIT编译器、垃圾收集算法、线程同步等复杂问题,讲解了很多应用性能分析以及优化的方法,详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,适合所有想了解性能优化的Java程序员。
以上是一些基于Java语言本身的书籍推荐,然而,作为一名工程师,从编写可读的代码,到重构现有的代码,再到设计模式,是编码的必备法则。
重构与设计模式:
HeadFirst 系列的另一本书《HeadFirst 设计模式》,同样是一本非常适合入门设计模式的书籍,没有之一。这本书介绍 了23 个设计模式,同样采用场景对话、打比方的方式来讲解,巧妙地让设计模式的理论在实际应用中体现出来,淡化了抽象性。
《设计模式》
设计模式领域的开山鼻祖,必读,并且值得多读几遍。虽然其中的例子是C++写的,但也很适合Java学习者读。
《设计模式解析》
如果你觉得《设计模式》太晦涩难懂,《Head First Design Pattern》又太不技术书籍了,那么这本《设计模式解析》就非常适合你。本书每章结束时都有小结和启发性复习题,可以帮助你更好地了解自学得如何了。而且这本书只介绍了几种比较常用简单的设计模式,因而在学习过程中会很有成就感。
好的代码是重构出来的,而不是一开始就写出来的,除非你的代码不用于任何业务。本书从一个重构实例开始,用代码和实例配合讲解了各种耳熟能详的重构方法,非常到位,总之,是一本程序员必读书目,书中的示例代码都是java写的。
《代码整洁之道》
篇幅不大,但却能让人受益匪浅。书中给了很多方法与规范,遵循它们可以写出整洁的代码。如何为函数,变量,类型准确的命名,如何减少注释做到代码即文档,如何通过良好的编程规范减少错误的代码等等,这些都需要在工作学习中总结经验形成习惯。
最后,献上一张Java技能图谱:
九章算法,硅谷一线工程师在线直播授课,已经帮助30000+人成功拿到心仪offer。
希望在Java工程师方向上继续精进的同学可以看这里~
Java 高级工程师 P6+:Java工程师进阶课程,由阿里P8高级技术专家与Facebook E5架构师共同讲授,涵盖技术栈的通透讲授、源码的分析导读、贴近实际的工程实践以及大厂思维的架构升级,晋级P6/P7 Java 必备技术栈。
从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用。
因为是在工作中培训,就必然有两个约束:实用、时间紧,因此就不能像大学那样,把所有的知识点都面面俱到的讲到。而只能挑基础的,实用的,难理解的讲。至于其他边边角角的知识,就一笔带过。一则没有时间,二则不常用,再则既使讲了,学生印象也不深刻。总之一句话:“好钢用在刀刃上”。
下面,就根据我的实践,具体谈下学习过程:
1.基础知识
我学习java的时候,先是通读了《Java编程思想》,然后是《Java核心技术》。当时这两本书还不像现在这么厚,而刚才我把案头的《Java核心技术》第9版翻了翻,上下两册已经1700多页了,可想而知,如果要把它通读一遍,且不说把所有的代码都调通,就是当小说读,估计也需要些时间。
但我现在教学依然首推《Java核心技术》,主要是体系完整,实例多,可操作性强。但对初学者,我一般是只讲前6章,也就是下面的内容:
就《Java核心技术》第9版来说,也就是到250页为止,加把劲,1个月拿下完全没问题。
因为你是自学,所以建议你一定要把其中的代码都调通,课后的作业尽量去做。除此之外,还有两点特别重要:
#.学习笔记
因为你是自学,不像在企业中学了就能够实践,印象自然特别深刻。而自学因为没有实践的及时反馈,所以记笔记就显得特别重要。因为记笔记就像写作一样,是整理思路的绝佳方法。同时学习笔记也是你以后开发,面试的绝好资料。
学习编程,人跟人是不一样的,别人觉得难理解的东西,对你却不一定;而你觉得难理解的东西,别人可能又会觉得特简单。而学习笔记就是自己专有的“难点手册”,有点像高考时的“错题本”,以后无论是在面试前,还是在日常工作中,随时都可以翻出来看看,自是获益匪浅。
#.分门别类保存demo
学习笔记是很好的文字资料,但编程界有句话说的特别好,所谓“no code, no text”,意思就是说:千言万语都没有一段代码来的实在。
以我的经验,在你在学习的过程中,就某个知识点,无论当时理解的多透彻,调试的多棒,只要时间一长,等到了实用的时候,肯定会碰到各种各样的问题,一些看似简单的东西,此时死活就是调不通,正所谓人到事中迷。这个时候,如果你手头恰有运行良好的demo,打开参考一下(甚至直接拷贝过来),问题自然迎刃而解。而且因为这些demo都是你亲手调试出来,印象自然特别深刻,一碰到问题,在脑子中自会立刻涌现。
所以说,在学习的过程,一定要善待你调通的demo,千万不要用完了就扔,等后来碰到困难,想要用时却找不到,追愧莫及。正确的做法就是把所有调通的demo,分门别类的保存起来,到时候查起来自是得心应手。
人都说“书到用时方恨少”,其实代码也是这样,所谓“demo用时方恨少”。
2.Spring
目前在Java EE开发中,Spring已经成为和Java核心库一样的基础设施,所以说如果想成为一个合格的Java程序员,Spring肯定绕不开。另一方面,如果掌握了Spring体系,Java基本上就算入门了,就有能力进行一些实用级的开发了。
但Spring本身也是日渐复杂,衍生项目越来越多,但最最核心的概念依旧是IOC和AOP,掌握了这两个概念,再把Spring MVC学会,再学习其他的衍生项目就会平滑很多。
同时,因为Spring本身就应用了许多优雅的设计理念,所以学习Spring的过程,也是加强Java基础知识学习的过程。因此等你掌握了Spring,原来很多你理解不透彻的Java特性,此时就会恍然大悟,包括接口、抽象类等。
我学习Spring,读的第一本书是《Spring实战》,坦率的说,书很一般,但市面上比它好的书,我却没有遇到过。还有一本《Spring源码深度解析》也不错,对Spring的设计理念讲的尤其透彻,虽然整本书读起来有些艰涩,但前几章却生动有趣,也是整本书的精华。所以建议你在学习Spring之前,先把该书的前几章通读一下,然后再回过头来学习《Spring实战》会顺利很多。
以我经验,要学透Spring,终极的方法还是阅读源码(我当时就是这么干的),待把Spring的核心源码通读了,人就真的自由了(所谓无真相不自由),不仅是对Spring,而是对整个Java体系。以后再遇到其他框架,大概一眼就能看出其中的脉络,所谓到了“看山不是山”的境界。但这都是后话,可以作为以后你努力的方向。
和学习Java基础知识一样,学习Spring也一定要记笔记,一定要分门别类保存demo。
老实说,Spring对初学者不算简单,因此最好能有个好老师带一下,不用太长时间,2个课时即可,然后就是在你遇到大的困难时,能及时的点拨下。
以我的经验,要初步掌握Spring,大概需要1到1个半月的时间。
3.其他知识
Spring是Java编程的基础设施,但真要进入到实际项目的开发,还有些东西绕不过,包括 MySql,Mybatis,Redis,Servlet等,但如果你经过Spring的洗礼,这些东西相对就简单多了,以我的经验,1个月的时间足够了。
4.实践
学习Java,光学不练肯定是不行的。但因为是自学,所以就没有实际的产品让你练手,但也没有关系,谁大学还没有做过毕业设计呢?以我的经验,大家最爱的“学生管理系统”依旧是个很好的练手系统。
别看“学生管理系统”逻辑简单,但麻雀虽小五脏俱全,其中数据库设计、Mybatis,Spring、SpringMVC,Servlet、Tomcat一个都不缺,绝对的练手好伴侣。
还有,虽然你的学习重点在Java,因为要做一个完整的demo,前端的配合肯定少不了。因此就免少不了要学一些简单的JS、HTML知识,但因为前端本就是个很大的topic,所以一定要控制好边界,千万不要顾此失彼。就“学生管理系统”来说,在前端上,只要实现一个包含table、textbox、button,能发送REST请求到server,能实现学生的“增删改查”的简单页面即可。
作为一个练手项目,目标就是把Java的主要技能点串起来,所以自不求尽善尽美(也不可能),所以1个月时间足够了。
.最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
在日常的教学中,我常把下面这句话送给学员们,今天也把它送给你:
“道路是曲折的,前途是光明的!”
祝你好运!
--- 上面是原答案 ---
我把上面的内容作了下整理,画了学习路线图,内容也有些升级,供参考。
因为有朋友,通过留言或私信方式问我:Java中有哪些知识已经过时,不需要再学习了?
回答的多了,就感觉这是一个普遍的问题,因此统一整理了下,作为这篇文章的补充,希望对你有用。